《C语言第三次模拟练习题部分解答》由会员分享,可在线阅读,更多相关《C语言第三次模拟练习题部分解答(20页珍藏版)》请在装配图网上搜索。
1、单项选择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. 条件!。
2、(- -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(________) i。
3、f(max200,则条件为假,结束循环。所以,当n是3的倍数时,就结束。即n=102时,102%3=0,为假,就结束循环。不符合题意。3) 答案C (n%3)|nvoid main() int x,i;for(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+。
4、1/n;结果永远为0.答案选CA、printf(%6.4fn,s); 输出结果占6列,保留四位小数。8. 题号:13355下面程序的运行结果是________。#includevoid main() int i,b,k=0;for(i=1;i=0时什么也不输出 B、最多允许输出100个非负整数C、printf 函数永远也不执行 D、当xvoid main() int i=0,a=0;while(ivoid main() int i;for(i=1;i&i=2 i%5=2%5=2 执行case2 ,输出&i=3 i%5=3%5=3 执行default,case2 输出&i=4 i%5=4%5=4。
5、 执行default,case2 输出&i=5 i%5=5%5=0 执行case2 输出*总结:#&*15. 题号:13361若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是________。#includevoid main() char c;int v0=0,v1=0,v2=0;doswitch(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答案:。
6、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是正整数的值。
7、减去个位数的值后再除以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)=5。
8、0+2*2=50+4=54n=n/10 =2/10=0条件为假,结束循环。17. 题号:13366下面程序的运行结果是________。#includevoid main() int i,j,x=0;for(i=0;ivoid 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第一次循。
9、环: 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循。
10、环。执行for语句后面的语句,输出a值。通过分析得知,初值使b%3=1为真时,b+=5语句永远不会被执行。19. 题号:13364下面的功能是计算1至10之间奇数之和及偶数之和,请选择填空。#includevoid main() int a,b,c,i;a=c=0;for(i=0;ivoid main() int x,y,z,i,result=532;for(x=1;x+y;x=i+) i=x;D、while(1)x+;答案:C解答:for语句,若第二个表达式省略,说明条件恒为真,是死循环;答案AB 是for循环,第二个表达式省略了。所以是死循环;答案D while语句,条件为1,说明条件恒为。
11、真,是死循环;答案C y=0,x=1;执行x+y后,11为假,y=1.所以循环体一次也不执行。23. 题号:13347执行语句for(i=1;i+void main() int a=1,b=10;do b-=a; a+; while(b-100) 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. 题号:1。
12、3341以下for循环的执行次数是________。for(x=0,y=0;(y=123)&(x=0);答案:空 1:4解答:b=b+2=2 a=a-(2+b)=20-(2+2)=20-4=16 a0为真,继续执行循环体;b=b+2=4 a=a-(2+b)=16-(2+4)=16-6=10 a0为真,继续执行循环体;b=b+2=6 a=a-(2+b)=10-(2+6)=10-8=2 a0为真,继续执行循环体;b=b+2=8 a=a-(2+b)=2-(2+8)=2-10=-8 a0为假,循环结束。32. 题号:13373以下程序运行后的输出结果是_____.#include int main()。
13、int k=1,s=0;doif (k&2)!=0)continue;s+=k;k+;while(k10);printf(s=%dn,s);答案:空 1:0解答:k=1;k&2=1&2=1 1!=0为真,执行continue,结束本次循环,即不执行s+=k;k+;判断条件k10;110为假。循环结束。所以s=0.33. 题号:13382程序段int k=10; while(k=0) k=k-1;循环体语句执行_____次.答案:空 1:0解答:条件k=0是一个赋值语句。执行后,k值为0,条件为假。所以循环体一次也没有被执行。34. 题号:13384已知int i=4;执行以下程序段后的i的值是。
14、_____.doi+;while(i4);答案:空 1:5解答:i=4;执行i+;后,i=5; 54为假,循环结束。所以i=5.35. 题号:13374已知int i,j,k; 则执行完for循环 for(i=0,j=10;i=j;i+,j-) k=i+j; 后,k的值为_____.答案:空 1:10解答:循环体是k=i+j; i=j是i=j=5时,k=10;之后,i=6,j=4;条件为假,循环结束。若循环体改变为k+=i+j,则难度加大了。需要认真计算保留每次累加的结果。36. 题号:13438一维数组的宣告格式是:________ 数组名称 个数 ;答案:空 1:数据型态 【或】 数据型态解答:提醒:答案是什么,就写什么。若写数据类型,则不会得分的。37. 题号:13439char name3; 如果name里面的成员有Tom Peter Mary,则 name1的名字是:________。答案:空 1:Peter 【或】 peter解答:这个题目有问题。应该是char name310;那么name0=”Tom”,name1=”Peter”,name2=”Mary。