武汉纺织大学 48学时 C语言编程题复习

更新时间:2023-09-09 20:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编程题复习

选择结构

1.使用if形式编写程序:若a>b将两个数的位置调换;

年组 55岁以上的分老年组。排除不可能 7.编写程序,求二元一次方程ax2+bx+c=0

的岁数。 的根 #include”stdio.h” void main() { int age;

printf(“请输入年龄(0<=年龄<=150):”);

#include”stdio.h” #include”math.h” void main() { int a,b,c;

否则,保持不变。 scanf( “ %d ” ,&age);

#include”stdio.h” if(age>0&&age<=150) float x1,x2; void main() { if(age<18)

printf(“请输入一元二次方程的三个系数a、

{ int a,b,temp; printf( “ 参加儿童组 \\n ”); b 、 c:\\n ”); printf(“请输入两个整数:”); else if(age<45) scanf(“%d%d%d”,&a,&b,&c); scanf(“%d%d”,&a,&b); if(a>b) { temp=a; a=b; b=temp; if(c>a&&c>b)

printf(“%d,%d\\n”,a,b); }

2.用if形式求3个数中的最大数。 #include”stdio.h” void main() { int a,b,c;

printf(“请输入三个整数:”); 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); putchar(c); } 4.编写程序,输入报名者的岁数,小于18岁分儿童组.18

岁到45岁之间分在青年组,45岁到55岁之间分在中

printf( “ 参加青年组 \\n ” ); else if(age<55) printf( “ 参加中年组 \\n ” ); else printf(“ 参加老年组 \\ n”);

} else printf(“数据错误!\\n)

} 5.根据输入字符( 0到F,用%c接收)显示与该字符所表示的 十六 进制数相对

应的十进制数。(例如输入A,输出10; 输入0,输出0。) #include”stdio.h” void main() printf(“请输入0~F:”);

scanf(“%c”,&i);

。 switch(i) { case

?0?:case?1?:case?2?:

case

?3?:case?4?:case?5?:

case ?6 ? :case ? 7 ?: case ?8?:case?9?:printf(“%d\\n”,i-?0?);break; case

?A ? :case ? a ?:printf( “ %d\\n ”,10);break; case

? B ? :case ? b ?:printf( “ %d\\n ” ,10);break; case

? C ? :case ?c ? :printf( “ %d\\n ”,10);break; case ? D ? :case ? d ?:printf( “ %d\\n ” ,10);break; case ? E ? :case ?e ? :printf( “%d\\n”,10);break; case ?F?:case?f?:printf(“%d\\n”,10);break; default:printf(“输入有误!”); }

} 1 / 8

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=%f\\tx2=%f\\n”,x1,x2);

} else printf(“方程无根!\\n”); }

6.编写程序,从键盘接受一个简单的表示四则运算的表达式,

计算结果并输出。例如,输入“ 20+32”,

输出“ =52 ” 。 要求用 switch 语句和 else if形式编写程序。

用 switch 实现 #include ” stdio.h ”

void main() {

int a,b;

char c; printf(“请输入一个四则运算表达式(例如20+32):\\n”);

scanf(“%d%c%d”,&a,&c,&b); switch(c)

{

case

?+?:printf(“%d+%d=%d\\n”,a,b,a+b);break; case

?-?:printf(“%d-%d=%d\\n”,a,b,a-b);break; case

?*?:printf(“%d*%d=%d\\n”,a,b,a*b);break; case ?/?:printf(“%d/%d=%d\\n”,a,b,a/b);break; default:printf(“输入有误!\\n”); } }

用else if 实现

#include ” stdio.h ”

void main { int a,b; char c;

printf(“请输入一个四则运算表达式(例如20+32):\\n”);

scanf(“%d%c%d”,&a,&c,&b); if(c==?+?)

printf(“%d+%d=%d\\n”,a,b,a+b); else if(c==?-?)

printf(“%d-%d=%d\\n”,a,b,a-b); else if(c==?*?)

printf(“%d*%d=%d\\n”,a,b,a*b); else if(c==?/?)

printf(“%d/%d=%d\\n”,a,b,a/b); else

printf(“输入有误!\\n”); }

8.从键盘接受一个字符,输出该字符字典排列顺序的下一个字符,

例如,输入a,输出b。如果输入的字符不在26个英语字母中,

则显示输入数据有误,如果输入的字符是z或Z,则输出a或A。 #include”stdio.h” void main { char c;

printf(“请输入一个英文字母:”); c=getchar(); if(c>=?a?&&c<=?z?) {

printf(“%c--%c\\n”,c,(c-?a?+1)&+?a?); }

if(c>=?A?&&c<=?Z?) {

printf(“%c--%c\\n”,c,(c-?A?+1)&+?A?); } else

printf(“输入数据有误!\\n”); }

9编写程序,根据输入的百分制分数,按五分制的成绩输出。

把百分制改成5分制 /* 使用else if */ #include void main() { int score;

printf(\请输入百分制成绩(0~100):

\\n\ scanf(\ if(score>=90)

printf(\百分制成绩%d转换成五分制成绩是5\\n\ else if(score>=80)

printf(\百分制成绩%d转换成五分

制成绩是4\\n\ else if(score>=60)

printf(\百分制成绩%d转换成五分

制成绩是3\\n\ else

printf(\百分制成绩%d转换成五分

制成绩是2\\n\}

/* 使用switch */ #include void main() { int score,k;

printf(\请输入百分制成绩(0~100):\\n\

scanf(\k=score/10; switch(k) {

case 10:case 9:printf(\百分制成绩%d转换成五分制成绩是5\\n\case 8:printf(\百分制成绩%d转换成五分制成绩是4\\n\

case 7:case 6:printf(\百分制成绩%d转换成五分制成绩是3\\n\case 5:case 4:case 3:case 2:case 1:case 0: printf(\百分制成绩%d转换成五分制成绩是2\\n\}

}

循环结构

1、输入一行字符,分别统计其中英文字母、

2 / 8

空格、数字和其他字符的个数 #include

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<='9')

c++;

else if(a==' ')

e++;

else

d++;

}

printf(\字母%d个\\n\

printf(\数字%d个\\n\

printf(\空格%d个\\n\

printf(\符号%d个\\n\

} 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) { 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(“最大公约数=%d\\n”,m); t=bei(a,b,m);

printf(“最小公倍数=%d\\n”,t); } 3.

1?111(?1)n?12?3?4?????n的

值并输出。

结束条件为

1?10?5n

#include \ #include \ void 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\ }

4.编写程序,输入一个正整数,计算并显示该整数的各位数字之和。

例如,整型数1987的各位数字之和是

1+9+8+7,等于25. #include void main() { int i,sum,k;

printf(\请输入一个正整数:\ scanf(\ sum=0; while(i!=0) { k=i; sum=sum+k; i=i/10;

}

printf(\

}

5.计算歌手得分:去掉一个最高分,去掉一

3 / 8

个最低分,

取剩余成绩的平均分。编写程序输入一个歌手的若干

成绩,以-1作为输入结束标记,计算歌手的最后得分。 #include void main()

{ int x,min,max,n=0,sum=0;

printf(\请输入若干歌手的成绩,以-1作为输入结束标记\\n\scanf(\max=min=x; while(x!=-1)

{ if(min>x)

min=x; if(max

scanf(\

} if(n==0)

printf(\错误!用户没有输入成绩!\\n\else if(n>2)

printf(\去掉一个最高分%d、去掉一个最低分%d,歌手的最后得分是:%d\\n\else

printf(\输入成绩个数小于3,歌手的最后得分是:%d\\n\

}

6.输出所有的水仙花数。水仙花数是一个3位正整数,

它的三个数字的立方和等于该数本身。例

如:153 = 13 + 53 +33

#include void main() { int i,j,k,n=100; while(n<1000) { i=n/100; j=n0/10; k=n;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf(\ n++; } }

7.编写程序列出斐波那契(Fibonacci)数列的前20项。

斐波那契数列源自一个有趣的问题:一对小兔,一个月后长成中兔

,第三个月长成大兔,长成大兔以后每个月生一对小兔。第20个月有多少对兔子? #include \ void main() { int a,b,j,f;

a=1;b=1; printf(\ for( j=3;j<=20; j++) {

f=a+b; a=b; b=f;

printf(\ if

(j%5==0)

printf(\ }

}

8.编写程序求a+aa+aaa+....其中a是一个数字。例如:3+33+333+3333+33333

(此时n为5)。要求a和n从键盘输入,输

出格式:3+33+333+3333+33333=37035 #include void main() { int a,n,x,i,sum;

printf(\输入a和n的值:\ scanf(\ sum=a; x=a;

printf(\ for(i=2;i<=n;i++) { x=x*10+a; printf(\ sum+=x;

}

printf(\

}

9.假设数列中的每一项都比前一项大一个常量。假设第一项为a,

并且两个相邻项之间的差为d。编写程序提示输入数列的前两项,

以及需要计算的项数k。利用循环语句输出数列的前k项, 并计算前k项的和。 #include void main()

{ int a1,a2,d,k,i,sum;

4 / 8

printf(\请输入数列的前两项:\ scanf(\

printf(\请输入需要计算的项数:\ scanf(\ d=a2-a1; sum=a1;

printf(\

项数列分别是:

\\n%d\\t\ for(i=2;i<=k;i++) { a2=a1+d; printf(\ sum=sum+a2; a1=a2;

}

printf(\

%d

是:%d\\n\

}

10. 编写程序输出下列图形: 1 22 333 4444 55555 666666

7777777 88888888 999999999

#include \ void main() {

int i,j; for (i=1;i<=9;i++) { for (j=1;j<=10-i;j++) printf(\

for (j=1;j<=i;j++) printf(\

printf(\

} }

11.若口袋里放12个球,3个红的,3个白的,6个黑的,

从中任取8个,编写程序列出所有可能的取法。

#include \ void main() {

,大班每人2个,中班每人3个,小班每人4个,

正好分掉100个。编写程序求幼儿园共有多少个小朋友。 #include void main()

{ int t,r; if(v>u) {

t=u;u=v;v=t;} while((r=u%v)!=0) { u=v;v=r; } int red,white,black;

{ int x,y,z; for (red=0;red<=3;red++) for (white=0;white<=3;white++) for (black=0;black<=6;black++) if (red+white+black==8)

printf(\%d,white %d,black %d\red,white,black); }

12.请为“百鸡问题”编写程序。百鸡问题:“鸡翁一,值钱五;鸡母一,

值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁,母,雏各几只”。 #include 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\}

}

13.幼儿园有大,中,小3个班的小朋友。分西瓜时,大班3人1个,

中班4人1个,小班5人1个,正好分掉10个;分苹果时

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\}

14.求3到100之间的所有素数。 #include \ 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(\ }

printf(\ }

模块化程序设计

1.定义两个函数分别求两个整数的最大公约数和最小公倍数,

并在主函数中输入两个整数以后调用该函数。编写主函数调用该函数。 int hcf(int u,int v)

5 / 8

return(v); }

int lcd(int u,int v,int h) { return(u*v/h); }

#include void main() {

int u,v,h,l;

printf(\输入两个正整数按照格式a,b:\scanf(\ h=hcf(u,v);

printf(\ 最大公约数 =%d\\n\

l=lcd(u,v,h);

printf(\ 最小公倍数 =%d\\n\

}

2.函数间的参数传递。 #include \

void fail_swap(int a,int b); void main() { int i,j;

i=2;j=4; printf(\call

i=%d,j=%d\\n\ fail_swap (i,j);

printf(\ }

void fail_swap(int x,int y)

本文来源:https://www.bwwdw.com/article/g9lh.html

Top