printf(“%d\\n”,z)
} 【2】
8 为了避免嵌套的if—else语句的二义性,C语言规定else总是与【在其之前未配对的最近的if 】组成配对关系。
9 已知int x=1,y;执行语句y=++x>5&&++x<10;后变量x的值是【2】。 10 以下程序段的输出结果是
int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a;
printf(\; 【a=10 b=30 c=10】
11 以下程序的输出结果是
main()
{ int a=0,b=1,c=0,d=20; if(a) d=d-10; else if(!b) if(!c) d=15; else d=25;
printf(\;
} 【d=20】
12 下面程序的输出结果为
main()
{ int a=1,b=0; switch(a)
{ case 1: switch (b)
{ case 0: printf(\; break; case 1: printf(\; break; }
case 2: printf(\; break; }
} 【**0****2**】
13 从键盘上输入\时,下面程序的输出是
#include
while((c=getchar())!=''\\n'') switch(c -''2'') { case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break; case 3: putchar(c+3);
default: putchar(c+2);break; }
printf(\;
} 【88898787】
14 将下列数学式改写成C语言的关系表达式或逻辑表达式A)a≠b或a<=c; 【a!=b||a<=c 】
B)|x|>=4;【x>=4||x<=-4】.
15 C语言中用【1】表示逻辑值“真”,用【0】表示逻辑值“假”。
16 以下程序用于判断a,b,c能否构成三角形,若能输出YES,若不能输出NO。当a,b,c输
入三角形三条边长时,确定a,b,c能构成三角形的条件是需要同时满足三条件:a+b>c,a+c>b,b+c>a。 请填空。 main() {
float a,b,c;
scanf(“%f%f%f”,&a,&b,&c);
if( ) printf(“YES\\n”);/*a,b,c能构成三角形*/ else printf(“NO\\n”);/*a,b,c不能构成三角形*/
} 【a+b>c&&a+c>b&&b+c>a】
17 以下程序的运行结果是
fun(int t[],int n) { int i,m;
if(n==1) return t[0]; else
if(n>=2) {m=fun(t,n-1); return m;} }
main() {
int a[]={11,4,6,3,8,2,3,5,9,2}; printf(“%d\\n”,fun(a,10));
} 【11】
18 C语言的 switch 语句中,case 后只能为常量或常量表达式 19有如下程序段:
int x =1, y=1 ; int m , n; m=n=1; switch (m)
{ case 0 : x=x*2; case 1: { switch (n)
{ case 1 : x=x*2; case 2 : y=y*2;break; case 3 : x++; } }
case 2 : x++;y++;
case 3 : x*=2;y*=2;break; default:x++;y++;
}
执行完成后,x和y 的值分别为: ( x=6 y=6)
20多分支选择可以用嵌套的if 语句和switch语句来实现。
21若从键盘输入58,则以下程序输出的结果是585858 。 main() { int a;
scanf(\
if(a>50) printf(\ if(a>40) printf(\ if(a>30) printf(\ }
22下列程序段的输出结果是passwarm。 int n=’c’; switch(n++)
{ default: printf(“error”);break;
case ‘a’:case ‘A’:case ‘b’:case ‘B’:printf(“good”);break; case ‘c’:case ‘C’:printf(“pass”); case ‘d’:case ‘D’:printf(“warn”); }
23以下两条if语句:
if(a<=b) x=1; else y=2;
if(a>b)) printf(\可合并成一条if语句是:
if(a<=b) printf(\
24 编程判断输入的正整数是否既是5又是7的整倍数。若是,输出yes,否则输出no。 25 设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),求N的值。 26 输入年份year和月month,求该月有多少天。判断是否为闰年,可用如下C语言表达式:year%4==0 && year0!=0 || year@0==0。若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。
27 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该 数本身。例如:153是一水仙花数,因为153=1^3+5^3+3^3.
28 编写一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
第五章知识点
1 有程序段: int a;
for(scanf(“%d”,&a);!a; ) printf (“continue”);
则 for 语句中的 !a 等价于【a==0 】 2 有程序段:
int x,y,z;
x=20,y=40,z=60; while(x printf(“%d,%d,%d”,x,y,z); 则此程序执行的输出结果为【32,28,30】 3 有程序段: int j=0,k=0,a=0; while(j<2) { j++; a=a+1; k=0; while(k<=3) { k++; if(k%2!=0) continue; a=a+1; } a=a+1; } 执行完成后,a的值为【8 】 4 以下程序的输出结果是 main() { int num=0; while(num<=2) { num++; printf(“%d,”,num); } } 【 1,2,3,】 5 有程序段: (1) int n=1; do{ n=++n*5;} while(n=10); 则此循环的循环体 【 执行无限次】 (2) x=-1; do { x=x*x;} while(!x); 语句执行次数是: 【循环执行一次】 (3) int k=10; while (k=0) k--; 语句执行次数 【循环体语句一次也不执行】 (4) for(x=0,y=10;(y>0)&&(x<4);x++,y-- ) ;【循环执行4次】 6 以下程序的输出结果是 main() { int n=0; while(n++<=2); printf(“%d”,n); } 【4】 7 以下程序的输出结果是 main() { int i,j,m=0; for(i=1;i<15;i+=4) for(j=3;j<=19;j+=4) m++; printf(“%d”,m); } 【20】 8 以下程序的输出结果是 main() { int n=10; while(n>7) { n--; printf(“%d,”,n); } } 【9,8,7,】 9 以下程序的输出结果是 main() { int a=1,b=10; do{b-=a; a++;} while(b--<0); printf(“a=%d,b=%d”,a,b); } 【a=2,b=8】 10 已知int i=1; 执行语句while (i++<4) ;后,变量i的值为【5】 11下面程序的输出结果是 main() {int i; for(i=0;i<10;i++); printf(“%d”,i); } 【10】 12 下面程序的输出结果是 main() { int a=1,b=0; do { switch(a) { case 1: b=1;break; case 2: b=2;break; default : b=0; } b=a+b; }while(!b); printf(\; } 【a=1,b=2】