C_语言30道例题东大期末考试+答案 .doc

上传人:飞****2 文档编号:66781085 上传时间:2022-12-21 格式:DOC 页数:17 大小:69KB
返回 下载 相关 举报
C_语言30道例题东大期末考试+答案 .doc_第1页
第1页 / 共17页
C_语言30道例题东大期末考试+答案 .doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《C_语言30道例题东大期末考试+答案 .doc》由会员分享,可在线阅读,更多相关《C_语言30道例题东大期末考试+答案 .doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、29题号题目第几题1编写一个售货机(POS)计算程序,用于水果店售货员算账。苹果每千克3.2元,梨每千克1.96元,香蕉每千克3元,樱桃每千克24元。某顾客购买1.5斤苹果,2斤梨,3斤香蕉,1.5斤樱桃,付给售货员100元。要求规范输出这位顾客购买各类水果的名称,对应的重量和应付价钱,显示顾客所付款项,输出应找回的款项。#include#includevoid main() float n4,apple=3.2,pear=1.96,banana=3,Cherry=24,price,charge,money; int i; printf(请输入水果重量苹果 梨 香蕉 樱桃 (不买的水果请输入0

2、):n); for(i=0;i4;i+) scanf(%f,&ni); printf(应付钱 %.2f 元n,price=apple*n0+pear*n1+banana*n2+Cherry*n3); printf(请输入付款数:);scanf(%f,&money); printf(应找钱 %.2f 元n,money-price);12编写一个程序,对输入的一组整数,分别统计其中正整数和负整数的个数(0作为结束标志)。#includemain()int i,sum1=0,sum2=0;printf(请输入一组整数,0结尾);scanf(%d,&i);while(i!=0)if(i0)sum1=s

3、um1+1;else sum2=sum2+1;scanf(%d,&i);printf(%d,%d,sum1,sum2);printf(n);13统计100-500之间各个数字之和为9的三位数,输出这些三位数。例如351的各个数字之和为9。#includemain()int a,b,c,t;for(t=100;t500;t+)a=t%10;b=t/100;c=(t/10)%10;if(a+b+c=9)printf(%d,t);return 0;14编程求1-1000之间的所有完数(完数定义:一个数恰好等于它的除自身外的所有因子之和)。#includemain() int m,i,s; for(m

4、=2;m1000;m+) s=1; for(i=2;i=m/2;i+) if(m%i=0) s=s+i; if(s=m) printf(%d is 完数,m); printf(n); 15已知银行整存整取存款不同期限的利率分别为:3.30%期限半年;3.50%期限一年;4.40%期限二年;5.00%期限三年;5.50%期限五年;到期利息税为5%。要求输入存取的本金和期限,求到期能从银行得到的利息、本金及总和。16输入三角形的三边长,判断这个三角形是否是直角三角形。17输入一串字符(以回车键结束),统计其中数字、大写字母、小写字母以及其他字符的个数。18编写程序:找出不超过1000的十位数字为1

5、,个位数字为3或7的所有数。例如:13、17、113、317等。#includemain()int a,b,c,t;for(t=10;t1000;t+)a=t%10;b=(t/10)%10;if(a=3|a=7)&b=1)printf(%d,t);printf(n); return 0;19某企业利润提成的规则如下:1)利润低于或等于10万元的,可提成奖金%10;2)利润高于10万元,低于20万元时,低于10万元的部分按%10提成,另外部分可以提成7.5%;3)利润高于20万低于40万元的,其中20万元按前面的方法发放,另外的部分按5%提成;4)利润高于40万元的,40 万元按前面的方法提成,

6、高于部分按3%提成。从键盘输入利润,输出应发的提成。110利用公式e=1/1!+1/2!+1/3!+1/n!计算e的值并输出(要求:误差小于10-5)。#includemain()float e=1.0;int t=1,i=1;while(1.0/t0.00001) i+;e=e+1.0/t; t=i*t;printf(%fn,e);111从键盘输入一个字符串str,统计其中大写英文字母A,B,C,D出现的次数。要求输出原始字符串,以及统计的结果。#includemain()char str100;int n=0,i;gets(str);for(i=0;stri!=0;i+)if(stri=A

7、|stri=B|stri=C|stri=D)n+; puts(str);printf(%d,n);212将字符串a中的每个字符用加3的方法加密并存入数组b中,再对b中的字符串解密存入数组c。要求:初始化字符串a,依次输出字符串a、b、c。#includemain()char a=hdckskshalsjak,b100,c100;int i,j=0,u=0;for(i=0;ai!=0;i+) bj=ai+3;j+;bj=0;for(j=0;bj!=0;j+)cu=bj-3;u+;cu=0;puts(a);puts(b);puts(c);213输入两个字符串str1和str2,计算并输出str2在

8、str1中出现的位置(提示:从位置0开始计算,例如输入str1为”howareyou”,str2为”are”,则位置结果为3),要求初始化字符串str1和str2,输出原始字符串str1和str2,以及位置结果值。#includevoid main()char str1=weallhopeforsuccess,str2=for,i,j=0,k,p;for(i=0;str1i!=0;i+)if(str2j=str1i)j+;k=i;p=j-1;elsej=0;printf(%dn,k-p);puts(str1);puts(str2);214从键盘输入一个字符串str和一个字符ch,删除字符串st

9、r中和输入字符ch相同的所有字符,输出原始字符串str以及删除字符ch后的字符串str。215从具有10个元素的一维整型数组中查找最小值的元素,然后与数组的第一个元素对调。要求:初始化一维数组,输出该数组以及对调元素的数组。#includemain()int i,temp,b,a10=1,2,3,5,6,10,13,67,8,9;int max=a0;for(i=0;i10;i+)printf(%3d,ai);printf(n);for(i=0;imax)max=ai;b=i;printf(max=%dn,max);temp=ab;ab=a0;a0=temp; for(i=0;i10;i+)p

10、rintf(%3d,ai);printf(n);216在一个具有10元素的整型数组a中,删除数组元素值为奇数的所有数组元素。要求:初始化数组a,输出原始数组以及删除数据的数组。#includevoid main()int a10=2,4,2,5,6,7,3,7,4,8,b10;int i,j=0,k;for(i=0;i10;i+)printf(%5d,ai);printf(n);for(i=0;i10;i+)if(ai%2=0)bj=ai;j+;k=j;for(j=0;jk;j+)printf(%5d,bj); printf(n);217将10个整数存入数组,删除数组中指定的第n个元素。(要求

11、:数组初始化定义)#include main()int a10=1,2,3,4,5,6,7,8,9,10,i,j;for(j=0;j10;j+)if(aj=6)aj=aj+1;j+; printf(%d ,aj);218初始化一个4x5的矩阵,求其中最大元素和最小元素所在的行号,对调最大最小元素,输出行号、列号、对调后的矩阵。#include main()int a45=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,i,j;int max=a00,min=a00,c=0,d=0,e=0,f=0;int temp;for(i=0;i4;i+

12、)for(j=0;j5;j+)printf(%4d,aij);printf(n);for(i=0;i4;i+)for(j=0;jmax)max=aij;c=i;d=j;printf(max is %d,在第%d行第%d列,max,c,d);printf(n);for(i=0;i4;i+)for(j=0;j5;j+)if(aijmin)min=aij;e=i;f=j;printf(min is %d,在第%d行第%d列,min,e,f);printf(n);temp=acd;acd=aef;aef=temp;for(i=0;i4;i+)for(j=0;j5;j+)printf(%4d,aij);

13、printf(n);219编写函数int fun(int n),判定n是否为十位数字为1,个位数字为3或7的数。若是,函数返回1,否则返回0。(提示:例如:13、17、113、317都是这样的数。)要求:在主函数中调用fun函数,并在主函数中输出1000之间的所有十位数字为1,个位数字为3或7的数。#includeint fun(int n)int a,b;a=n%10;b=n/10%10;if(a=3|a=7)if(b=1)return 1;elsereturn 0;elsereturn 0;main()int a,n;for(n=3;n1001;n+) a=fun(n);if(a=1)pr

14、intf(%5d,n);if(a=0)continue;220初始化数组为10个学生的某门课成绩,求出其中最高成绩、最低成绩及平均值,统计成绩低于60分的人数、高于平均值的人数和低于平均值的人数。要求:输出原始成绩、最高成绩、最低成绩、平均成绩、低于60分的人数、高于平均值的人数、低于平均值的人数。221已知矩阵a44,交换矩阵中最大元素所在的列与次大元素所在的列。要求:(1)编写函数void change(int a44)交换最大元素所在的列与次大元素所在的列;(2)在主函数中初始化原始矩阵,输出原始矩阵以及交换发生后的矩阵。例如:初始化矩阵为: 交换后矩阵为:1 4 5 8 1 5 4 8

15、3 2 6 7 #includevoid change(int a44) int i=0,j=0,n=0,m=0,x,y,s;int max,temp1,temp2; max=a00;for(i=0;i4;i+)for(j=0;j=max)max=aij;x=i;y=j;temp1=axy; axy=0;max=a00; for(n=0;n4;n+)for(m=0;m=max)max=anm;s=m; axy=temp1;for(i=0;i4;i+)temp2=ais; ais=aiy; aiy=temp2;main()int a44=1,2,15,16,5,6,7,8,9,10,11,12,

16、13,14,3,4; int i,j;printf(Orignal:n);for(i=0;i4;i+)for(j=0;j4;j+)printf(%2d ,aij);printf(n);change(a); i=0;j=0;printf(Changed:n);for(i=0;i4;i+)for(j=0;j4;j+)printf(%2d ,aij); printf(n);322编写函数void fun(char str30,char a),删除字符串str中所有a代表的字符,被删除后的字符依次向前移动。要求:在主函数中初始化字符数组,并输入字符a,输出原字符数组及删除结果。例如:初始化字符数组st

17、r30=”This is a test of C language.”,输入字符a=t,则删除之后的结果为”This is a es of C language.”。323编写函数int StrCount(char* str1,char* str2)。Str1和str2为两个输入的字符串。函数统计str2在str1中出现的次数,返回该数值。要求:在主函数main中初始化str1和str2,调用函数StrCount(str1,str2)后输出结果。如输入str1为howareyouareGGGare,str2为are,那么调用函数StrCount后函数返回3。#includeint StrCou

18、nt(char *str1,char *str2)int i=0,j=0,ncourt=0;for(i=0;*(str1+i)!=0;i+) if(*(str1+i)=*(str2+j) for(j=0;j3;j+) if(*(str1+i+j)!=*(str2+j) break; if(j=3)j=0;ncourt+;return(ncourt);main()char a=howareyouarehhare;char b=are;int n;n=StrCount(a,b);printf(%dn,n);324编写函数void StrMid(char* str1,int m,int n,char

19、* str2)。Str1为一个输入的字符串,函数把str1从第m个字符开始的n个字符拷贝到str2中。函数没有返回值。要求在主函数main中读入str1,调用函数StrMid(str1,m,n,str2)后输出str2的结果(m从0开始计数)。如:输入str1为goodmorning,m为1,n为3,调用函数StrMid(str1,m,n,str2)后str2为ood。#includevoid StrMid(char* str1,int m,int n,char* str2) int i=0,j=0;for(i=m;im+n;i+)*(str2+j)=*(str1+i);j+;*(str2+j

20、)=0;main()char a=goodmorning;char b10;int n,m;scanf(%d%d,&m,&n);StrMid(a,m,n,b);puts(a);puts(b);325编写函数catStr(char str1,char str2)用于进行两个字符串的连接,编写函数lenStr(char str)用于统计一个字符串的长度,并在主函数中调用。要求:不允许使用strcat()和strlen()字符处理库函数,在主函数以直接初始化的方式输入两个字符串str1和str2。如输入str1为howareyou,str2为me,调用catStr函数后str1为howareyoum

21、e,调用lenStr函数后输出11。#include void catStr(char str1,char str2)int i=0,j;while(str1i!=0)i+;for(j=0;str2j!=0;j+) str1i+j=str2j;str1i+j=0;int lenStr(char str) int i=0;while(stri!=0)i+;return(i);main()char str1=howareyou,str2=me;int n;puts(str1);puts(str2);catStr(str1,str2); n=lenStr(str1);puts(str1);print

22、f(%dn,n);326编写函数void fun(char *t,char a,char b),将字符串t中所有a代表的字符用b所代表的字符替换。要求:在主函数中初始化字符数组,并输入字符a和b,输出原字符数组及替换结果。例如:初始化字符数组str30=”This is a test of C language.”,输入字符a=t,b=T则替换结果为”This is a TesT of C language.”。#includevoid fun(char *t,char a,char b)int i=0;for(i=0;*(t+i)!=0;i+)if(*(t+i)=a) *(t+i)=b; m

23、ain()char str20;char a,n;gets(str); scanf(%c %c,&a,&n);fun(str,a,n);puts(str);327编写函数int fun(char *t,char a),统计字符串t中有多少个变量a代表的字符。要求:在主函数中初始化字符数组,并输入字符a,输出原字符数组及统计结果。例如:初始化字符数组str30=”This is a test of C language.”,输入字符a=s,则统计结果为3。#includeint fun(char *t,char a)int i=0,ncount=0;for(i=0;*(t+i)!=0;i+) i

24、f(*(t+i)=a)ncount+;return(ncount);main()char str100;char c;int n;gets(str);scanf(%c,&c); n=fun(str,c);printf(%dn,n);328编写函数void fun(int *p,int n)对于一个存放任意10个整数的一维数组,从第n(0=n=9)个数据依次向左移动一个位置。要求:在主函数中初始化数组,输入n值,输出原始数组和移动后的数组。例如:初始化数组为6 10 2 9 8 7 17 18 23 45,如果n=6移动后的数组为:10 2 9 8 7 7 17 18 23 45#include

25、void fun(int *p,int n) int i;for(i=0;in-1;i+)*(p+i)=*(p+i+1);main()int a10=1,2,3,4,5,6,7,8,9,10;int n,i=0,j=0;for(i=0;i10;i+)printf(%d ,ai);printf(n);scanf(%d,&n);fun(a,n); for(j=0;j10;j+)printf(%d ,*(a+j); printf(n);329编写函数函数void newcopy(char *new,char *old),其功能是删除old所指向字符串中的所有大写字母,并将删除后的字符串存入new中。

26、要求,在主函数中输入一个字符串并输出原始字符串,调用上述函数后,输出删除了小写字母后的字符串。(本题不允许使用字符处理库函数)#includevoid newcopy(char *New,char *Old) int i,j=0; for(i=0;*(Old+i)!=0;i+) if(*(Old+i)=97&*(Old+i)=122) *(New+j)=*(Old+i); j+; *(New+j)=0;main() int i=0; char a20; char *p=a; gets(a); newcopy(p,a); for(i=0;*(p+i)!=0;i+) printf(%c,*(p+i

27、); printf(n);330编写函数void dele(char *s,char *p),其功能是删除字符串p中的所有数字字符(例如原字符串为:abc12ef5ghij8yz,处理后的字符串为abcefghijyz)保存于字符串s中。要求:在main()函数中初始化字符串s并输出原字符串s,调用上述函数后输出处理后的新字符串s。(本题不允许使用字符处理库函数)#includevoid dele(char *s,char *p) int i=0,j=0;for(i=0;*(p+i)!=0;i+)if(!(*(p+i)=48&*(p+i)=57)*(s+j)=*(p+i);j+; *(s+j)=0;main()char a=abc12ef5ghij8yz;char *p;p=a;puts(a); dele(p,a);printf(%sn,p);3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁