C语言程序设计的试题及答案(2)

2020-08-06 试题

  7. #include int main() { float x,y; scanf("%f",&x); switch((int)x/10) { case 0: y=1.0; printf("y=%f\n",y);break; case 1: y=2*x+1; printf("y=%f\n",y);break; case 2: y=3*x*x+2; printf("y=%f\n",y);break; default: printf("No definition.\n"); } return 0; } 输入:15.3<回车> 8. #include int main() { char ch1='A',ch2='B'; switch(ch1) { case 'A': switch(ch2) {

  case 'B': printf("Good!\n");break; case 'A': printf("Better!\n");break; } case 'B': printf("Best!\n"); break; } return 0; }

  9.

  #include void main() { float score; score = 100; if (score<60) else switch( ( int ) score / 10 ) { case 10: case 9: printf("A\n"); case 8: printf("B\n"); case 7: printf("C\n"); case 6: printf("D\n"); break; break;

  printf("E\n");

  default: printf("Error\n"); } }

  10. #include void main() { int i=0,a=2; if(i==0) printf(“**”); else

  printf(“$$”); printf(“*”); }

  11. #include void main() { int m=10,n=0,p=4,q=20; if (n) q=15-m; else q=25+m; else if (p) q=q+p; printf(“q=%d\n”,q); } if (m)

  12. #include void main() { int a=1,b=0; switch(a) { case 1: switch (b) { case 0: printf("**0**"); break; case 1:printf("**1**");break; } case 2: printf("**2**");break; }

  } 13. #include int main( ) { int a=2,b=7,c=5; switch (a>0){ case 1: switch (b<0){ case 1: printf("@"); break ; case 2: printf("!"); break ; } case 0: switch (c==5){ case 1: printf("*") ; break ; default : printf("#") ; break ; } default : printf("&"); } printf("\n"); return 0; }

  14. #include int main() { int a=0,b=1,c=0,d=20; if(!c) d=15;

  if(a) d=d-10; else d=25;

  else if (!b) printf("d=%d\n",d);

  return 0; } 15. #include int main() { int a=1; switch(a){ case 0: printf("**0**");break; case 1:printf("**1**");break; case 2:printf("**2**");break; } return 0; } 16. #include int main() { int x, y; scanf("%d",&x); y = x>12 ? x + 10 : x - 12; return 0; } 输入:12<回车> 17. #include int main() { float x, y; char op; double r; scanf("%c%f%f",&op,&x,&y); switch(op) { case '+': r = x + y; break; case '-': r = x - y; break; case '*': r = x * y; break; case '/': r = x / y; break; } printf("%.1f", r); return 0; } 输入:3.5<回车> 18. #include "stdio.h" void main( ) { int a=7; if(a>9 || a<10) a=a%3; printf("a=%d", a); }

  printf("%d\n", y);

  a=a/3;

  else

  19. #include void main() { int a=20; switch(a%3) case 0: printf("0"); case 1: printf("1"); case 2: printf("2"); default: printf("3"); } printf("4"); } 20. #include void main() { int a=2,b=5,c=8,t; if ( a < b ) { t = a; a = b; b = t; } if ( b < c ) { t = b; b = c; c = t; } if ( a < b ) { t = a; a = b; b = t; } printf( "%d,%d\n", a++, --c ); } 解答: 1. 运行结果: 9,7 2. a=1,b=3 3. ch1= F 4. 3,5 5. m=21 6. ch3=D 7. y=31.600000 8. Good! Best! 9. A B

  {

  C 10. *** 11. q=35 12. **0****2** 13. *& 14. d=20 15. **1** 16. 0 17. 0.6 18. a=2 19. 234 20. 8,1 三.补充程序 1. 根据输入字符的 ASCII 码来判别字符的类别。由 ASCII 码表可知 ASCII 值小于 32 的为控制 字 符。 在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母, 在“a”和“z”之 间为小写字母,其余则为其它字符。 #include"stdio.h" #include"string.h" int main() { char c; printf("input a character: "); _____________________________________________ if(c<32) printf("This is a control character\n"); _____________________________________________ printf("This is a digit\n"); else if _______________________________________ printf("This is a capital letter\n"); else if(c>='a'&&c<='z')

  printf("This is a small letter\n"); ____________________________________________ printf("This is an other character\n"); return 0; }

  2. 计算器程序。用户输入运算数和四则运算符, 输出计算结果. #include"stdio.h" int main() { float a,b; ____________________________________________; printf("input expression: a+(-,*,/)b \n"); scanf("%f%c%f",&a,&c,&b); switch(c) { case '+': printf("%f\n",a+b); ____________________________________________ case____________________________________________ printf("%f\n",a-b);break; case '*': printf("%f\n",a*b);break; case '/': ____________________________________________;break; default: printf("input error\n"); } return 0; }

  3. 输入三个整数,输出最大数和最小数(注:max 总是记录最大数, 而 min 总是记录最小数). #include"stdio.h" int main() { int a,b,c,max,min; printf("input three numbers: "); scanf("%d%d%d",&a,&b,&c); if(a>b) { _______________________________________ _______________________________________ } else {max=b;min=a;} ____________________________________________ max=c; if(min>c)

  _____________________________________ printf("max=%d\nmin=%d",max,min); return 0; } 4. #include"stdio.h" int main() { int a; printf("input integer number: "); scanf("%d",&a); _____________________________________________ { case 1:printf("Monday\n");break; _____________________________________________ printf("Tuesday\n"); break; case 3:printf("Wednesday\n");break; case 4:printf("Thursday\n");_____________________________________________ case 5:printf("Friday\n");break; case 6:printf("Saturday\n");break; case 7:printf("Sunday\n");break; _____________________________________________ printf("error\n"); } return 0; } 5. 判断 a>b、aB\n"); _____________________________________________ printf("A

  #include"stdio.h" int main ( ) { int x,c,m; float y; scanf(“%d”,&x); _________________________________________c=-1; c=_____________________________________________; switch (c) { case –1 : y=0 ; break ; case 0 : y=x ; break ; case 1 : y=10 ; break ; case 2 : case 3 : y=-0.5*x+20 ; _____________________________________________;

  else

  default : y=-2 ; } if (c!=2) printf (“y=%f”,y); _____________________________________________ printf(“error!”); return 0; } 7. 找出 x,y,z 三个数中的最小数,并判断该数是否等于 b。 #include"stdio.h" int main() { int x=4,y=5,z=8 ,b; int u,v; scanf("%d",&b); u = x

  8. 输入两个运算数 x,y 和一个运算符号 op, 输出该运算结果的值, 例如输入 3+5↙得到结果 8 . #include"stdio.h" int main ( ) { float x,y,r; char op ; scanf("%f,%c,%f",&x,&op,&y); switch (op) { case '+': r=x+y ; _____________________________________________; _____________________________________________ r=x-y ;break; case '*' :_____________________________________________;break; _____________________________________________ r=x/y; break; }

  printf("%f",r); return 0; }

  9. 根据输入字符的 ASCII 码来判别字符的类别。由 ASCII 码表可知 ASCII 值小于 32 的为控制 字 符。 在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母, 在“a”和“z”之 间为小写字母,其余则为其它字符。 #include"stdio.h" int main() { char c; printf("input a character: "); c=getchar(); _____________________________________________ printf("This is a control character\n"); if(c>='0'&&c<='9') printf("This is a digit\n"); _____________________________________________ printf("This is a capital letter\n"); _____________________________________________ printf("This is a small letter\n"); _____________________________________________ printf("This is an other character\n"); return 0; } 10. 找出 a,b,c 三个数中的最大数,并判断该数是否等于 x。 #include"stdio.h" int main() { int a=8,b=4,c=12,x ; int u,v; scanf(“%d”,&x); u = a

  解答: 1. c=getchar(); (c>='0'&&c<='9') (c>='A'&&c<='Z') else 2. char c; break; '-': printf("%f\n",a/b); 3. max=a; min=b; if(maxb) else if(a

  c=x/10; break; else 7. x:y; u:z; (v==b) else 8. break; case '-': r=x*y; case '/': 9. if(c<32) else if(c>='A'&&c<='Z') else if(c>='a'&&c<='z') else

  10. b:a c:u (v==x) else 四.改错题 解答: 五.编程一 1. 求分段函数

  的值, 输入 x 值,输出结果。 2. 从键盘上输入一个数 x,计算并输出下列分段函数 y 的值。

  3. 某运输公司运费计算时根据运输距离打折计算,折扣的计算方法如下:

  (其中,discount 表示折扣,S 表示运输距离) 。 编写一完整程序,输入运输距离,统计运费并输出。每公里的运费通过符号常量定义为 2 .5。 4. 编程输入一元二次方程的三个系数,求解一元二次方程的实根,无实根时不用求虚根, 给出相应提示信息即可。 5. 给定三条边,判断其是否能构成三角形,若能构成,判断其是等腰三角形、等边三角形 、直角三角形还是普通三角形。 6. 从键盘输入一个三角形的三条边,判断是否能组成三角形,若能组成三角形,则输出它 的面积。

  7. 从键盘输入一个百分制的学生成绩,输出其对应的分数等级,其中 90~100 为 A,80~ 89 为 B,70~79 为 C,60~69 为 D,60 以下为 E。 8. 编写一个程序,从键盘输入三个整数给 a,b,c,然后交换它们中的数,把 a 中原来的值 给 b,把 b 中原来的值给 c,把 c 中原来的值给 a。 9. 输入一个字符,判断其是否为英文字母,若是英文字母,则将其大小写进行转换,若不 是英文字母,则不变。 10. 给定三个整数型 x,y,z,输出三个数中的最大值和最小值。 解答: 1. #include "stdio.h" #include "math.h" void main() { float x,y; printf("input x\n"); scanf("%f",&x); if(x<0) y=1; else if(x<=5) y=2*x; else y=sqrt(x); printf("x=%5.1fy=%8.3f\n",x,y); } 2. #include "stdio.h" #include "math.h" void main() { float x,y; printf("input x\n"); scanf("%f",&x); if(x>20||x>1&&x<10) { printf("无定义\n"); return; } if(x<0) y=-x; else if(x<=1) y=sin(x)+x; else if(x>=10&&x<=20) y=x*x*x; printf("x=%5.1fy=%8.3f\n",x,y); } 3. #include "stdio.h"

  #include "math.h" #define price 2.5 void main() { float discount,cost,s; printf("input distance\n"); scanf("%f",&s); if(s<250) discount=0; else if(s<800) else

  discount=0.02; else if(s<1500)

  discount=0.05;

  discount=0.08; cost=s*(1-discount)*price; printf("distance=%5.1f;cost=%5.1f\n",s,cost); } 4. /*功能:求一元二次方程的解。*/ #include "math.h" #include "stdio.h" main() {float a,b,c,disc,x1,x2; scanf("%f,%f,%f", &a, &b, &c); disc=b*b-4*a*c; if (disc==0) printf("x1=x2=%7.2f\n", -b/(2*a)); /*输出两个相等的实根*/ else if (disc>0) { x1=(-b+sqrt(disc))/(2*a); /*求出两个不相等的实根*/ x2=(-b-sqrt(disc))/(2*a); printf("x1=%7.2f,x2=%7.2f\n", x1, x2); } else printf("无实根\n"); } 5. #include "stdio.h" void main() { float a,b,c; printf("输入三条边:\n"); scanf("%f%f%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { if(a==b&&b==c) printf("等边三角形\n"); else if(a==b||b==c||c==a) printf("等腰三角形\n"); else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a) printf("直角三角形\n"); } else

  printf("不能构成三角形 \n"); } 6. #include "stdio.h" #include "math.h" void main() { float a, b, c, s, area; printf("输入三条边:\n"); scanf("%f%f%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%7.2f\n",area); } else printf("不能构成三角形 \n"); } 7. #include void main() { int score; char d; printf("Input score\n"); scanf("%d",&score); if (score>100||score<0) { printf("data error!\n"); return; } switch(score/10) { case 10: case 9:d='A';break; case 8:d='B';break; case 7:d='C';break; case 6:d='D';break; default : d='E';break; } printf("score=%3ddengji=%c\n",score,d); } 8. #include void main() { int a,b,c,t; printf("Input a,b,c\n"); scanf("%d%d%d",&a,&b,&c); t=a;

  a=b; b=c; c=t; printf("a=%d;b=%d;c=%d;\n",a,b,c); } 9. #include void main() { char c1,c2; printf("Input a c1=getchar(); if(c1>='a'&&c1<='z') c2=c1+'A'-'a'; else if(c1>='A'&&c1<='Z') c2=c1+'a'-'A'; else c2=c1; } 10. #include void main() { int a,b,c,max,min; printf("Input a,b,c\n"); scanf("%d%d%d",&a,&b,&c); max=a;min=a; if(b>max) max=b; else if(bmax) max=c; else if(c

  letter: ");

  printf("原字符:%c 转换后为:%c\n",c1,c2);

  )、do-while 语句、(

  ) 。

  2. break 语句在 C 程序中只能出现在两种场合:一是用于( )语句中。

  )语句中,二是用于 (

  3. 以下程序段中的语句 printf(“***”)要执行 5 次,请在空白处填入合适的数 。 for( i=1;i<=( );i=i+2 ) printf(“***”); 4. 定义 int k=10;执行语句 while(k<20) k += 1 ; 后,k 的值为( 5. 在循环控制结构中 break 语句的作用是( 6. 在循环控制结构中 continue 语句的作用是:( )。 )。 )。

  7. 若已知 int a[5][5]; 并在运行过程中 a 数组已经赋值;要打印次对角线元素,在空白处 填入合适的值/表达式; for (i = 0; i<5; i++) for (j = ( ); j >=0; j--) printf("%5d", a[i][j]); 8. 执行完语句 sum = 0; for (i = 0; i < 10; i++) { if (i % 5 = = 0) sum += i; sum = ( ) 。 9. 在使用 while 语句中需要注意,为了防止“死循环”的发生,在循环体中一定要有( )语句。 10. do-while 语句中,判断循环条件在( ” ) ),执行循环体在 ( ) 。 (填“先” “后

  解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 二.阅读程序写结果 1. #include void main() { int number , digit; number = 1234; while ( number != 0 ) { digit = number%10 ;

  printf( "%d" , digit ) ; number = number / 10 ; } } 2. #include #define N 5 void main( ) { int i; for(i=1;i void main( ) { int i,s,x; s=0; x=15; if (x%i==0) printf("i=%d,s=%d\n",i,s); }

  for(i=1;i<=5;i++) s= s + i;

  4. #include void main() { int counter=1; while(counter <= 5) printf("%d \n", counter ); counter++; } } 5. #include int main() { int i,sum,m,a; sum=0; m=5; for(i=0;i<=3;i++) { scanf("%d",&a); if(a>m) sum+=a; } printf("sum=%d\n",sum); return 0; }

  {

  输入:2 10 8 3<回车>

  6. #include int main() { int i,j,k; for(i=1;i<=4;i++) { for (j=1;j<5-i;j++) printf(" "); for(k=1;k<=i;k++) printf("*"); printf("\n"); } return 0; } 7. #include int main() { int i,j; i=1; while(i<5) { for(j=1;j<2*i+1;j++) printf("%c",'#'); printf("\n"); i++; } return 0; } 8. #include int main() { int i=10,m=0,n=0; do { if(i%2!=0) m=m+i; else n=n+i; i--; }while(i>=0); printf("m=%d,n=%d\n",m,n); return 0; }

  9. #include void main() { int sum=0,n; scanf("%d",&n); while(n<=5) { sum+=n; n++; } printf("sum=%d",sum); } 输入:1<回车> 10. #include void main() { int i, j; for(i=2;i>=0;i--) { for(j=1;j<=i;j++) printf("*"); for(j=0;j<=2-i;j++) printf("!"); printf("\n"); } } 11. #include void main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>20) break; if(b%4==1) b=b+4; } b=b-5; } printf("a=%d\n",a); } 12. #include void main( )

  { continue;

  { char k; int i; for(i=1;i<3;i++) { scanf("%c",&k); switch(k) { case '0': printf("another\n"); case '1': printf("number\n"); } } } 输入:01<回车> 13. #include int main() { int i, s = 0; for(i = 1; i < 10; i++) { s += i * i; if(s > 10) break; } printf("i=%d, s=%d\n", i, s); return 0; } 14. #include void main() { char ch; while((ch=getchar())!='\n') { if (ch>='A'&&ch<='Z') ch=ch+32; ch=ch-32; } } 输入:ABCdef<回车>

  else if (ch>='a'&&ch<='z') printf("%c",ch);

  15. #include int main () { int a, b; for (a = 1, b = 1 ; a <= 100 ; a++)

  { if (b >= 9) break; if (b % 3 == 1) b += 3 ; continue ; } b -= 5; } printf("%d,%d\n", a, b); return 0; } {

  16. #include int main () { int i = 0,j = 0; while (i < 10) i++; while (j++ < 10) ; printf("i=%d,j=%d\n",i,j); return 0; } 17. #include "stdio.h" void main( ) { int i,j,t; for(i=1,j=10;i<3;i++,j--) t=i+j; t++; printf("%d,%d",j,t); } 18. #include "stdio.h" void main() { int i=10,j; do { j = i%2; i--; } while ( i> 4 ); } 19. #include "stdio.h" void main() { int i=7,j; while ( i> 2)

  printf( "%d",j );

  {

  j = i%2; i--; } printf( "%d",i ); }

  printf( "%d",j );

  20. #include void main() { int i,j,t=0; for(i=3;i>0;i--) for(j=0;j<4;j++) t+=j; printf("t=%d",t); } 解答: 1. 4321 2. 1 4 9 16 3. i=6,s=9 4. 1 2 3 4 5 5. sum=18 6. * ** *** ****

  7. ## #### ###### ########

  8. m=25,n=30 9. sum=15 10. **! *!! !!! 11. a=6 12. another number number 13. i=3, s=14 14. abcDEF 15. 4,10 16. i=10,j=11 17. 8,12 18. 010101 19. 101012 20. t=18 三.补充程序 1. 输出 100 以内能被 3 整除的数 #include"stdio.h" int main() { _____________________________________________; for(_________________________;n<=100; ________________________) { if (n%3!=0) ________________________ printf("%d ",n); } return 0; } 2. 输出 100 以内的素数。素数是只能被 1 和本身整除的数。为减少循环次数,只需对数 n

  用2 ~ 去除来判断该数是否素数。 #include"stdio.h" ________________________ int main() { int n,i,k; for(n=2;n<=100; ________________________) { k=sqrt(n); for(i=2;i<=k;

小学一年级语文上册复习试题 高中语文趣味文学知识竞赛试题