




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单项选择1. 题号:13334若有如下语句 int x=3; doprintf(%dn,x-=2);while(!(-x);则上面程序段_。A、输出的是1B、输出的是1和-2C、输出的是3和0D、是死循环答案:B解答:循环变量x初值为3. Do-while是先执行循环体,后判断条件。若条件为假,循环结束。条件为真,执行循环体。第一次循环:l 循环体printf(%dn,x-=2);是输出x的值。而x-=2 等价于x=x-2 = 3-2 =1。所以输出1l 条件是自增表达式与逻辑非表达式的综合。先计算- -x. 自增表达式- -x的值是x自减1后的值,为0.自增变量x的值是0. 条件!(- -x)=!0=1.为真。继续执行循环体。第二次循环l 循环体printf(%dn,x-=2);是输出x的值。而x-=2 等价于x=x-2 = 0-2 =-2。所以输出-2l 条件是自增表达式与逻辑非表达式的综合。先计算- -x. 自增表达式- -x的值是x自减1后的值,为-3.自增变量x的值是-3. 条件!(- -x)=!(-3)=0.为假。循环结束。总结:输出1-2 2. 题号:13353下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环。请选择填空。#includevoid main() int a,max=0; scanf(%d,&a); while(_) if(maxa) max=a; scanf(%d,&a); printf(%d,max);A、a=0B、aC、!a=1D、!a答案:B解答:题目中说输入0结束循环。它的另一个意思是输入的变量a的值不是0时就执行循环或者说a为真就执行循环,为假就结束循环。所以条件是a!=0或al 答案A a=0 a为假,即等于0时,0=0,为真,执行循环体。为真,即非0,则a=0的逻辑值为假。结束循环。总结:a为假执行循环体。为真,结束循环。l 答案C !a=1 非运算符!优先级高于比较运算符=。所以先计算!a,然后再判断是否和1相等。a为假时,!a值是真,与1恒等,逻辑值为1.a为真时,!a值是假,与1不等,逻辑值为0.所以它的含义是a为假执行循环体。为真,结束循环。l 答案D 。!a的含义,是a为假执行循环体。为真,结束循环。 3. 题号:13357与下面程序段等价的是_。for(n=100;n=200;n+) if(n%3=0) 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 continue; 答案:D解答:l 程序的含义:1) n=100;n=200;n+。 含义是循环变量n的初值为100,终值为200,步长为1.2) if(n%3=0) continue; 含义是若n是3的倍数,则结束此次循环,进入下一次循环。即后面的printf(%4d,n);不执行。直接执行步长加1.3) 若n不是3的倍数,则执行printf(%4d,n);,即输出n的值。且值占四列,右对齐。输出100-200中所有不是3的倍数的数。l 看四个答案:1) 答案A if(n%3=0) printf(%4d,n);的含义是n是3的倍数,则输出。与源程序的题意不符。2) 答案B 与关系表达式,两边的逻辑值均为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); else continue; n%3为真时,输出。为假时,结束本次循环,步长加1,进入下一次循环。符合题意。4. 题号:13367下面程序的运行结果是_。#includevoid main() int x,i; for(i=1;i=100;i+) x=i; if(+x%2=0) if(+x%3=0) if(+x%7=0) printf(%d,x); A、2668 B、3981 C、4284 D、2870答案:D解答:l i=1;i=100;i+ 循环变量i初值为1,终值为100,步长为1l if(+x%2=0) if(+x%3=0) if(+x%7=0) 是分支嵌套。+x自增表达式的值是x+1.所以 +x%2=0等价于(x+1)%2=0 x=x+1 以此类推 +x%3=0等价于(x+1)%3=0 x=x+1; +x%7=0等价于(x+1)%7=0 x=x+1;总结:x=i;若x+1能被2整除,x+2能被3整除,x+3能被7整除,则输出x的值。最后输出的x值是能被7整除的。l 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%3=0 68%2=0 正确5. 题号:13344以下程序段运行的结果是_。for(y=1;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=13 C、x=27,y=27 D、x=y=27答案:A解答:y=1;y10; 循环变量y初值为1,终值为9,y值为10时结束循环。步长省略。若循环体中循环变量没有变化,则是死循环,没有结果。所以循环体中循环变化一定要发生变化。循环体:y=(x=3*y,x+1),x-1);将一个逗号嵌套表达式赋值给循环变量y。逗号表达式的规则是从左往右依次对每个表达式进行计算,结果是最后一个表达式的结果。先计算(x=3*y,x+1)。第一次循环时,y=1,所以(x=3,4),结果是2;计算(x=3*y,x+1),x-1),((x=3,4),x-1)=(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+1),x-1)=((x=15,16),14)=14,1410为假,结束循环。此时x=15,y=14 ,答案选A6. 题号:13351有以下程序void main() int i=0,s=0; do if (i%2) i+; continue; i+; s+=i; while(i7); printf(%dn, s);执行后输出结果是_。A、21 B、12 C、16 D、28答案:C解答:if (i%2) i+; continue; 若i不是2的倍数,则i自增1,然后结束此次循环,即后面的语句i+; s+=i;不执行,直接判断条件i7的真假。若i是2的倍数,则i自增1,同时进行累加求和。i1;n-) s=s+1/n; printf(%6.4fn,s);程序运行后输出结果错误,导致错误结果的程序行是_。A、printf(%6.4fn,s);B、for(n=10;n1;n-)C、s=s+1/n;D、s=1.0;答案:C解答:/是算术运算符的除。它的规则是两端是整数,结果为整数。若有一个为小数,结果为小数。int n;n为整型。1/n结果为0. 所以s=s+1/n;结果永远为0.答案选CA、printf(%6.4fn,s); 输出结果占6列,保留四位小数。8. 题号:13355下面程序的运行结果是_。#includevoid main() int i,b,k=0; for(i=1;i=5;i+) b=i%2; while(b=1) k+;b-; printf(%d,%d,k,b);A、8,-1 B、8,-2 C、3,0 D、3,-1答案:C解答:找规律快速解法:b=i%2 i是偶数,b=0;i是奇数,b=1;while(b=1) k+;b-; b是1,执行循环体,k自增1,b自减1。b是0,不执行循环体。综合:i是奇数,则k自增1,b自减1。因为每次循环,b值都要更新,所以b值只可能是0.i的范围是1-5,奇数有1,3,5,所以k自增3次,k初值为0,自增3次,值为3.所以选择C中规中矩的传统解法:1. 第一次循环: i=1,i=5为真,执行循环体。循环体有两个语句;语句 b=i%2=1%2=1 语句 while循环中,条件b=1为真,所以执行循环体:k=1,b=0; 条件0=b为假,结束循环。 执行步长i+,i等于22. 第二次循环:i=2,i=5为真。语句 b=i%2=2%2=0 语句 while循环中,条件0=1为假,结束循环。 执行步长i+,i等于33. 第三次循环: i=3,i=5为真,执行循环体。循环体有两个语句;语句 b=i%2=3%2=1 语句 while循环中,条件b=1为真,所以执行循环体:k=2,b=0; 条件0=b为假,结束循环。 执行步长i+,i等于44. 第二次循环:i=4,i=5为真。语句 b=i%2=4%2=0 语句 while循环中,条件0=1为假,结束循环。 执行步长i+,i等于55. 第五次循环: i=5,i=5为真,执行循环体。循环体有两个语句;语句 b=i%2=5%2=1 语句 while循环中,条件b=1为真,所以执行循环体:k=3,b=0; 条件0=b为假,结束循环。 执行步长i+,i等于66. 第六次循环:i=6,65为假,结束循环。9. 题号:13369以下程序的输出结果是_。void main() int a=0,i; for(i=1;i5;i+) switch(i) case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; printf(%dn,a);A、10B、20C、31D、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,default两个语句,a=8+3=11 a=11+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 10. 题号:13356下面程序段_。for(t=1;t=100;t+) scanf(%d,&x); if(x=0时什么也不输出 B、最多允许输出100个非负整数C、printf 函数永远也不执行 D、当x0时整个循环结束答案:B解答: if(x0) continue; x0时,不执行后面的Printf语句。进行下一次循环。即x小于0,则不输出。x大于等于0,才输出。11. 题号:13358下面程序的运行结果是_。#include stdio.hvoid main() int i; for(i=1;i=5;i+) if(i%2) printf(*); else continue; printf(#); 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次输出*#。循环结束后,执行后面的printf($);语句,输出字符 $。12. 题号:13332以下能正确计算123.10的程序段是_。A、 doi=1; s=1; s=s*i; i+; while(i=10);B、i=1; s=0; dos=s*i; i+; while(i=10);C、i=1; s=1; dos=s*i; i+; while(i=10);D、 doi=1;s=0; s=s*i; i+; while(i=10);答案:C解答:答案A 每次循环,i和s都重新赋初值为1,所以i永远小于10,是死循环。答案B s初值为0.s=s*i的值永远为0.答案D 每次循环,i的值重新赋值为1,s重新赋初值为0,所以i永远小于10,是死循环。13. 题号:13370以下程序的输出结果是_。#include void main() int i=0,a=0; while(i20) for( ; ; ) if(i%10)=0) break; else i-; i+=11; a+=i; printf(%dn,a);A、32 B、21 C、11 D、33答案:A解答:第一次循环:l i=0 i20 为真; l 执行嵌套的for循环: 0%10=0为真,执行break语句,结束嵌套的for循环;l 执行i+=11后,i=11;a=a+i=0+11=11;第二次循环:l i=11 i20为真 l 执行嵌套的for循环: 11%10=1=0为假,执行else后的i后,i=10; 10%10=0=0为真;执行break语句,结束嵌套的for循环;l 执行i+=11后,i=21;a=a+i=11+21=32;第三次循环l i=21 2120为假,结束循环;14. 题号:13354下面程序的运行结果是_。#includevoid main() int i; for(i=1;i=5;i+) switch(i%5) case 0:printf(*);break; case 1:printf(#); default:printf(n); case 2:printf(&); A、#&*B、# & & & *C、#& &*D、#& *解答:答案:Ai=1 i%5=1%5=1 执行case1,default,case2 ,输出#&i=2 i%5=2%5=2 执行case2 ,输出&i=3 i%5=3%5=3 执行default,case2 输出&i=4 i%5=4%5=4 执行default,case2 输出&i=5 i%5=5%5=0 执行case2 输出*总结:#&*15. 题号:13361若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是_。#includevoid main() char c; int v0=0,v1=0,v2=0; do switch(c=getchar( ) case a:case A: case e:case E: case i:case I: caseA、v0=8,v1=4,v2=8B、v0=11,v1=4,v2=11C、v0=12,v1=4,v2=12D、v0=7,v1=4,v2=7答案:C解答:getchar()是从键盘读入一个字符,赋值给字符变量c。它是无参函数。 题目不完整,需要记住答案。否则,若考试中有这样的题目,直接选择答案即可。16. 题号:13359下面程序的功能是计算正数2345的各位数字平方和,请选择填空。#includevoid main() int n,sum=0; n=2345; do sum=sum+_; n=n/10; while(n); printf(sum=%d,sum);A、n%10 B、(n/10)*(n/10) C、n/10 D、(n%10)*(n%10)答案:D解答:任意正整数n,n%10是正整数的最低位,即个位数;n/10是正整数的值减去个位数的值后再除以10.第一次循环: sum=sum+ (n%10)*(n%10)=0+(2345%10)*(2345%10)=5*5=25n=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第四次循环: sum=sum+ (n%10)*(n%10)=50+(2%10)*(2%10)=50+2*2=50+4=54n=n/10 =2/10=0条件为假,结束循环。17. 题号:13366下面程序的运行结果是_。#includevoid 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=4 B、x=8 C、x=12 D、x=6答案:B解答:for循环的嵌套。嵌套循环中,一般外循环执行1次,内循环执行若干次;分析:外循环中i=0,1时,i2为真。即循环体执行2次。内循环,j=0,1,2,3时,执行循环体。当j是偶数时,x自增,j是奇数时,x+语句不会被执行。即j=0,2时,x会分别自增1。即内循环中,x会自增两次。而题目最会是输出x的值。 所以i=0时,x+;完成一次自增;x=1; 执行嵌套的for循环,x自增2,值为3;执行x+语句,值为4; i=1时,又重复一次。所以x值为8.18. 题号:13368下面程序的运行结果是_。#includevoid main() int a,b; for(a=1,b=1;a=20) break; if(b%3=1) b+=3;continue; b+=5; printf(%dn,a);A、8 B、7 C、9 D、10答案:A解答:循环结束的条件是a=101 或者b=20;b%3=1的含义是b是3的倍数+1时,b自增3后,执行continue,即结束本次循环,执行a+;a=1,b=1第一次循环: b=20为假 b%3=1.所以b%3=1为真,b=4. a=2;第二次循环: 4=20为假, 4%3=1 b%3=1为真,b=7. a=3;第三次循环: 7=20为假, 7%3=1 b%3=1为真,b=10.a=4;第四次循环: 10=20为假, 10%3=1 b%3=1为真,b=13.a=5;第五次循环: 13=20为假, 13%3=1 b%3=1为真,b=16.a=6;第六次循环: 16=20为假, 16%3=1 b%3=1为真,b=19.a=7;第七次循环: 19=20为假, 19%3=1 b%3=1为真,b=22.a=8;第八次循环: 22=20为真,执行break,结束for循环。执行for语句后面的语句,输出a值。通过分析得知,初值使b%3=1为真时,b+=5语句永远不会被执行。19. 题号:13364下面的功能是计算1至10之间奇数之和及偶数之和,请选择填空。#includevoid main() int a,b,c,i; a=c=0; for(i=0;i=10;i+=2) a+=i; _; c+=b; printf(偶数之和=%dn,a); printf(奇数之和=%dn,c-11);A、b=i-B、b=i+1C、b=i-1D、b=i+答案:B解答:是累加法的应用。变量a存储偶数的累加和。变量c存储奇数的累加和。所以初值均设为0.i=0; a=a+i=0+0=0; b=i+1=1; c=c+b=0+1=1;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+1=5; c=c+b=4+5=9;i=6; a=a+i=6+6=12; b=i+1=7; c=c+b=9+7=16;i=8; a=a+i=12+8=20; b=i+1=9; c=c+b=16+9=25;i=10 a=a+i=20+10=30; b=i+1=11; c=c+b=25+11=36;a存储的是0-10之间所有偶数的和。即0+2+4+6+8+10=30c存储的是0-11之间所有偶数的和。即1+3+5+7+9+11=36.c-11则存储的是0-10之间所有奇数的和。20. 题号:13365下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。#includevoid main() int x,y,z,i,result=532; for(x=1;x10;x+) for(y=1;y10;y+) for(z=0;z+y;x=i+) i=x;D、while(1)x+;答案:C解答:for语句,若第二个表达式省略,说明条件恒为真,是死循环;答案AB 是for循环,第二个表达式省略了。所以是死循环;答案D while语句,条件为1,说明条件恒为真,是死循环;答案C y=0,x=1;执行x+y后,11为假,y=1.所以循环体一次也不执行。23. 题号:13347执行语句for(i=1;i+4; ); 后变量i的值是_。A、5B、不定C、4D、3答案:A解答:自增表达式i+的值是I,自增变量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; 结束循环。24. 题号:13337下面程序运行结果是_。 #include void main() int a=1,b=10; do b-=a; a+; while(b-0); printf(a=%d,b=%dn,a,b); A、a=4,b=9 B、a=1,b=-1 C、a=3,b=11 D、a=2,b=8答案:D解答:循环体:b-=a 等价于b=b-a=10-1=9; a+=a=1 a=a+1=2条件:b-=b=9 b=b-1=9-1=8 b-0 即90为假。结束循环。结论:a=2,b=8;25. 题号:13336假定a和b为int型变量,有以下程序段a=1;b=10;do b-=a;a+;while (b-0);执行后b的值为_。A、9 B、-2 C、8 D、-1答案:C解答:要区分开自增表达式的值,自增变量的值;自减表达式的值,自减变量的值;自增变量的值,不区分前缀后缀,一定要加1;自增表达式区分前缀后缀。+i=i+1 i+=i;自减变量的值,不区分前缀后缀,一定要减1;自减表达式区分前缀后缀。-i=i-1 i-=i;循环体:b=b-a=10-1=9;a+=a=1;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+1后,i=1,i永远不可能大于100.所以break;语句不会被执行。有while的条件是1,即恒为真。所以是死循环。答案C k初值为0;+k;使得 k永远大于0.永远为真。所以是死循环。;29. 题号:13341以下for循环的执行次数是_。for(x=0,y=0;(y=123)&(x4);x+);A、执行4次B、是无限循环C、循环次数不定D、执行3次答案:A解答:第一个表达式:x=0,y=0;是逗号表达式。这里是功能是给变量赋初值。(y=123)&(x4);是逻辑表达式。规则是两个表达式都为真,结果才为真。若有一个为假,则逻辑值为假。左侧y=123是赋值表达式。逻辑值恒是真;右侧x4是关系表达式。x+;表示步长为1。当x的值在0,1,2,3时,x4为真。则(y=123)&(x4);为真。执行循环体。x=4时,结束循环。所以循环执行的次数是4次。该循环的循
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 诊所电子设备管理制度
- 试剂耗材分级管理制度
- 财务结账流程管理制度
- 财富管理中心管理制度
- 货架仓库安全管理制度
- 货物验收流程管理制度
- 货运签收单据管理制度
- 应急通道协议书范本
- 服装代工合同协议书范本
- 劳务担保协议书范本
- 2025年湖南省中考英语试卷真题(含答案)
- 储能站施工组织设计施工技术方案(技术标)
- 楼梯 栏杆 栏板(一)22J403-1
- 2024年河南省豫地科技集团有限公司招聘笔试参考题库含答案解析
- 2024年山西焦煤西山煤电集团招聘笔试参考题库含答案解析
- 2023北京第二次高中学业水平合格性考试信息技术试卷试题(答案详解)
- 《活板》综合练习
- 自动喂料搅拌机
- 静脉输液ppt课件
- MD11使用说明书
- 企业职务犯罪法制讲座.ppt
评论
0/150
提交评论