C语言作业题整理.docx

上传人:小飞机 文档编号:3155258 上传时间:2023-03-11 格式:DOCX 页数:27 大小:45.87KB
返回 下载 相关 举报
C语言作业题整理.docx_第1页
第1页 / 共27页
C语言作业题整理.docx_第2页
第2页 / 共27页
C语言作业题整理.docx_第3页
第3页 / 共27页
C语言作业题整理.docx_第4页
第4页 / 共27页
C语言作业题整理.docx_第5页
第5页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言作业题整理.docx》由会员分享,可在线阅读,更多相关《C语言作业题整理.docx(27页珍藏版)》请在三一办公上搜索。

1、C语言作业题整理1. 1.1. main 1.2. 第一次 编写一程序,通过键盘输入一华氏温度,将其转换为摄氏温度后输出。 公式为c=5/9(f 32) #include stdio.h float f=0,h=0; printf(请输入华氏温度:); scanf(%f,&f); printf(转化为摄氏温度为:); h=(float)5/9*(f-32); printf(%.2fn,h); 通过键盘输入一小写字母,将其转换为大写字母输出,并输出该大写字母的后一位字母和前一位字母。 #include stdio.h main char ch1,ch2,ch3,ch; printf(请输入一个小

2、写字母:n); while(scanf(%c,&ch),ch122) 1.3. 通过键盘输入一个两位的整数,试编写程序将其个位与十位分别以字符的方式输出。输出形式为:“the input number is 你输入的整数,the tens is 十位数字,the units is 个位数字。”如果输入的整数不正确,则输出“wrong input” #include stdio.h main int a,b1,b2; printf(请输入一个两位正整数:n); scanf(%d,&a); if(a=100) printf(输入不符合要求); printf(其对应的大写字母和前后的大写字母分别为:

3、n); if(ch=a)ch2=ch-32;ch1=ch2+25;ch3=ch2+1; else if(ch=z)ch2=ch-32;ch1=ch2-1;ch3=ch2-25; else ch2=ch-32;ch1=ch2-1;ch3=ch2+1; printf(%c,%c,%cn,ch1,ch2,ch3); printf(您输入的符号不是小写字母,请重新输入一个小写字母:n); else 1.4. 给定方程ax2+bx+c=0,试编写程序根据键盘输入实数a、b、c,能输出其根,要求: 如果该方程有两个不同的根,则输出形式为the Answer of ax2+bx+c=0 is x1=根1,x

4、2=根2 如果该方程有两个相同的根,则输出形式为the Answer of ax2+bx+c=0 is x1=X2=根 如果该方程无解,则输出形式为the Answer of ax2+bx+c=0 is none,其中a、b、c均为键盘输入,输出结果保留两位小数。 #include stdio.h #include math.h main 2. 2.1. 第二次 求1/3+3/5+5/7+前20项之和。(本题要求分别以goto,for,do .while,while四种循环语句实现) float a,b,c,disc,x1,x2; scanf(%f,%f,%f,&a,&b,&c); disc=

5、b*b-4*a*c; if(disc=0) else if(disc0) elseprintf(the Answer of ax2+bx+c=0 is nonen); x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(the Answer of ax2+bx+c is x1=%.2f,x2=%.2fn,x1,x2); x1=x2=-b/(2*a); printf(the Answer of ax2+bx+c is x1=x2=%.2fn,x1); b1=a%10; b2=a/10; printf(十位数是:%cn个位数是:%cn,

6、b2+0,b1+0); #include int main int i; float s=0; for(i=1;i=20;i+) printf(s=%fn,s); return 0; s+=(float)(2*i-1)/(2*i+1); #include int main #include void main 2.2. 输入两个正整数,求其最小公倍数。 #include int s,i,j; int a; printf(请输入一个数:n); scanf(%d,&a); s=0; for(j=1;ji;j+) if(i=s) printf(完全数%d=,i); for(j=1;ji;j+) if

7、(i%j=0) printf(%d+,j); printf(b n); if(i%j=0)s=s+j; int p,r,n,m; printf(n,m:); if(p=n*m) while(m!=0) r=n%m; n=m; m=r; printf(最大公约数是%dn,n); printf(最小公倍数是%dn,p/n); return 0; scanf(%d,%d,&n,&m); for(i=1;i=a;i+) int main 2.3. 如果一个正整数的所有因子之和等于该正整数,则称这个正整数为完全数。编写程序读入n,输出不超过n的全部完全数。如6=1+2+3 28=1+2+4+7+14 #

8、include void main int s,i,j; int a; printf(请输入一个数:n); scanf(%d,&a); int n; printf(请输入你的学号:n); scanf(%d,&n); if(n%2=0) else return 0; int m,a,b; printf(请输入任意一个正整数:n); scanf(%d,&m); for(a=1;a=m;a+) for(b=1;b=m;b+) printf(* ); printf(n); int i,j,k=3,s=1; for (i=1;i8;i+) for(j=0;jk;j+) printf( ); for(j=

9、0;js;j+) printf(*); printf(n); if(i4) k-;s=s+2; else k+;s=s-2; for(i=1;i=a;i+) 2.4. 将学号对2取模,值为0的同学完成编写程序利用星号打印出菱形图案;否则完成编写程序利用星号打印出正方形图案。 s=0; for(j=1;ji;j+) if(i=s) printf(完全数%d=,i); for(j=1;ji;j+) if(i%j=0) printf(%d+,j); printf(b n); if(i%j=0)s=s+j; #include int main int n; printf(请输入你的学号:n); sca

10、nf(%d,&n); if(n%2=0) else int m,a,b; printf(请输入任意一个正整数:n); scanf(%d,&m); for(a=1;a=m;a+) int i,j,k=3,s=1; for (i=1;i8;i+) for(j=0;jk;j+) printf( ); for(j=0;js;j+) printf(*); printf(n); if(i4) k-;s=s+2; else k+;s=s-2; 3. 3.1. for(b=1;b=m;b+) printf(* ); printf(n); return 0; 第三次 已知 y=2x3 -3x4 +6x5 -4x

11、+50 ,从 x=0 到 x=2 ,每隔 0.2 计算,并输入正整数n,将 y 的值进行排序后由小到大输出前n项和后n项(如输入5,则输出前5项和后5项,即最小的5个y值及最大的5个y值)。 #include main 3.2. main 输入一个班10个学生的成绩,统计各分数段0,60),60,70),70,80),80,90),90-100的人数。 #include int i, j, k, h, l, n; float x, t, y11; i=0; for(x=0;x2.1;x=x+0.2) printf(请输入一个1-11以内正整数n); scanf(%d,&n); if(0n&n1

12、2) else printf(您输入的数字超出规定范围n); for(l=0;ln-1;l+) printf(最小的%d个y值是nn,n); printf(%fnn,yk); printf(最大的%d个y值是nn,n); printf(%fnn,yh); for(k=0;kn;k+) for(j=1;jyj) t=yj-1; yj-1=yj; yj=t; yi=2*x*x*x-3*x*x*x*x+6*x*x*x*x*x-4*x+50; i=i+1; for(h=11-n;h11;h+) 3.3. main int i, j, k, l, num=0; float ave, t, g5; pri

13、ntf(请输入5个数,输入完成请按回车键n); for(i=0;i5;i+) ave=(g0+g1+g2+g3+g4)/5.0; for(l=0;lave) num+; printf(5个数中最大值是 %fn,g4); printf(5个数中最小值是 %fn,g0); printf(5个数的平均值是 %fn,ave); for(k=1;kgk) t=gk-1; gk-1=gk; gk=t; scanf(%f,&gi); for(j=0;j5;j+) 求任意输入的5个数中的最大值、最小值和平均值,并求出有多少个数超过平均值。 #include int i, a=0, b=0, c=0, d=0,

14、 e=0; float g10; printf(请输入10个学生的成绩,输入完成请按回车键n); for(i=0;i10;i+) if(0=gi&gi60) a+; else if(60=gi&gi70) b+; else if(70=gi&gi80) c+; else if(80=gi&gi90) d+; else if(90=gi&gi=100) e+; else printf(输入的成绩有问题n); scanf(%f,&gi); for(i=0;i10;i+) printf(0-60分人数为 %dn,a); printf(60-70分人数为 %dn,b); printf(70-80分人数

15、为 %dn,c); printf(80-90分人数为 %dn,d); printf(90-100分人数为 %dn,e); 4. 4.1. printf(有 %d 个数超过平均值n,num); 第四次 一个学习小组有5个人,每个人有三门课的考试成绩。求小组分科的平均成绩和各同学平均成绩;同时将各位同学的平均成绩按照从高到低的顺序排名后输出其姓名、平均成绩以及排序号。张 王 李 赵 周 ath 80 61 59 85 76 C 75 65 63 87 77 Eng 92 71 70 90 85 #include stdio.h #include string.h #include math.h m

16、ain /* */ printf(-以下为分科的平均成绩-n); for(i=0;i3;i+)/分科的平均成绩 printf(nn); sum=0; for(j=0;j5;j+) sum+=gradeji; avg1i=(float)sum/5; printf(%s的平均成绩为:%.2fn,itemsi,avg1i); strcpy(items0,Math); strcpy(items1,C); strcpy(items2,Eng);/*/ char names55=张,王,李,赵,周; char items35; char name5; int grade53=80,75,92,61,65,

17、71,59,63,70,85,87,90,76,77,85; float avg13,avg25,temp; int i,j; int sum; strcpy(names0,张); strcpy(names1,王); strcpy(names2,李); strcpy(names3,赵); strcpy(names4,周); for(i=0;i5;i+) gets(namesi); 4.2. printf(-以下为各同学平均成绩-n); for(i=0;i5;i+)/各同学平均成绩 for(i=0;i4;i+)/各同学平均成绩排序 printf(nn); printf(-以下为各位同学平均成绩从

18、高到低的排名-n); printf(%s ,序号); printf(%s ,姓名); printf(%sn,平均成绩); for(i=0;i5;i+) 用所学过的知识,编写一个竞赛评分程序。输入包括选手的姓名以及5位评委的分数,评分规则为每位选手的成绩为去掉最高分和最低分后再取平均。要求用二维数组来设计程序。输出的格式为 排序 姓名 平均分 最高分 最低分,要求由高到低对平均分排序,平均分保留2位小数。如下所示: No name avg max min 1 c 82.33 99 66 2 b 80.12 92 70 3 a 80.11 98 60 printf( %d ,i+1); print

19、f( %s ,namesi); printf(%.2fn,avg2i); for(j=i+1;j5;j+) if(avg2iavg2j) temp=avg2i; avg2i=avg2j; avg2j=temp; strcpy(name,namesi); strcpy(namesi,namesj); strcpy(namesj,name); sum=0; for(j=0;j3;j+) sum+=gradeij; avg2i=(float)sum/3; printf(%s的平均成绩为:%.2fn,namesi,avg2i); #include stdio.h #include string.h #

20、include math.h main for(i=0;i3;i+) sumi=0; for(j=0;j5;j+) sumi+=gradeij; sumi-=(maxi+mini); avgi=sumi/3.0; scanf(%s %d %d %d %d %d,namei,&gradei0,&gradei1,&gradei2,&gradei3,&gradei4); for(i=0;i3;i+) if(flag) for(i=0;i3;i+) maxi=gradei0; mini=gradei0; for(j=1;j5;j+) if(maxigradeij) for(j=0;j100|grade

21、ij0) printf(error!); flag=0; printf(please input information of the 3 players:n); for(i=0;i3;i+) char name310; int i,j,max3,min3; int grade35; int sum3; float avg3,float_temp; char str_temp10; int int_temp; int flag=1; 4.3. for(i=0;i2;i+) printf(%8s%8s%8s%8s%8sn,排序,姓名,平均分,最高分,最低分); for(i=0;i3;i+) pr

22、intf(%8d,i+1); printf(%8s,namei); printf(%8.2f,avgi); printf(%8d,maxi); printf(%8dn,mini); for(j=i+1;j3;j+) if(avgiavgj) float_temp=avgi; avgi=avgj; avgj=float_temp; strcpy(str_temp,namei); strcpy(namei,namej); strcpy(namej,str_temp); int_temp=maxi; maxi=maxj; maxj=int_temp; int_temp=mini; mini=minj

23、; minj=int_temp; 学号对2取余,为0的完成A题,为1的完成B题 A: 从键盘上输入一个字符串(不能长于30),要求按照字符,分隔将其拆分成数组,并按照字符,出现的顺序倒序输出每个数组的第一个元素。 示例如输入字符串able,deal,123,face,1e,则每个数组的第一个元素分别为a,d,1,f,1,倒序则输出字符串1f1da #include stdio.h #include string.h #include math.h main int i,k,p,j=0; /* char str130; char items1030; int count=0; printf(in

24、put a string:n); gets(str1); i=0; while(str1i!=0) */ k=0; p=0; for(j=0;j=0;i-) printf(%c,itemsi0); printf(n); B:从键盘上输入两个字符串和整数n(0n=20),要求将第二个字符串插在第一个字符串的n位置开始处并输出。 示例如第一个字符串为you are ok. 第二个字符串为fine and 输入的整数为8,则表示将fine插在ok前面,输出为you are fine and ok. if(str1j!=,) else itemskp=0; k+; p=0; count+; items

25、kp=str1j; p+; if(str1i=,) i+; count+; #include stdio.h #include string.h #include math.h main char chs20; char chs120; 5. 6. 6.1. char temp120; char temp220; int n; int i,j; gets(chs); gets(chs1); scanf(%d,&n); for(i=0;in;i+) temp1i=0; for(i=n;istrlen(chs);i+) temp2i-n=chsi; temp2i-n=0; printf(%sn,s

26、trcat(temp1,strcat(chs1,temp2);/*/ temp1i=chsi; 第五次 第六次 编写函数用冒泡排序法将二维数组a33中的9个整数分别按照所属各行进行由大到小的排序。 #include void order(int a33) main int x, y, a33; printf(请为数组a33输入9个数字,按回车键结束n); for(x=0;x3;x+) for(y=0;y3;y+) scanf(%d,&axy); int i, j, t, m; for(m=0;m3;m+) for(i=0;i2;i+) for(j=1;j3-i;j+) if(amj-1amj)

27、 t=amj-1; amj-1=amj; amj=t; 6.2. order(a); printf(所求数组为:n); for(x=0;x3;x+) 编写函数求输入的x和y之间偶数的和。 for(y=0;y3;y+) printf(%5d,axy); printf(n); #include int s1(int m, int n) int s2(int m, int n) main 6.3. 编写函数求方程ax2+bx+c=0的所有解。提示:要考虑a=0,b2-4ac0、=0、0等多种情况,要求针对每种情况都要提供对应函数来实现。 #include #include int x, y, t,

28、E; printf(请输入两个数字,按回车键结束n); scanf(%d%d,&x,&y); if(xy) t=x; x=y; y=t; if(x%2=1)|(x%2=-1) E=s1(x,y); E=s2(x,y); if(x%2=0) printf(这两个数字之间的所有偶数之和为: ); printf(%dnn,E); int i, num=0; for(i=2;in-m;i=i+2) num+=m+i; int i, num=0; for(i=1;in-m;i=i+2) num+=m+i; return (num); return (num); float s11 (float b, f

29、loat c) float s12 (float a, float b, float c) float s21 (float a, float b, float c) float s22 (float a, float b, float c) main float a, b, c, r; printf(请输入方程ax*x+bx+c=0的3个参数a,b,c,按回车键结束n); scanf(%f%f%f,&a,&b,&c); r=b*b-4*a*c; if(fabs(a)=1e-6) s11(b,c); s12(a,b,c); s21(a,b,c); s22(a,b,c); else if(fab

30、s(r)1e-6) else if(r-1e-6) else printf(error); float x1, x2, m, n; m=-b/(2*a); n=sqrt(4*a*c-b*b)/(2*a); printf(方程一个虚根为: %.3f-%.3fin,m,n); printf(方程另一个虚根为: %.3f+%.3fin,m,n); float x1, x2; x1=(-b-sqrt(b*b-4*a*c)/(2*a); x2=(-b+sqrt(b*b-4*a*c)/(2*a); printf(方程一个实根为: %.3fn,x1); printf(方程另一个实根为: %.3fn,x2);

31、 float x; x=-b/(2*a); printf(方程有一个根为: %.3fn,x); float x; x=-c/b; printf(方程有一个根为: %.3fn,x); 7. 7.1. 第七次 编写递归函数求x的n次方, 并调用此函数求2的5次方。 double pwo(double x,int n) double a=0; if(n=0) a=1; if(n0) a=x*pwo(x,n-1); return a; #include stdio.h main double x; int n; printf(please input x and nn); scanf(%lf%d,&x

32、,&n); printf(%.6lfn,pwo(x,n); 7.2. 课本135页。 #include #include float aveg(int a510,int i) float sum=0,k; int j; for(j=0;j10;j+) sum+=aij; k=sum/10; return k; void exchange(int a510,int i,int j) int k,t; for(k=0;k5;k+) t=aki;aki=akj;akj=t; void max(char a1020,char d520,int b510) int i,j,t,k; char c120;

33、 int e10=0; for(j=0;j10;j+) for(i=0;i5;i+) ej+=bij; for(i=0;i10;i+) for(j=1;jej) t=ej-1; ej-1=ej; ej=t; strcpy(c0,aj-1); strcpy(aj-1,aj); strcpy(aj,c0); exchange(b,j-1,j); printf(%sn,a9); printf(最高分同学的math、chi、eng、phy、man分别为n); printf(最高分同学的名字为:); printf(n); for(i=0;i5;i+) printf(%5d,bi9); printf(n)

34、; main char names1020,sub520,a20; int mark510,i,j; float ave5; printf(输入十名同学的名字:n); for(i=0;i10;i+) scanf(%s,a); strcpy(namesi,a); printf(按科目math、chi、eng、phy、man顺序依次输入十名同学的成绩:n); for(i=0;i5;i+) for(j=0;j10;j+) scanf(%d,&markij); printf(n); strcpy(sub0,math); strcpy(sub1,chi); strcpy(sub2,eng); strcp

35、y(sub3,phy); strcpy(sub4,man); for(i=0;i5;i+) avei=aveg(mark,i); printf(math、chi、eng、phy、man的平均分为:n); for(i=0;i5;i+) printf(%5.1f,avei); printf(n); max(names,sub,mark); 8. 8.1. main char a10,*p; int i; printf(输入十个字符n); gets(a); for(p=a+5;p(a+10);p+) *p=#; printf(处理后结果为n); puts(a); return 0; 8.2. mai

36、n int a6,*p,i,max,sum=0; float ave; printf(输入6个整数n); for(p=a;p(a+6);p+) scanf(%d,p); max=a0; for(p=a;p(a+6);p+) ave=(float)sum/6; printf(max=%d,ave=%.2fn,max,ave); return 0; 8.3. 利用指针编写。第九章课后习题第五大题第5小题。 #include stdio.h main int a10,i,*p,*pmax,*pmin; int max,min,temp; sum+=*p; if(max*p) max=*p; 利用指针

37、编写程序,对具有6个元素的整型数组,找出其中最大值并计算出该数组的平均数。 #include stdio.h 第七次 利用指针编写程序, 对具有10个元素的字符型数组,从下标为6的元素开始全部设置为“#”。 #include stdio.h 9. 9.1. printf (输入十个整数n); for (i=0;i10;i+) p=a; max=*p; min=*p; temp=a0; a0=min; *pmin=temp; temp=a9; a9=max; *pmax=temp; printf (交换后的结果如下n); for (i=0;i10;i+) printf (%d ,ai); return 0; 第九次 用指针编写函数 : insert(s1,s2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号