武汉纺织大学期末C语言编程题复习_第1页
武汉纺织大学期末C语言编程题复习_第2页
武汉纺织大学期末C语言编程题复习_第3页
武汉纺织大学期末C语言编程题复习_第4页
武汉纺织大学期末C语言编程题复习_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 编程题复习选择结构1.使用if形式编写程序:若a>b将两个数的位置调换; 否则,保持不变。 #include”stdio.h” void main() int a,b,temp; printf(“请输入两个整数:”); scanf(“%d%d”,&a,&b); if(a>b) temp=a; a=b; b=temp; if(c>a&&c>b)printf(“%d,%dn”,a,b); 2.用if形式求3个数中的最大数。 #include”stdio.h” void main() int a,b,c; printf(“请输入三个整数:”)

2、;scanf(“%d%d%d”,&a,&b,&c); if(a>b&&a>c) printf(“%d最大n”,a);if(b>a&&b>c) printf(“%d最大n”,b); printf(“%d最大n”,c); 3.将输入的字符的大写字符转换成小写字符输出,小写字符原样输出 #include”stdio.h” 岁到45岁之间分在青年组,45岁到55岁之间分在中void main() int c; c=getchar(); if(c>=A&&c<=Z) putchar(c+32);

3、putchar(c); 4.编写程序,输入报名者的岁数,小于18岁分儿童组.18 岁到45岁之间分在青年组,45岁到55岁之间分在中 年组 55岁以上的分老年组。排除不可能的岁数。 #include”stdio.h”void main() int age; printf(“请输入年龄(0<=年龄<=150):”);scanf(“%d”,&age); if(age>0&&age<=150) if(age<18)printf(“参加儿童组n”); else if(age<45)printf(“参加青年组n”); else if(age&l

4、t;55)printf(“参加中年组n”); else printf(“参加老年组n”);else printf(“数据错误!n) 5.根据输入字符( 0到F,用%c接收)显示与该字符所表示的 十六 进制数相对应的十进制数。(例如输入A,输出10; 输入0,输出0。) #include”stdio.h” void main() printf(“请输入0F:”); scanf(“%c”,&i); 。 switch(i) case 0:case1:case2: case 3:case4:case5:case6:case7: case 8:case9:printf(“%dn”,i-0);br

5、eak; case A:casea:printf(“%dn”,10);break;case B:caseb:printf(“%dn”,10);break;case C:casec:printf(“%dn”,10);break;case D:cased:printf(“%dn”,10);break;case E:casee:printf(“%dn”,10);break;case F:casef:printf(“%dn”,10);break;default:printf(“输入有误!”); 7.编写程序,求二元一次方程ax2+bx+c=0的根 #include”stdio.h”#include”m

6、ath.h”void mainint a,b,c;float x1,x2;printf(“请输入一元二次方程的三个系数a、b、c:n);scanf(“%d%d%d”,&a,&b,&c);if(b*b-4.0*a*c>=0) x1=(-b+sqrt(b*b-4.0*a*c)/(2.0*a);x2=(-b-sqrt(b*b-4.0*a*c)/(2.0*a);printf(“方程的根是x1=%ftx2=%fn”,x1,x2);else printf(“方程无根!n”);6.编写程序,从键盘接受一个简单的表示四则运算的表达式,计算结果并输出。例如,输入“20+32”,输出

7、“=52”。要求用switch语句和else if形式编写程序。用switch实现 #include”stdio.h”void mainint a,b;char c;printf(“请输入一个四则运算表达式(例如20+32):n”);scanf(“%d%c%d”,&a,&c,&b);switch(c)case +:printf(“%d+%d=%dn”,a,b,a+b);break;case -:printf(“%d-%d=%dn”,a,b,a-b);break;case *:printf(“%d*%d=%dn”,a,b,a*b);break;case /:printf(

8、“%d/%d=%dn”,a,b,a/b);break;default:printf(“输入有误!n”);用else if 实现#include”stdio.h”void mainint a,b;char c;printf(“请输入一个四则运算表达式(例如20+32):n”);scanf(“%d%c%d”,&a,&c,&b);if(c=+) printf(“%d+%d=%dn”,a,b,a+b);else if(c=-)printf(“%d-%d=%dn”,a,b,a-b);else if(c=*)printf(“%d*%d=%dn”,a,b,a*b);else if(c

9、=/)printf(“%d/%d=%dn”,a,b,a/b);elseprintf(“输入有误!n”);8.从键盘接受一个字符,输出该字符字典排列顺序的下一个字符,例如,输入a,输出b。如果输入的字符不在26个英语字母中,则显示输入数据有误,如果输入的字符是z或Z,则输出a或A。#include”stdio.h”void mainchar c;printf(“请输入一个英文字母:”);c=getchar();if(c>=a&&c<=z)printf(“%c-%cn”,c,(c-a+1)%26+a);if(c>=A&&c<=Z)printf

10、(“%c-%cn”,c,(c-A+1)%26+A);elseprintf(“输入数据有误!n”);9编写程序,根据输入的百分制分数,按五分制的成绩输出。把百分制改成5分制/* 使用else if */#include<stdio.h>void main()int score;printf("请输入百分制成绩(0100):n");scanf("%d",&score);if(score>=90)printf("百分制成绩%d转换成五分制成绩是5n",score);else if(score>=80)prin

11、tf("百分制成绩%d转换成五分制成绩是4n",score);else if(score>=60)printf("百分制成绩%d转换成五分制成绩是3n",score);elseprintf("百分制成绩%d转换成五分制成绩是2n",score);/* 使用switch */#include<stdio.h>void main() int score,k;printf("请输入百分制成绩(0100):n");scanf("%d",&score);k=score/10;sw

12、itch(k)case 10:case 9:printf("百分制成绩%d转换成五分制成绩是5n",score);break;case 8:printf("百分制成绩%d转换成五分制成绩是4n",score);break;case 7:case 6:printf("百分制成绩%d转换成五分制成绩是3n",score);break;case 5:case 4:case 3:case 2:case 1:case 0:printf("百分制成绩%d转换成五分制成绩是2n",score);循环结构1、 输入一行字符,分别统

13、计其中英文字母、空格、数字和其他字符的个数#include<stdio.h>main()char a;int b,c,d,e;b=0;c=0;d=0;e=0;fflush(stdin);printf("请输入一串东西:");while (a=getchar()!='n')if(a>='a'&&a<='z'|a>='A'&&a<='Z')b+;else if(a>='0'&&a<=

14、9;9')c+;else if(a=' ')e+;elsed+;printf("字母%d个n",b);printf("数字%d个n",c);printf("空格%d个n",e);printf("符号%d个n",d);2输入两个正整数a 和 b,求其最大公约数和最小公倍数(提示:设x 和 y 的较小值为gcd,则最大公约数的范围在gcd到1之间,用while循环完成)#include”stdio.h”int yue (int a,int b) int r,m;r=a%b;while(r!=0)

15、 a=b;b=r;r=a%b;m=b;return m;int bei(int a,int b,int m) int t;t=(a*b)/m;return t;void main()int a,b,m,t;printf(“请输入两个正整数:”);scanf(“%d%d”,&a,&b);m=yue(a,b);printf(“最大公约数=%dn”,m);t=bei(a,b,m);printf(“最小公倍数=%dn”,t);3.编写程序求 的值并输出。结束条件为 #include "stdio.h" #include "math.h" void

16、 main() float a,b,h,x,sum; int flag; long i; for (i=1,sum=0,flag=1;fabs(1.0/i)>=1.E-5;i+) sum=sum+flag*1.0/i; flag=-flag; printf("计算结果是:%f",sum); 4.编写程序,输入一个正整数,计算并显示该整数的各位数字之和。例如,整型数1987的各位数字之和是1+9+8+7,等于25.#include<stdio.h>void main()int i,sum,k;printf("请输入一个正整数:");sca

17、nf("%d",&i);sum=0;while(i!=0)k=i%10;sum=sum+k;i=i/10;printf("=%dn",sum);5.计算歌手得分:去掉一个最高分,去掉一个最低分,取剩余成绩的平均分。编写程序输入一个歌手的若干成绩,以-1作为输入结束标记,计算歌手的最后得分。#include<stdio.h>void main() int x,min,max,n=0,sum=0;printf("请输入若干歌手的成绩,以-1作为输入结束标记n");scanf("%d",&x)

18、;max=min=x;while(x!=-1) if(min>x)min=x;if(max<x)max=x;sum+=x;n+;scanf("%d",&x);if(n=0)printf("错误!用户没有输入成绩!n");else if(n>2)printf("去掉一个最高分%d、去掉一个最低分%d,歌手的最后得分是:%dn",max,min,(sum-max-min)/(n-2);elseprintf("输入成绩个数小于3,歌手的最后得分是:%dn",sum/n);6.输出所有的水仙花数。

19、水仙花数是一个3位正整数,它的三个数字的立方和等于该数本身。例如:153 = 13 + 53 +33#include <stdio.h>void main() int i,j,k,n=100; while(n<1000) i=n/100; j=n%100/10; k=n%10; if(i*100+j*10+k=i*i*i+j*j*j+k*k*k) printf("%d%d%dn",i,j,k); n+; 7.编写程序列出斐波那契(Fibonacci)数列的前20项。斐波那契数列源自一个有趣的问题:一对小兔,一个月后长成中兔,第三个月长成大兔,长成大兔以后每

20、个月生一对小兔。第20个月有多少对兔子? #include "stdio.h" void main() int a,b,j,f; a=1;b=1; printf("%10d%10d",a,b); for( j=3;j<=20; j+) f=a+b; a=b; b=f; printf("%10d",f); if (j%5=0) printf("n"); 8.编写程序求a+aa+aaa+.其中a是一个数字。例如:3+33+333+3333+33333(此时n为5)。要求a和n从键盘输入,输出格式:3+33+333

21、+3333+33333=37035#include<stdio.h>void main()int a,n,x,i,sum;printf("输入a和n的值:");scanf("%d%d",&a,&n);sum=a;x=a;printf("%d",a);for(i=2;i<=n;i+) x=x*10+a;printf("+%d",x);sum+=x;printf("=%dn",sum);9假设数列中的每一项都比前一项大一个常量。假设第一项为a,并且两个相邻项之间的差

22、为d。编写程序提示输入数列的前两项,以及需要计算的项数k。利用循环语句输出数列的前k项,并计算前k项的和。#include<stdio.h>void main() int a1,a2,d,k,i,sum;printf("请输入数列的前两项:");scanf("%d%d",&a1,&a2);printf("请输入需要计算的项数:");scanf("%d",&k);d=a2-a1;sum=a1;printf("%d项数列分别是:n%dt",k,a1);for(i=

23、2;i<=k;i+) a2=a1+d;printf("%dt",a2);sum=sum+a2;a1=a2;printf("n前%d项的和是:%dn",k,sum);10. 编写程序输出下列图形: 1 22 333 4444 55555 666666 7777777 88888888 999999999 #include "stdio.h" void main() int i,j; for (i=1;i<=9;i+) for (j=1;j<=10-i;j+) printf(" "); for (j=

24、1;j<=i;j+) printf("%d",i); printf("n"); 11.若口袋里放12个球,3个红的,3个白的,6个黑的,从中任取8个,编写程序列出所有可能的取法。 #include "stdio.h" void main() int red,white,black; for (red=0;red<=3;red+) for (white=0;white<=3;white+) for (black=0;black<=6;black+) if (red+white+black=8) printf(&q

25、uot;nred %d,white %d,black %d", red,white,black); 12.请为“百鸡问题”编写程序。百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁,母,雏各几只”。#include<stdio.h>void main() int x,y,z;for(x=0;x<=100;x+)for(y=0;y<=100;y+) z=100-x-y;if(15*x+9*y+z=300)printf("百钱买白鸡,鸡翁%d个、鸡母%d个,鸡雏%d个n",x,y,z);13.幼儿园有大,中,小3个

26、班的小朋友。分西瓜时,大班3人1个,中班4人1个,小班5人1个,正好分掉10个;分苹果时,大班每人2个,中班每人3个,小班每人4个,正好分掉100个。编写程序求幼儿园共有多少个小朋友。#include<stdio.h>void main() int x,y,z;for(x=1;x<50;x+)for(y=1;y<40;y+)for(z=1;z<50;z+)if(20*x+15*y+12*z=600&&2*x+3*y+4*z=100)printf("大班%d人,中班%d人,小班%d人,幼儿园共有%d个小朋友n",x,y,z,x+y

27、+z);14.求3到100之间的所有素数。 #include "stdio.h" void main() int i,j; for (i=3;i<=100;i+) for (j=2;j<=i-1;j+) if (i%j=0) break; if (i=j) printf("%4d",i); printf("n"); 模块化程序设计1.定义两个函数分别求两个整数的最大公约数和最小公倍数,并在主函数中输入两个整数以后调用该函数。编写主函数调用该函数。int hcf(int u,int v) int t,r; if(v>u

28、) t=u;u=v;v=t; while(r=u%v)!=0) u=v;v=r; return(v); int lcd(int u,int v,int h) return(u*v/h); #include <stdio.h>void main() int u,v,h,l; printf("输入两个正整数按照格式a,b:"); scanf("%d,%d",&u,&v); h=hcf(u,v); printf("最大公约数=%dn",h); l=lcd(u,v,h); printf("最小公倍数=%d

29、n",l); 2.函数间的参数传递。 #include "stdio.h" void fail_swap(int a,int b); void main() int i,j; i=2;j=4; printf("before call i=%d,j=%dn",i,j); fail_swap (i,j); printf("called i=%d,j=%dn",i,j); void fail_swap(int x,int y) int temp; printf(" before change x=%d,y=%dn&quo

30、t;,x,y); temp=x; x=y; y=temp; printf(" changed x=%d,y=%dn",x,y); 3.编写函数真正交换两个数。 #include "stdio.h" void swap(int *x,int *y) int temp; temp=*x; *x=*y; *y=temp; void main() int a,b; printf("Please enter two integer:"); scanf("%d%d",&a,&b); printf("B

31、efore exchanged:"); printf("a=%dt b=%dn",a,b); swap(&a,&b); printf("After exchanged:"); printf("a=%dt b=%dn",a,b); 4. 编写一个函数求球的表面积和球的体积,在主函数中调用该函数输出球的表面积和球的体积。 #include "stdio.h" double A_V_sphere(double r,double *v) double area; area=4*3.1415926*

32、r*r; *v=4.0/3*3.1415926*r*r*r; return area; void main() double r,v; printf("nEnter radius of sphere:"); scanf("%lf",&r); printf("n Area of sphere is %lf.", A_V_sphere (r,&v); printf("n Volume of sphere is %lf.", v); ,5,用递归法计算Fibonacci序列的前20项。#include &

33、quot;stdio.h"int f(int x) if(x=1) return 1;if(x=2) return 1;else return f(x-1)+f(x-2);void main() int a,i;printf("请输入一个正整数:");scanf("%d",&a);for(i=1;i<a;i+)printf("%d,",f(i);if(i=a) printf("%dn",f(i);6 编写一个不带返回值的函数分别求球的表面积和球的体积,在主函数中调用该函数输出球的表面积和球的

34、体积。 #include "stdio.h" void A_V_sphere(double r,double *v,double *area) *area=4*3.1415926*r*r; *v=4.0/3*3.1415926*r*r*r; void main() double r,v,area; printf("n输入球的半径:"); scanf("%lf",&r); A_V_sphere (r,&v,&area); printf("n 球的表面积 %lf.", area); printf

35、("n 球的体积 %lf.", v); 数组和指针1.输入30名歌手的分数,求出最小的分数以及第一个最小的分数在数组中的下标。 #include "stdio.h" #define SIZE 30 void main() int i; float dataSIZE; int min_allo; printf("nPlease input %d float:",SIZE); for (i=0;i<SIZE;i+) scanf("%f",&datai); min_allo=0; for (i=1;i<

36、;SIZE;i+) if (datai<datamin_allo) min_allo=i; printf("Min is %5.2f , Alloction is %5dn",datamin_allo,min_allo); 2.输入30名歌手的分数,将这30个分数从小到大输出。 #include "stdio.h" #define SIZE 30 void main() int i,j;float dataSIZE; int min_a; printf("nPlease input %d int:",SIZE); for (i=

37、0;i<SIZE;i+) scanf("%f",&datai); for (i=0;i<SIZE;i+) min_a=i; for (j=i+1;j<SIZE;j+) if (dataj<datamin_a) min_a=j; temp=datamin_a; datamin_a=datai; datai=temp; printf("n排序后的结果是:"); for (i=0;i<SIZE;i+) printf("%5.2f",datai);3.用函数求一个数组的和,在主函数中初始化一个数组后调用该

38、函数输出结果。 #include "stdio.h" float sum_function(int size,float a); void main() float price5=1.1,2.2,3.3,4.4,5.5; printf("Sum is %fn",sum_function(5,price); float sum_function(int size,float a) int i; float sum=0; for (i=0;i<size;i+) sum=sum+ai; return(sum); 4. 输入30个歌手的分数,对这些分数进行

39、排序,输出排序之前和排序之后的结果。 #include "stdio.h" #define SIZE 30 void accept_array(float a,int size); void sort(float a,int size); void show_array(float a,int size); void main() float scoreSIZE; accept_array(score,SIZE); printf("Before sorted: "); show_array(score, SIZE); sort(score, SIZE);

40、 printf("After sorted: "); show_array(score,SIZE); void accept_array(float a,int size) int i; printf("nPlease enter %d score:",size); for (i=0;i<size;i+) scanf("%f",&ai); void show_array(float a,int size) int i; for (i=0;i<size;i+) printf(" %5.2f",ai

41、); printf("n"); void sort(float a,int size) int i,min_a,j; float temp; for (i=0;i<SIZE;i+) min_a=i; for (j=i+1;j<SIZE;j+) if (aj<amin_a) min_a=j; temp=amin_a; amin_a=ai; ai=temp; 5.输入10个数到一个数组中,按照与输入相反的顺序输出。 #include "stdio.h" #define SIZE 10 void main() int aSIZE=1,2,3,4,5,6,7,8,9,10; int *pa,i; int *qa; pa=qa=&a0; printf("nPlease enter %d integer:",SIZE); for (;pa<qa+SIZE;pa+) scanf("%d",pa); printf("Array data:",SIZE); for (pa-;qa<=pa;pa-) printf(" %d&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论