C语言第三次模拟练习题部分解答_第1页
C语言第三次模拟练习题部分解答_第2页
C语言第三次模拟练习题部分解答_第3页
C语言第三次模拟练习题部分解答_第4页
C语言第三次模拟练习题部分解答_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单项选择号:13334若有如下语句int x=3;do printf (,%dn/,, x-=2) ;while(! (-x);则上面程序段oA、输出的是1B、输出的是1和-2C、输出的是3和0D、是死循环答案:B解答:循环变量x初值为3. Do-while是先执行循环体,后判断条件。若条 件为假,循环结束。条件为真,执行循环体。第一次循环:循环体printf (%dn, x-二2);是输出x的值。而x-二2等价于x=x2二3-2 =lo 所以输出l条件是自增表达式与逻辑非表达式的综合。先计算自增表达式- -x的值是x自减1后的值,为0.自增变量x的值是0.条件! (- -x) = !0=l.

2、 为真。继续执行循环体。第二次循环循环体printf (,%dn, x-=2):是输出x的值。而x-二2等价于x=x2 =0-2 =-2o 所以输出-2条件是白增表达式与逻辑非表达式的综合。先计算-x.白增表达式-x的值是洎减1后的值,为-3.自增变量x的值是-3.条件! (- -x) = ! (-3)二0.为假。循环结束。总结:输出 l-2号:13353 下面程斥的功能是在输入的一批正整数中求出最大者,输入0结束循环。请 选择填空。ttincludeOvoid main () int a, max=0;scanf (”%d, &a);while () if(maxa) max=a;scanf

3、&a);pri ntfmax);A、a=0B、aC、!a=lD、!a答案:B解答:题目中说输入0结束循环。它的另一个意思是输入的变量a的值不是 0时就执行循环或者说a为真就执行循环,为假就结束循环。所以条件是 a!=0 或 a答案A a=0 a为假,即等于0时,0=0,为真,执行循环体。为真, 即非0,则a二二0的逻辑值为假。结束循环。总结:a为假执行循环体。 为真,结束循环。答案C ! a二二1非运算符!优先级高于比较运算符二二。所以先计算! a,然后再判断是否和1相等。a为假时,! a值是真,与1恒等,逻辑值 为为真时,! a值是假,与1不等,逻辑值为0.所以它的含义是a为假执 行循环体。

4、为真,结束循环。答案D。! a的含义,是a为假执行循环体。为真,结束循环。号:13357与下面程序段等价的是Ofor (n二100;n=200;n+) if(n%30) continue;printf (”4d, n);A、for (n=100;n=200;n+) if(n%3=0) printf(4d,n);B、for(n=100;(n%3)&n=200;n+) printf(%4d, n);C for (n=100; (n%3) | n=200;n+) printf (,%4d, n);D、 for(n=100;n=200;n+) if (n%3) printf (%4d, n);else

5、 continue;答案:D解答:程序的含义:1) n=100;n=200;n+o 含义是循环变量n的初值为100,终值为200,步 长为1.2) if(n%3=0) continue;含义是若n是3的倍数,则结束此次循环,进 入下一次循环。即后面的printfC%4r,n);不执行。直接执行步长加 1.3) 若n不是3的倍数,则执行printfC%4r,n);,即输出n的值。且值占四 列,右对齐。输出100-200中所有不是3的倍数的数。看四个答案:1) 答案A if(n%3=0)printf(%4d,n);的含义是n是3的倍数,则输出。 与源程序的题意不符。2) 答案B与关系表达式,两边的

6、逻辑值均为1,结果才是真。若有一个 为假,结果为假。(n%3)&n=200 n%3为真,同时n=200为真,则执 行循环体,即输出变量n .n%3为真,说明n不是3的倍数时为真。(n%3)&n200,则条件为假,结束循环。所以,当n是3的倍数时,就结束。即n二102时,102%3二0,为假,就结束循环。不 符合题意。3) 答案C (n%3) |n=200;是或关系表达式。有一个为真,结果为真。 全为假,结果为假。n%3 n是3的倍数时,如n二102, n%3为假,但n二102二200 为真。所以102也要输出。不符合题意。4) 答案D if (n%3) printf (%4d, n) ; el

7、se continue;n%3为真时,输出。为假时,结束本次循环,步长加1,进入下一次循环。符合题意。号:13367下面程序的运行结果是OttincludeOvoid main () int x, i ;for(i=l;i=100;i+) x=i;辻(+x%2=0)if(+x%3=0)辻(+x%7=0)printfx);A、2668 B、 3981 C、 4284 D、 2870答案:D 解答:i=l;i=100;i+循环变量i初值为1,终值为100,步长为1 if(+x%2=0) 辻(+x%3=0)if(+x%7=0) 是分支嵌套。+x自增表达式的值是x+1.所以+x%2=0等价于(x+1)

8、 %2=0 x=x+l 以此类推+x%3=0等价于(x+1) %3=0 x=x+l:+x%7=0等价于(x+1) %7=0 x=x+l;总结:x二i;若x+1能被2整除,x+2能被3整除,x+3能被7整除,则输出x的 值。最后输出的x值是能被7整除的。1-100中能被7整除的数有100/7=14个,个位数的只有7。四个答案中第 一个数字没有7。所以确定是有两个整数满足这样的条件。所以首先排除AB。因为答案A的26和答案B的39均不是7的倍数。其他的题 目依次代入法解决即可。答案C 42%7=0 41%3!=0所以不符合答案 D 28%7=0 27%3=0 26%2=0 正确70%7=0 69%

9、3=0 68%2=0 正确号:13344以下程序段运行的结果是Ofor(y=l;y10;) y=(x=3*y, x+1), x-1);printf (x二d, y二d,x, y);A x=15,y=14 B、x二12, y二13C、x=27, y=27 D、x=y=27答案:A解答:y=l ;y10;循环变量y初值为1,终值为9, y值为10时结束循环。步长省 略。若循环体中循环变量没有变化,则是死循环,没有结果。所以循环体 中循环变化一定要发生变化。循环体:y二(x二3*y,x+l),x-l);将一个逗号嵌套表达式赋值给循环变量y。 逗号表达式的规则是从左往右依次对每个表达式进行计算,结果是

10、最后一 个表达式的结果。先计算(x二3*y, x+1) o第一次循环时,y二1,所以(x二3, 4), 结果是 2;计算(x=3*y, x+l),x-l), (x=3,4),x-l) = (4, 2)=2;所以 y 二 2. 210为真,进行第二次循环。y= (x=3*y, x+1), x-1) = ( (x=6, 7) , 5)=5 510为真,进行第三次循环。y=(x=3*y, x+l),x-l)= ( (x=15, 16),14) =14, 1410为假,结束循环。此 时x=15, y=14 ,答案选A号:13351有以下程序void main () int i=0, s=0;do if

11、 (i%2) i+; continue: i+;s+二 i; whil e(i7);执行后输出结果是A、 21 B、 12 C、 16 D、 28答案:C解答:if (i%2) i+; continue; 若i不是2的倍数,则i自增1,然后结束 此次循环,即后面的语句i+; s+二i;不执行,直接判断条件i7的真假。 若i是2的倍数,贝五自增1,同时进行累加求和。il;n)s=s+l/n;printf (%n, s);程序运行后输出结果错误,导致错误结果的程序行是OA、printf (%n,s);B、for(n=10;nl;n-)C、s=s+l/n;D、s=;答案:C解答:/是算术运算符的除。

12、它的规则是两端是整数,结果为整数。若有一个为小数,结果为小数。int n;n为整型。1/n结果为0.所以s二s+1/n;结果永远为0.答案选CA、printf(%n,s);输出结果占6列,保留四位小数。号:13355下面程序的运行结果是tiincludeOvoid main () int i, b, k=0;for(i=l;i=5;i+) b二i%2;while(b=l) k+;b-;A、&一1B、8, -2C、3,0D、3,-1答案:C 解答:找规律快速解法:b=i%2 i是偶数,b二0;i是奇数,b=l;while (b=l) k+;b-; b是 1,执行循环体,k自增 1, b自减 1。

13、b是0, 不执行循环体。综合:i是奇数,则k自增1, b自减1。因为每次循环,b值都要更新,所以 b值只可能是0.i的范围是1-5,奇数有1,3,5,所以增3次,k初值为0,白增3次,值为3. 所以选择C中规中矩的传统解法:1. 第一次循环:i=l, i=5为真,执行循环体。循环体有两个语句;语句 b=i%2=l%2=l语句while循环中,条件b=l为真,所以执行循环体:k=l, b二0;条件0二二b 为假,结束循环。执行步长i+, i等于22. 第二次循环:i=2,iU5为真。语句 b=i%2=2%2二0语句while循环中,条件0=1为假,结束循环。执行步长i+, i等于3条件0二二b条

14、件0二二b3. 第三次循环:i=3, i=5为真,执行循环体。循环体有两个语句;语句 b=i%2=3%2=l语句while循环中,条件b=l为真,所以执行循环体:22,b二0;为假,结束循环。执行步长i+, i等于44. 第二次循环:U4,iV5为真。语句 b=i%2=4%2=0语句while循环中,条件0二二1为假,结束循环。执行步长i+, i等于55. 第五次循环:i=5, i=5为真,执行循环体。循环体有两个语句;语句 b=i%2=5%2=l语句while循环中,条件b=l为真,所以执行循环体:23,b二0;为假,结束循环。执行步长i+, i等于66. 第六次循环:i二6,65为假,结束

15、循环。号:13369以下程序的输出结果是Ovoid main () int a=0, i;for(i=l;i5;i+) switch (i) case 0:case 3:a+=2:case 1:case 2:a+=3;default:a+=5;printf(”%dn,a);A、10 B、20 C、31 D、13答案:C解答:此题的考点是switch中没有break语句。switch语句,遇到break终止执行switch语句,或者遇到右大括号,结束执行switch语句。i二 1,执行case 1, case2, default三个语句,a二0+3二3 a二3+5二8;i=2,执行case 2,

16、 default两个语句,a=8+3=lla=ll+5=16;i二3,执行case 3, case 1, case 2, default语句;a二 16+2=18;a二18+3=21;a二21+5二26;i=4,执行default语句,a=26+5=31i=5,结束循环。所以答案是C号:13356下面程序段Ofor(t=l;t=100;t+) scanf&x);if(x=0时什么也不输出B、最多允许输出100个非负整数C、printf函数永远也不执行D、当x0时整个循环结束答案:B辻(x0) continue; x0时,不执行后面的Printf语句。进行下一次循环。即x小于0,则不输出。x大于

17、等于0,才输出。号:13358下面程序的运行结果是Ottincludevoid main () int i;for(i=l;i=5;i+) if(i%2) printf(*);else continue;printfCr);printf ($);A、#*#*#*$B、 *#*#$C、 *#*#*#$D、 #*#*答案:C解答:if(i%2) printf (*);else continue;printf(#);i不是2的倍数,即i是奇数,输出字符*,输出字符i是2的倍数,即i是偶数,则什么也不输出,进行下一次的循环。1-5中,奇数有1,3,5,所以要重复3次输出和。循环结束后,执行后面的pri

18、ntf($);语句,输出字符$ o号:13332以下能正确计算1 X2X3X. X 10的程序段是A、doi=l: s=l; s二s*i; i+; while(i=10);B、i=l; s=0; dos=s*i;i+;while(i=10);C、i=l; s=l; dos=s*i; i+; while(i=10);D、doi=l:s=0; s二s*i; i+; wh订e(i=10);答案:C解答:答案A 每次循环,i和s都重新赋初值为1,所以i永远小于10,是死循环。答案B s初值为二s*i的值永远为0.答案D 每次循环,i的值重新赋值为1, s重新赋初值为0,所以i永远小 于10,是死循环。

19、题号:13370以下程序的输出结果是Ottinclude void main ()int i=0, a=0;while(i20)for(;)if(i%10)=0) break;else i一一;i+二11;a+二 i;A、 32 B、 21 C、 11 D、 33答案:A解答:第一次循环:i=0 i20 为真;执行嵌套的for循环:0%10二二0为真,执行break语句,结束嵌套的for循环;执行i+=ll后,i二11 ;a二a+i=0+ll二11;第二次循环:i=ll Y20 为真执行嵌套的for循环:11%10=1=0为假,执行else后的i后,i二10;10%10=0=0为真;执行bre

20、ak语句,结束嵌套的for循环;执行i+二11后,i=21;a=a+i=ll+21=32;第三次循环i=21 2K20为假,结束循环;题号:13354下面程序的运行结果是OttincludeOvoid main ()int i;for(i=l;i=5;i+)switch(i%5)case O:printf (*);break;case 1:printf(#);defauIt:printf(n);case 2:printf (&);A、ft&*B、#&*C、#&*D、#&解答:答案:i%5=l%5=l执彳j casel, default, case2 ,输出tt&i%5=2%5=2执彳了case

21、2 ,输出&i%5=3%5=3执行default, case2输出enter&i%5=4%5=4执行default, case2输出&i%5=5%5=0执行case2 输出*总结:#&*题号:13361若运行以下程序时,从键盘输入ADescriptor(表尔回车),则下面程序的运行结果是OttincludeOvoid main ()char c;int vO二0, vl二0, v2=0;do switch(cgetchar () case :case :case e : case E : case 1 :case 1 :caseA、vO二& vl=4, v2=8B、vO=ll, vl=4, v

22、2=llC、v0=12, vl=4, v2=12D、v0=7, vl=4, v2=7答案:Cgetchar ()是从键盘读入一个字符,赋值给字符变量c。它是无参函数。题目不完整,需要记住答案。否则,若考试中有这样的题目,直接选择 答案即可。题号:13359下面程序的功能是计算正数2345的各位数字平方和,请选择填空。ttincludeOvoid main () int n, sum二0;n二2345;do sum二sum+;n=n/10;while(n);printf(sum二d, sum);A、n%10B、(n/10)*(n/10) C、n/10 D、(n%10) * (n%10)答案:D

23、解答:任意正整数n, n%10是正整数的最低位,即个位数;n/10是正整数的值减 去个位数的值后再除以10.第一次循环:sum 二 sum+ (n%10) * (n%10)=0+ (2345%10) * (2345%10) =5*5=25 n=n/10 =2345/10=234第二次循环:sum=sum+(n%10)* (n%10)二25+(234%10)*(234%10)二25+4*4二25+16二41n=n/10 =234/10=23第三次循环:sum=sum+(n%10)*(n%10)二41+(23%10)*(23%10) =41+3*3=41+9=50n=n/10 =23/10=2第四

24、次循环:sum= sum+(n%10)*(n%10)=50+(2%10)*(2%10)=50+2*2=50+4=54n=n/10 =2/10=0条件为假,结束循环。题号:13366下面程序的运行结果是tiincludeO void main () int i, j, x=0;for(i=0;i2;i+) x卄;for(j=0;j=3;j+) if(j%2) continue;x+;x+;printf(x二%dn,x);A、x=4B、 x=8 C、 x=12 D、 x=6答案:B解答:for循环的嵌套。嵌套循环中,一般外循环执行1次,内循环执行若干次;分析:外循环中i=0, 1时,认2为真。即循

25、环体执行2次。内循环,j二0,1, 2, 3 时,执行循环体。当j是偶数时,汁|增,j是奇数时,x+语句不会被执行。 即20,2时,x会分别自增1。即内循环中,x会自增两次。而题目最会是输出x的值。 所以i二0时,x+;完成一次自增;x=l;执行 嵌套的for循环,x自增2,值为3;执行x+语句,值为4; i二1时,又重 复一次。所以x值为8.题号:13368下面程序的运行结果是OttincludeOvoid main () int a, b;for (a=l, b=l;a=20) break;if (b%3=l) b+=3;continue;b+二 5;printf (”%dn, a);A、

26、8B、 7C 9D、 10答案:A解答:循环结束的条件是a=101或者b=20;b%3=l的含义是b是3的倍数+1时,b白增3后,执行continue,即结束本次循环,执行a+;a=l, b=l第一次循环:b=20为假b%3=l.所以b%3=l为真,b二4. a二2;第二次循环:4=20为假,4%3=1b%3=l 为真,b=7. a=3;第三次循环:7=20为假,7%3=1b%3=l 为真,b=4;第四次循环:10=20 为假,10%3=1b%3=l 为真,b=5;第五次循环:13=20 为假,13%3=1b%3=l 为真,b=6;第六次循环:16=20 为假,16%3=1b%3=l 为真,b

27、=7;第七次循环:19=20 为假,19%3=1b%3=l 为真,b=8;第八次循环:22=20 为真,执彳亍break,结束for循环。执行for语句后面的语句,输出a值。通过分析得知,初值使b%3-l为真时,b+二5语句永远不会被执行。题号:13364下面的功能是计算1至10之间奇数之和及偶数之和,请选择填空。ttincludeOvoid main () int a, b, c, i ;a=c=0;for(i=0;i=10;i+=2) a+二i;c+=b;printf (偶数之和=%dnz,, a);printf (奇数之和=%dn”, cll);A、b=i-B、b=i+lC、b=i-lD

28、、b二i卄答案:B解答:是累加法的应用。变量a存储偶数的累加和。变量c存储奇数的累加和。所 以初值均设为0.i 二0;a二a+i二0+0二0;b=i+l=l;c=c+b=0+l=l;i=2;a二a+i二0+2二2;b二i+1二3;c=c+b=2+3=4;i=4;a二a+i二2+4=6;b=i+l=5;c=c+b=4+5=9;i 二6;a二a+i二6+6二12;b=i+l=7;c二c+b=9+7二16;i 二8;a二a+i二12+8=20;b二i+1二9;c=c+b=l6+9=25;i=10a二a+i二20+10二30;b=i+l=ll;c二c+b二25+11二36;a存储的是0-10之间所有偶

29、数的和。即0+2+4+6+8+10二30 c存储的是0T1Z间所有偶数的和。即1+3+5+7+9+11二36. c-11则存储的是0-10之间所有奇数的和。题号:13365 下面程序的功能是求算式xyz+yzz二532中x, y, z的值(其中xyz和yzz分别表 示一个三位数),请选择填空。#includevoid main () int x, y, z, i, result=532;for (x=l;x+y;x=i+) i二x;D、while(1)x+;答案:C解答:for语句,若第二个表达式省略,说明条件恒为真,是死循环;答案AB是for循环,第二个表达式省略了。所以是死循环;答案D w

30、hile语句,条件为1,说明条件恒为真,是死循环;答案C y二0, x二1;执行x+y后,11为假,y二1.所以循环体一次也不执彳亍。题号:13347执行语句for(i=l;i+4;);后变量i的值是A、5B、不定C、4D、3答案:A解答:自增表达式i+的值是I, H增变量i的值是i+1;i二1执行i+4后,14为真,i=2;i=2执行i+4后,24为真,i=3;i=3执行i+4后,34为真,i=4;i 二4执行i+4后,44为假,i二5;结束循环。题号:13337下面程序运行结果是Ottinclude void main ()int a=l, b=10;do b-二a; a+; while(

31、b0);printf (a=%d, b二dn, a, b);A、a=4, b=9 B、a=l, b=-l C、a=3, b=ll D、a二2, b二8答案:D解答:循环体:b-=a 等价于b=b-a=10-l=9; a+=a=la=a+l=2条件:b=b=9 b二b-l二9-1二8b0即90为假。结束循环。结论:a=2, b=8;题号:13336 假定a和b为int型变量,有以下程序段a=l ;b=10;do b-=a;a+;while (b-0);执行后b的值为。A、 9 B、 -2 C、 8 D、 -1答案:C要区分开自增表达式的值,H增变量的值;白减表达式的值,白减变量的值;自增变量的值

32、,不区分前缀后缀,一定要加1;自增表达式区分前缀后缀。+Ui+1i+=i;自减变量的值,不区分前缀后缀,一定要减1;自减表达式区分前缀后缀。一匸卜1 i-=i;循环体:b=b-a=10-l=9; a+=a=l; a=2;条件:b=9; b=8: 9100) break;C、int k=0; do+k;while(k=0):D、for(;答案:A解答:答案B i=100;执行i=i%100+l后,i=l, i永远不可能大于100.所以break;语句不会被执行。有while的条件是1,即恒为真。所以是死循环。答案C k初值为0;+k;使得k永远大于0.永远为真。所以是死循环。;题号:13341以下for循环的执行次数是ofor (x=0, y=0; (y=123)&(x4) ;x+);A、执行4次B、是无限循环C、循环次数不定D、执行3次答案:A解答:第一个表达式:x二0,y二0;是逗号表达式。这里是功能是给变量赋初值。(y二123)&(x4);是逻辑表达式。规则是两个表达式都为真,结果才为真。 若有一个为假,则逻辑值为假。左侧尸123是赋值表达式。逻辑值恒是真; 右侧x4是关系表达式。x+;表示步长为1。当x的值在0, 1,2,3时,x4为真。贝Ilj(y=123)&(x4); 为真。执行循环体。x=4时,结束循环。所以循环执行的次数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论