信息学奥赛辅导:C语言复习题(一)
第1~3章练习题
一、选择题
1、一个C语言程序总是从____
A、主过程开始执行
B、主函数开始执行
C、子程序开始执行
D、主程序开始执行
2、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为_
A、4
B、16
C、32
D、52
3、下面四个选项中,均是C语言关键字的选项是____
A、auto enum include
B、switch typedef continue
C、signed union scanf
D、if struct type
4、下面四个选项中,均是合法整型常量的选项是____
A、160 -0xffff 011
B、-0xcdf 01a 0xe
C、-01 986,012 0668
D、-0x48a 2e5 0x
5、下面四个选项中,均是合法浮点数的选项是___
A、+1e+1 5e-9.4 03e2
B、-.60 12e-4 -8e5
C、123e 1.2e-.4 +2e-1
D、-e3 .8e-4 5.e-0
A、'\'' '\\' '\n'
B、'\' '\017' '\"'
C、'\018' '\f' 'xab'
D、'\\0' '\101' 'xlf'
7、下面正确的字符常量是____
A、'\X17'
B、'\80'
C、'\\'
D、"\n"
8、下面四个选项中,均是正确的八进制数和十六进制数的选项是____
A、-10 0x8f -011
B、0abc -017 0xc
C、010 -0x11 0xf1
D、0a12 -0x123 -0xa
9、下面四个选项中,均是正确的数值常量或字符常量的选项是____
A、0.0 0f 8.9e '&'
B、"a" 3.9E-2.5 1e1 '\"'
C、'3' 011 0xFF00 0a
D、+001 0xabcd 2e2 50.
10、若有代数式,则正确的C语言表达式是____
A、2*ln(x)*cos(x)/3*x
B、2*ln(x)*cos(x)/(3*x)
C、2*log(x)*cos(x)/3*x
D、2*log(x)*cos(x)/(3*x)
11、若有说明语句:char ch1='\065';char ch2="2";char ch3='2';则:ch1中____,ch2中____,ch3中____
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、字符个数不确定,说明不正确
12、若有运算符:>、*=、?:、%、sizeof,则将它们按运算的优先级排列的正确次序为(由低至高)____
A、*=→?:→%→>→sizeof
B、?:→*=→>→%→sizeof
13、若有以下类型说明语句:char a;int b;float c;double d;
则表达式a*b+d-c的结果类型为____
A、float
B、char
C、int
D、double
14、若有变量说明:int a=0,b=0,c=0;,以下符合C语言语法的赋值表达式是____
A、a=9+b+c=a+9
B、a=9+b;c=a+9;
C、a=(9+b,b++)
D、a=9+b++=a+7
15、已知字母A的ASCII码为(65)10,变量ch1为字符型,则执行语句
ch1='A'+'6'-'3';后,ch1中的值为____
A、D
B、68
C、一个不确定的值
D、C
16、以下运算符中优先级最高的运算符是____
A、&&
B、++
C、?:
D、!=
17、若有定义:int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是___
A、2.500000
B、2.7500000
C、3.500000
D、0.000000
18、sizeof(float)是____
A、双精度型表达式
B、一个整型表达式
C、一个函数调用
D、一个不合法的表达式
19、设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是____
A、y=(y*100+0.5)/100.0
B、x=y*100+0.5,y=x/100.0
C、y=y*100+0.5/100.0
D、y=(y/100+0.5)*100.0
20、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是____
A、0~255
B、0~65535
C、-32768~+32767
D、-256~+255
21、若有以下定义,则能得到值为3的表达式是____(int m=7,n=12)
A、n%=(m%=5)
B、n%=(m-m%5)
C、n%=m-m%5
D、(n%=m)-(m%=5)
22、若有说明:int a=1,b=2,c=3,d=4;则表达式a
A、4
B、3
C、2
D、1
23、若x为int类型,则逗号表达式(x=4*5,x*5),x+25的结果是___,x的值是___
A、20
B、100
C、表达式不正确
D、45
24、putchar函数可以向终端输出一个____
A、整型变量值
B、实型变量值
C、字符串
D、字符或字符型变量值
25、若有以下变量说明和数据的输入方式,则正确的输入语句为('└─┘'代表空格)____
变量说明:float x1,x2;
数据的输入方式:4.52<回车>
3.5<回车>
A、scanf("%f,%f",&x1,&x2);
B、scanf("%f%f",&x1,&x2);
C、scanf("%3.2f└─┘%2.1f",&x1,&x2);
D、scanf("%3.2f%2.1f",&x1,&x2);
26、若运行以下程序时,从键盘输入25,13,10<回车>,则输出结果为___
main( )
{
int a1,a2,a3;
scanf("%d%d%d",&a1,&a2,&a3);
printf("a1+a2+a3=%d\n",a1+a2+a3);
}
A、a1+a2+a3=48
B、a1+a2+a3=25
B、a1+a2+a3=10D、不确定值
27、已知a、b、c为int类型变量,若有输入语句:
scanf("a=%db=%dc=%d",&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是____
A、132<回车>
B、a=1b=3c=2<回车>
C、1<回车>3<回车>2<回车>
D、a=1<回车>b=3<回车>c=2<回车>
28、以下能正确定义整型变量x、y和z并为其赋初值5的语句是____
A、int x=y=z=5;
B、int x,y,z=5;
C、int x=5,y=5,z=5;
D、x=5,y=5,z=5;
29、执行下面程序段后,x的值是____
int x;
printf("%d\n",(x=3*5,x+5));30、下面程序段的输出结果是____
int a=023;
printf("%d\n",--a);
A、23
B、17
C、18
D、24
31、已知ch是字符型变量,则不正确的赋值语句是____
A、ch=5+9;
B、ch='\0';
C、ch='7'+'9';
D、ch='a+b';
32、设x,y是float型变量,则不正确的赋值语句是____
A、++x;
B、y=int(5);
C、x*=y+1;
D、x=y=0;
33、设有说明:double b=0.5,c=1.5;int a=10;
则正确使用了C语言库函数的赋值语句是____
A、c=asin(c)+fabs(a);
B、b=log10(b)+pow(b);
C、c=sqrt(b-c);
D、a=(int)(atan2((double)a,b)+exp(b-0.2));
34、以下程序段的输出结果是____
int i=1,j=4,k=2;
float x=5.5,y=9.0,z;
z=(i+j)/k+sqrt((double)y)*1.2/k+x;
printf("%f\n",z);
A、9.800000
B、9.300000
C、8.500000
D、8.000000
35、若a为int类型变量,则执行以下程序段后a的值为____
a=5;
a*=a/=a++;
A、2
B、1
C、40
D、3
36、若a和b均为int型变量,则执行以下程序断后x的输出是____
x=15;y=15;
printf("%d\n",x%=(y%=2));
A、0B、1C、6C、12
37、若x为unsigned int类型变量,则执行以下程序段后x的值是____x=65535;
printf("%d\n",x);
A、65535
B、1
C、无定值
D、-1
38、以下语句的执行结果是____
printf("%d\n",NULL);
A、1
B、0
C、-1无定值
39、若x为int类型变量,则执行以下程序段后的输出结果是____
x=0xDEF;
printf("%4d,%4o,%4x\n",x,x,x);
A、3567,6757,def
B、3567,6757,xdef
C、3567,06757,0xdef
D、3567,6757,0def
40、若a、b、c均为int型变量,则执行以下程序段后的输出结果为____b=(a=10,a+5,c=10);
printf("a=%d,b=%d,c=%d\n",a,b,c);
c=(a=10,b=5,a+b);
printf("a=%d,b=%d,c=%d\n",a,b,c);
A、a=10,b=15,c=10
B、a=10,b=10,c=10
a=10,b=5,c=10 a=10,b=5,c=10
C、a=10,b=10,c=10
D、a=10,b=10,c=10
a=10,b=5,c=15a=10,b=5,c=5
41、若a1、a2、a3、a4均为char类型变量,则执行以下程序段后的输出结果为____
a1='1';a2='2';a3='3';a4='4';
printf("%1c\n",a1);
printf("%2c\n",a2);
printf("%3c\n",a3);
printf("%4c\n",a4);
A、1
B、1
C、1
D、输出格式的描述符不正确
2 2 02
3 3 003
4 4 0004
42、执行语句printf("The program's name is c:\\tools\book.txt");后的输出是____
B、The program's name is c:\tools book.txt
C、The program's name is c:\\tools book.txt
D、The program's name is c:\toolook.txt
43、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:1234+123+12+1,正确的输入形式应当是____
scanf("%4d+%3d+%2d+%1d",&a,&b,&c,&d);
printf("%4d+%3d+%2d+%1d",a, b, c, d);
A、1234123121<回车>
B、1234123412341234<回车>
C、1234+1234+1234+1234<回车>
D、1234+123+12+1<回车>
44、设c1、c2均是char类型变量,则以下不正确的函数调用是____
A、scanf("c1=%cc2=%c",&c1,&c2);
B、getchar( )
C、putchar(c2);
D、putchar(c1,c2)
45、逻辑运算符两侧运算对象的数据____
A、只能是0或1
B、只能是0或非0正数
C、只能是整型或字符型数据
D、可以是任何类型的数据
46、判断char型变量c1是否为大写字母的正确表达式是____
A、'A'<=c1<='Z'
B、(c1>='A')&(c1<='Z')
C、(c1>='A')&&(c1<='Z')
D、('A'<=c1) AND ('Z'>=c1)
47、执行以下程序段后的a值是___,b的值是___,c的值是___
int a=5,b=6,c=1,x=2,y=3,z=4;
A、0B、6C、1D、5
48、设i、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是_
A、'i'&&'j'
B、i<=j
C、i||j+k&&j-k
D、!((i 49、设ch是char类型变量,其值是A,则以下表达式的值是____ ch=(ch>='A'&&ch<='Z')?(ch+32):ch A、Z B、A C、a D、z 50、若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是____ A、num%2==1 B、!(num%2==0) C、!(num%2) D、num%2 二、填空题 1、C源程序的基本单位是____。 2、一个C语句中至少应包含一个____。 3、在C语言中,输入操作可以由库函数____完成,输出操作可以由库函数____完成。 4、若x是int型变量,且x=6,则表达式x%2+(x+1)%2的值为____。 5、若a、b、c均是int型变量,则执行表达式c=(a=5)-(b=2)+a后,c的值为____。 6、若有定义:int y=7;float x=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为____。 7、若采用十进制数的表示形式,则077为___,0111为___,0x29为___,0xab为___。 8、设x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c的结果类型为____。 9、若有说明int x=10,y=20;请写出下面各printf语句对应的输出结果。 ①printf("%3d\n",x+y);____ ②printf("%3o\n",x*y);____ ③printf("%3o\n",x%y);____ ④printf("%3x\n",(x%y,x-y,x+y));____ 10、设有以下变量说明: int a=5,b=10; float x=3.5,y=10.8; char c1='A',c2='B'; 请根据以下输出格式和结果,完成printf语句中的填空。 ①a=5,b=10,x+y=14.3 printf("________",_____); ②x-y=-7.3└─┘a-b=-5 printf("________",_____); ③c1='A' or 65(ASCII) └─┘c2='B' or 66(ASCII) printf("________",_____); 11、若有说明: int a=123; double c=-123.45678; 请写出以下各printf语句的输出结果。 ①printf("%.3f%.3e%lf\n",b,b,c);_____ ②printf("%8.3f%8.3e%g\n",b,b,c);_____ ③printf("%u%-10.3f%-10.3e\n",a,b,c);___ 12、若a1和a2都是double型变量,且a1的初值为3.0,a2的初值为2.0,则表达式pow(a2,fabs(a1))的值为____。 13、假设变量x和y均为整型,以下语句可以不借助任何变量把x、y中的值进行交换。 请填空。 x+=__;y=x-__;x-=__; 14、已有定义int m;float n,k;char ch1,ch2;,为使m=3, n=6.5, k=12.6, ch1='a', ch2='A',对应的scanf语句是___________________,输入数据的方式是___________。 15、已有定义int a,b;float k;,为将-10赋给a,将12赋给b,410.34赋给k;则对应以下scanf语句的数据输入形式是________。 scanf("%o%x%e",&a,&b,&k); 16、在C语言中,&作为双目运算符时表示的是___,而作为单目运算符时表示的是__。 17、设x、y、z均为int型变量,且x=3, y=-4, z=5,请写出下面每个表达式对应的结果。 ①、(x&&y)==(x||z)____ ②、!(x>y)+(y!=z)||(x+y)&&(y-z) ____ ③、x++-y+(++z)____ 18、设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。 ①、x或y中有一个小于z __________________ ②、x、y和z中只有两个为负数 __________________ ③、y是奇数 __________________ 19、以下程序的输出结果为____ main( ) { int x,y,z=246; x=z/100%9; y=(-1)&&(-1); printf("%d,%d\n",x,y); } 第4章练习题 一、选择题 51、以下正确的if语句是____ A、if (n>0) printf("%f",n) printf("%f",-n); B、if (n>0) { n=n+m;printf("%f",n);} else printf("%f",-n); C、if (n>0) { n=n+m;printf("%f",n);}; else printf("%f",-n); D、if (n>0) { n=n+m;printf("%f",n) }; else printf("%f",-n); 52、以下程序____ main( ) { int x1=3, x2=0, x3=0; if(x1=x2+x3) printf("* * * *"); else printf("# # # #");} A、输出:* * * * B、输出:# # # # C、存在语法错误 D、无输出结果 53、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与__ A、缩排位置相同的if配对 B、其之前最近且不带else的if配对 C、其之前最近的if配对 D、第一个if配对 54、若w、x、y、z、k均为int类型变量,则执行下面语句后的k的值是____ w=1;x=2;y=3;z=4; k=(w k=(k k=(k A、1 B、2 C、3 D、4 55、下面程序段所表示的数学函数关系是____ x=-1; if (a!=0) if (a>0) x=1; else x=0; A、-1 (a<0) B、1 (a<0) 1 (a>0) 0 (a>0) C、0 (a<0) D、-1 (a<0) x= -1 (a=0)x= 1 (a=0) 1 (a>0) 0 (a>0) 56、以下关于switch语句和break语句的描述中正确的是____ A、在switch语句中必须使用break语句 B、break语句只能用于switch语句体中 C、break语句只能用于循环语句中 D、在switch语句中使用break语句或continue语句的作用相同 57、设有说明:int a=1,b=0;则执行以下语句后的输出结果是____ switch(a) { case 1: switch(b) { case 0: printf("** 0 **\n");break; case 1: printf("** 1 **\n");break; } case 2: printf("** 2 **\n");break; } A、** 0 ** B、** 0 ** ** 2 ** C、** 0 ** D、switch语句中存在语法错误 ** 1 ** ** 2 ** 58、设有程序段____ int x=10; while (x=0) x=x-1; A、while循环执行10次 B、循环是无限循环 C、循环体语句一次也不执行 D、循环体语句只执行一次 59、语句while (!y)中的表达式!y 等价于____ A、y==0 B、y!=1 C、y!=0 D、y==1 60、以下关于do-while循环不正确的描述是___ A、d0-while的循环体至少执行一次 B、do-while循环由do开始,用while结束,在while (表达式)后面不能写分号 C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作 D、do-while的循环体可以是复合语句 61、设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____ for (y=100;x!=y;++x,y++) printf("****\n"); A、循环体只执行一次 B、是无限循环 C、循环体一次都不执行 D、for语句中存在语法错误 62、以下程序段中的do-while循环____ m=-1; do { m=m*m; }while(!m); A、是死循环 B、执行二次 C、执行一次 D、有语法错误 63、以下关于for循环的正确描述是____ A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判断表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 64、语句for (表达式1;;表达式3)等价于____ A、for (表达式1;0 ;表达式3) B、for (表达式1;1 ;表达式3) C、for (表达式1;表达式1;表达式3) D、for (表达式1;表达式3;表达式3) 65、若k为整型变量,则以下for循环的执行次数是____ for (k=2;k==0;) printf("%d",k--); A、无限次 B、0次 C、1次 D、2次 66、以下程序段的执行结果是____ int x=-3; do { printf("%d\n", x++); }while(!x); A、-3 D、-3 B、-2 -2 C、陷入死循环-1 67、执行以下程序段后,y的值是____,x的值是____ int x=1, y=10; do { y-=x; x++; }while(y--<0); A、9 B、8 C、-2 D、2 E、4 F、3 68、执行以下程序段后a的值是____,b的值是____ int a, b; for (b=1,a=1;b<=50;b++) { if (a>=10) break; if (a%2==1) { a+=5; continue; } a-=3;} A、10 B、6 C、7 D、8 E、4 69、以下程序段的执行结果是____ int a, b; for (a=1;a<5;a+=2) { for (b=1;b<5;b++) printf("%2d",a*b); if (b==5) printf("\n"); } A、1 2 3 4 B、1 2 3 4 D、2 3 4 3 6 9 12 6 9 12 15 6 9 12 C、2 3 4 6 9 12 10 15 20 70、以下程序段中是死循环的是____ A、int n=1; B、int n=1; while (!n) do { n--; n++;}while(n); C、int n=1; D、for (n=5;n<1;) ; do { n++; }while(n); 71、下面程序的运行结果是____ main( ) { int m=0; while (m<=2) { m++; printf("%d\n", m); } } A、1 B、1 2 C、1 D、1 2 2 3 3 4 72、以下能正确计算1×2×3×…×10的程序段是____ A、do B、do { k=1;n=1;{ k=1;n=0; n=n*k;n=n*k; k++;k++; }while(k<=10);}while(k<=10); C、k=1;n=1; D、k=1;n=0; do do { n=n*k;{ n=n*k; k++;k++; }while(k<=10);}while(k<=10); 73、下面程序的功能是计算1至10之间的奇数之和以及偶数之和。请选择填空。 main( ) { int x, y, z, k; x=z=0; for (k=0;k<=10;k+=2) { x+=k; ________; z+=y; printf("偶数之和= %d\n", x); printf("奇数之和=%d\n", ________); } ①、A、y=k-- B、y=k+1 C、y=k++ D、y=k-1 ②、A、z-10 B、z C、z-11 D、z-y 74、下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。(提示:只要算出1000!中含有因数5的个数即可。) for (m=0,n=5;n<=1000;n+=5) { t=n; while (________) { m++;t=t/5;} } A、t%5 B、t=t%5==0 C、t%5==0 D、t%5!=0 75、若有以下程序段: for (m=1;m<=100;m++) { scanf("%d", &y); if (y<0) continue; printf("%3d", m);} 正确的描述是____ A、当y<0时整个循环结束 B、y>=0时什么也不输出 C、printf函数永远也不执行 D、最多允许输出100个非负整数 76、以下程序段等价于____ for (k=100;k<=200;k++) { if (k%3==0) continue; printf("%4d", k); } A、for (k=100;(k%3)&&k<=200;k++) printf("%4d", k); B、for (k=100;(k%3)||k<=200;k++) printf("%4d", k); C、for (k=100;k<=200;k++) if (k%3!=0) printf("%4d", k); D、for (k=100;k<=200;k++) { if (k%3) printf("%4d", k); else continue; break; } 二、填空题 20、以下程序的功能是:输入三个整数n1、n2、n3,按从大到小的顺序进行输出。请填空。 main( ) { int n1, n2, n3, temp; scanf("%d%d%d", &n1, &n2, &n3); if (______) { temp=n2;n2=n3;n3=temp;} if (______) { temp=n1;n1=n2;n2=temp;} printf("%d, %d, %d\n", n1, n2, n3); } 21、以下程序的功能是:输入一个小写字母,按字母排列顺序后移5个位置后输出(如把'a'变为'f', 'w'变成'b')。请填空。 #include "stdio.h" main( ) { char c1; if (c1>='a' && c1<='u') ______; else if (c1>='v' && c1<='z') ______; putchar(c1); } 22、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。请填空。 main( ) { char ch1; scanf("%c", ch1); if (________________) ch1=ch1+32; else if (ch1>='a' && ch1<='z') ________; printf("%c", ch1); } 23、阅读下面的程序并回答问题。 main( ) { int m, n, x, y; m=1; n=1; if (x>0) m=m+1; if (x>y) n=m+n; else if (x==y) n=5; else n=2*m; printf("m=%d, n=%d", m, n);} 问题:为了使输出n=4,x的输入值应当为______,y的输入值应当为____。 24、以下程序的功能是:根据输入的三条边的值判断是否能组成三角形,若能组成则输出三角形的面积和三角形的类型。请填空。 #include "math.h" main( ) { float a1, a2, a3; float s, area; scanf("%f%f%f", &a1, &a2, &a3); { s=(a1+a2+a3)/2; area=sqrt(s*(s-a1)*(s-a2)*(s-a3)); printf("%f", area); if (______________) printf("等边三角形"); else if (_________________) printf("等腰三角形"); else if ((a1*a1+a2*a2==a3*a3) || (a1*a1+a3*a3==a2*a2) || (a2*a2+a3*a3==a1*a1)) printf("直角三角形"); else printf("一般三角形"); } else printf("不能组成三角形"); } 25、以下程序的功能是判断输入的年份是否是闰年。请填空。 main( ) { int year, yes; scanf("%d", &year); if (year%400==0) year=1; else if (__________________) yes=1; else ____; if (yes) printf("%d is", year); else printf("%d is not", year); printf(" a leap year.\n"); } 26、以下程序段根据输入的截止日期(年:yend,月:mend,日:dend)和出生日期(byear,bmonth,bday),计算出实际年龄。请填空。 …… int yend, mend, bend, byear, bmonth, bday, age; age=yend-byear; if (mend____bmonth) age--; age--; …… 27、如果运行以下程序段时输入字符“t”,则程序段的运行结果是____ main( ) { char c1; scanf("%c", &c1); c1=(c1>='A' && c1<='Z') ? (c1+32) : c1; c1=(c1>='a' && c1<='z') ? (c1-32) : c1; printf("%c",c1); } 28、以下程序的功能是找出x、y、z三个数中的最小值。请填空。 main( ) { int x=4, y=5, z=8; int u, v; u=x v=u printf("%d", v); } 29、若运行以下程序时,输入下面指定数据,则运行结果为______ #include main( ) { int ch; while ((ch=getchar( ))!='\n') { switch(ch-'1') { case 0: case 1: putchar(ch+3); case 2: putchar(ch+3);break; case 3: putchar(ch+3); default: putchar(ch+1);break; } } printf("\n"); } 输入数据(从第一列开始): 1234<回车> 30、将以下嵌套的if语句改写成对应的switch语句,使其完成相同的功能。请填空。(假设mark的取值在1至100之间。) if 语句: if (mark<60) k=1; else if (mark<70) k=2; else if (mark<80) k=3; else if (mark<90) k=4; else if (mark<=100) k=5; switch语句: switch(______) { ______k=1;break; case 6 : k=2;break; case 7 : k=3;break; case 8 : k=4;break; ____k=5; } 31、将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段,请填空。 含有switch语句的程序段: int s, t, m; t=(int)(s/10); switch( t ) {case 10: m=5;break; case 9: m=4;break; case 8: m=3;break; case 7: m=2;break; case 6: m=1;break; default: m=0; } 含有非嵌套if语句的程序段: int s, m;if ((s<100) && (s>=90)) m=4; if ((s<90) && (s>=80)) m=3; if ((s<80) && (s>=70)) m=2; if ((s<70) && (s>=60)) m=1; if (______) ________; 32、用switch语句实现以下数学关系,请填空。 -1 (x<0) y= 0 (x=0) 1 (x>0) switch(x<0) { case 1: y=-1;____ case 0: switch(x==0) { case 1: y=0;____ ____y=1; } } 33、将以下含有switch语句的程序段改写成对应的含有嵌套if语句的程序段, 请填空。 含有switch语句的程序段: int s, t, m; t=(int)(s/10); switch( t ) {case 10: m=5;break; case 9: m=4;break; case 8: m=3;break; case 7: m=2;break; case 6: m=1;break; default: m=0; } 含有嵌套if语句的程序段: int s, m; if (____) m=0; else if (s<70) m=1; else if (s<80) m=2; else if (s<90) m=3; else if (s<100) m=4; 34、设x和y均为int类型变量,则以下for循环中的scanf语句最多可执行的次数是____ for (x=0, y=0;y!=123 && x<3;x++) scanf("%d", &y); 35、设a、b、c均是int类型变量,则执行以下for循环后,c的值为____ for (a=1, b=5;a<=b;a++) c=a+b; 36、以下程序的运行结果为____ main( ) { int j=5; while (j<=15) if (++j % 2!=1) continue; else printf("%d ", j ); printf("\n"); } 37、设ch1为char类型变量,若从键盘上由第一列输入以下数据:right?<回车> 则以下三个程序段的输出结果分别是_____,____,____。 ①、c=getchar( ); while (c!='?') { putchar(c);c=getchar( );} ②、while ((c=getchar( ))!='?') putchar(++c); ③、while (putchar(getchar( ))!='?') ; 38、下面程序段的功能是统计从键盘输入的字符中的数字字符个数,用换行符'\n'结束循环,请填空。 int n=0, c; c=getchar( ) ; while (____) { if (____) n++; c=getchar( ); } 39、以下do-while语句中循环体的执行次数是____ a=10;b=0; { b+=2;a-=2+b; }while(a>=0); 40、以下程序段的运行结果是____ x=2; do { printf("*");x--; }while(!x==0); 41、下面程序段是找出整数的所有因子,请填空。 scanf("%d", &x); for ( ;____;) { if (x%i == 0) printf("%3d", i ); i++; } 42、设鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。 for (x=1;x<=29;x++) { y=30-x; if (________) printf("%d, %d\n", x, y);} 43、若用以下形式表示for循环语句: 循环体语句 则执行语句for (i=0;i<3;i++) printf("*");时,表达式1执行____次,表达式3执行____次。 44、下面程序的功能是计算1-3+5-7+……-99+101的值,请填空。 main( ) { int i, t=1, s=0; for (i=1;i<=101;i+=2) { ____;s=s+t;____;} printf("%d\n",s); } 45、以下程序的功能是求出下面算式中的X、Y、Z的值,请填空。 算式:XYZ +YZZ 532 main( ) { int x, y, z, k, result=532; for (x=1;x<10;x++) for (y=1;y<10;y++) for (z=__;___;z++) { k=(______)+(100*y+10*z+z); printf("X=%d, Y=%d, Z=%d\n",x,y,z); } } 46、下面程序的功能是求1000以内的所有完全数,请填空。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数。) main( ) { int a, i, m; for (z=1;a<=1000;a++) { for (____;i<=a/2;i++) if (!(a%i)) ____; if (m==a) printf("%4d", a); } } 47、下面程序的运行结果是____ #include "stdio.h" main( ) { int i, j;