C语言第三次模拟练习题部分解答

上传人:博****1 文档编号:557985507 上传时间:2023-02-12 格式:DOC 页数:30 大小:73KB
返回 下载 相关 举报
C语言第三次模拟练习题部分解答_第1页
第1页 / 共30页
C语言第三次模拟练习题部分解答_第2页
第2页 / 共30页
C语言第三次模拟练习题部分解答_第3页
第3页 / 共30页
C语言第三次模拟练习题部分解答_第4页
第4页 / 共30页
C语言第三次模拟练习题部分解答_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《C语言第三次模拟练习题部分解答》由会员分享,可在线阅读,更多相关《C语言第三次模拟练习题部分解答(30页珍藏版)》请在金锄头文库上搜索。

1、word单项选择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(_) if(maxa

3、) 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.

4、所以它的含义是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(%

5、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的倍数,如此输出。与源程序的题意不

6、符。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) print

7、f(%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、2668B、3981C、4284D、2870答案:D解答:l i=1;i=100;i+ 循环变量i初值为1,终值为100,步长为1l +x%2=0等价于x+1%2=0 x=x+1 以此类推 +x%3=0等价于x+1%3=0

8、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以下程序段运行的结果是_

9、。for(y=1;y10;) y=(x=3*y,x+1),x-1);printf(x=%d,y=%d,x,y);A、x=15,y=14B、x=12,y=13C、x=27,y=27D、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,所以

10、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、21B、

11、12C、16D、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结果为

12、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,-1B、8,-2C、3,0D、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,

13、b自减1。因为每次循环,b值都要更新,所以b值只可能是0.中规中矩的传统解法: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%

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号