1、 printf(“%d,%d,%d”,a,b,c);A1,2,0B2,1,0C1,2,1D2,1,1a=1,b=2,c=2(1)表达式ac 122 1 2 1条件成立,则执行循环体,结果为:a=2,b=1,c=1(2)表达式ac 211 0 1 1条件成立,则执行循环体,结果为:a=1,b=2,c=0(3)表达式a0 1 0 0条件不成立,循环结束。6.在下图中,阴影部分区域可用表达式_来表示。 X a b cA(x=b)&(x=c)B(x=a)|(b=xC(x=c) D(x(b=b) & (x = c) (x= c)7.下列程序段输出结果为 _。int x = -3, y = 2; if(x
2、y); x = -x; if(x8.对于循环while(!e) 语句,!e等价于_。Ae=0Be!=0Ce=1;De!=1!ee=0e!e=1e为01e 为非00/19.循环 for(i=0, j=5; +i!=-j; ) printf(“%d %d”, i, j); 将执行_。A6次B3次C0次D无限次(1)i=0, j=5: +i 1 , -j 4, i=1,j=4, 1 != 4成立;打印;i=1, j=4;(2)i=1,j=4: +I 2 , -j 3, i=2,j=3, 2 != 3成立;i=2, j=3;(3)i=2,j=3: +I 3, -j 2, I = 3, j=2, 3 !
3、= 2成立;i=3,j=2;(4)10.下列程序段执行后s值为_。 int i=5, s=0; do if (i%2) continue; else s+=i; while (-i);A15B9C6D以上均不是(1)I=5,s=0: i%2 5%2 1成立:continue;-i 4, i=4;(2)I=4,s=0: i%2 4%2 0不成立:s=0+4=4;-i 3, i=3(3)I=3,s=4: i%2 3%2 1成立:-i 2, i=2(4)I=2,s=4: i%2 2%2 0不成立:s=4+2=6; -i 1,i=1(5)I=1,s=6: i%2 1%2 1成立:-i 0试题二、填空题
4、(每小题2分,共20分)1.表达式 1+4/5+157+4%5+(8,10) 的值为 _。1+(4/5)+157+4%5+(8,10) 1+0+157+4%5+(8,10) 1+15 167+4+(8,10)11+(8,10)11+1021 12.表达式 !5 的值为 _。5 !(!5) !0 1 3.表达式 (101)&4 的值为_。10: 00001010101: 00010100(101): 111010114: 00000100- 00000000 即 04.假设有定义:int x=10;则表达式 0=9 的值为 _。0=9 (0=x)=10) =9 1 = 9 15.下列 for循环
5、语句将输出: 0 1 2 0 1 2 0 1 2. for( i=1; i=9; i+ ) printf(%2d, _);【解答】 (i-1)%36.对于定义: int m=5, y=2; 当计算表达式y+=y-=m*=y 后,y的值为_。y+=y-=m*=y y += (y -= (m *=y)先计算m*=y: 由于m=5, y=2, 所以:m=m*y=5*2 10再计算y-=10: 由于y=2,所以:y = y-10=2-10 -8最后计算y += -8: 由于y=-8,所以:y = y+(-8)=(-8)+(-8) -167.对于char c; 若已知其值为小写字母, 则将其转换为相应大
6、写字母的表达式为_。c-a+A8.下列语句的输出结果为_。printf(%d#%x#, 027, 27);23#1b#9.已知字符a的ASCII码为97,则下列语句的输出结果为_。%c#%d#,98,c);b#99#10.下列程序段将输出_。unsigned char x=255,y=1;switch(!x) case 0: printf(*0*#);break;case 1:switch(y) case 0:*1*# case 1:*2*# default:*3*# *2*#*3*#试题三、程序阅读题(每小题6分,共30分)1.下列程序将输出_。 #include void swap(int
7、 x, int y) int t;t=x; x=y; y=t;return;void main(void)int a=3, b=2; swap(a, b);%d#%d#, a, b);3#2#注:尽管在函数swap()里,形参x和y的值发生了交换,但根据函数参数的传递原则“实参向形参单向传值(即x向a赋值,y向b赋值),形参的改变不影响实参”,实参变量a和b的值未发生交换!2.下列程序将输出_。# include int s; int f(int m) static int k=0; for(; k=m; k+) s+; return s;void main(void ) int s=1;s=
8、f(2)+f(2);, s, f(20); return;【解答】输出结果为:6#21#(1)全局变量s的初始值为0; (2)在f函数中,s是全局变量有效,而在main函数中,s是局部变量有效; (3)在f函数中,k是静态变量,每次函数f调用结束后,其内存单元和值仍然保留。3.若输入:1273 ,以下程序的输出结果是_。#include 0) m=m*10+n%10; n/=10;printf(“%d”, m);【解答】输出结果是:37214.若输入 -6+15*3/5= , 以下程序的输出结果是_。 void main() int m=0, sum=0; char c, oldc=+; do
9、 c=getchar(); if(c0) m=10*m+c - else if(oldc=)sum += m; else sum -= m; m=0; oldc=c;%d#, sum); while(c!【解答】0#-6#9#6#1#程序的意思:对输入的字符串扫描,若碰到数字字符序列,求出相应的整数值m;若碰到其它字符若字符是+号,则将m值加入到sum中去;若字符不是+号,则将从sum中减去m值。5.若输入:how are you? int word; char ch; word=0; while(ch=getchar()!?) if(ch= ) word=0; else if(word=0)
10、 word=1; if(cha) ch=ch-A putchar(ch); 【解答】How Are You该程序思路:碰到一个新单词,则将该单词首字母从小写改为大写,其它字符原样输出。提示:可借鉴统计单词个数程序的算法。试题四、程序填空题(每空2分,共30分)1输入正整数n,计算s = 1/1! + 1/2! + 1/3! + + 1/n!的值。void main( void)int j, k, n;double f, s;scanf(%d, & (1) ; s=0.0 for (k=1 ;=n; k+) (2) ; f=1.0 for(j=1; (3) ; j+) j=k (4) ; f=f
11、*j s=s+1.0/f;sum=%fn, (5) ); s return;2输入一个整数,统计该数的位数。如:输入12534,输出5;输入-99,输出2;输入0,输出1。 int count=0, number; scanf(“%d”, (6) ); &number if (number 0) number = (7) ; -numberdo number = (8) ; number/10 count+; while ( (9) ); number!printf(“%dn”, count);3下面程序验证“哥德巴赫猜想”:寻找3到1000间满足“偶数=素数1+素数2”(如10=3+7)的所
12、有偶数。素数指只能被1和自身整除的正整数,如2,3,17等;1不是素数。 void main(void) int i, j; (10) ; /*prime()函数声明*/ int prime(int n) for (i=3 ;=500; i+) for (j=2; ; j+) if ( (11) ) prime(j)=1 & prime(2*i-j)=1 printf(“%d = %d +%dn”, 2*i, j, 2*i-j); /*若2*i为两个素数之和 */ break; (12) ; return int prime(int n) /* 判断n是否为素数:是返回1,不是返回0 */int i; if (n=1) return (13) ; 0for (i=2;=n/2; if ( (14) ) n%i=0return 0; return (15) ;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1