西北大学C语言课后习题第三章汇编
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第三题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
4.以下语法不正确的语句是()
A. if(x>y);
B. if(x=y)&&(x!=0) x+=y;
C. if(x!=y) scanf("%d",&x); else scanf("%d",&y);
二、改错题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
1.下面程序用来计算如下公式的值,请修改程序错误
1 y(x) 0
1
(x 0) (x 0) (x 0)
书上题目
#include<stdio.h> void main() {
int x,y; scanf("%d",&x); y=-1; if(x!=0)
C.x=20,y=30,z=10
D.x=20,y=30,z=20
解答:这个题目考查了if语句常用错误。 必须说明的是:if语句的作用范围仅限于它紧挨的那一条语句。 此题中if后面跟了三个赋值表达式,即z=x;x=y;y=z; 但只有第一个表达式z=x跟if函数有关。 也就是说,如果if为真,则z=x执行,if为假,z=x不执行 但不管if成立与否,后面的两个赋值表达式都会运行,因为if不会作用到它们身上 如果想整体运行,那么就必须加花括号把三个表达式作为一个整体 即 if(x>y) {z=x;x=y;y=z;} 因为x=10<y(y=20),所以z=x不执行,但x=y,y=z执行 所以x=20,y=30,z=30 答案:B
m=(m<z)?m:z;
A.1
B.2
C.3
D.4
解答:本题考查三目表达式
对于三目表达式,如果第一个关系式成立,三目表达式的值是中间语句的值,如果不成立,则三
目表达式的值是最后一个语句的值
对题目中的三个三目表达式按顺序执行
开始时,w=1,x=2,w<x成立,则m的值等于中间语句的值(w),所以m=w=1;
else printf("%d\n",m--);}
A.4
B.5Biblioteka Baidu
C.6
D.7
解答:此题考查自加自减语句的加减顺序。
对于m++,是先使用后加1。因为m的初值为5,if(m++>5)判断时使用的是m=5,判断后 m再自加1变成6。 所以m++>5不成立,此时判断后m=6,进入else部分 在else 的语句里printf("%d\n",m--),有一个m--。在printf中,如果遇到m++,m--,均将其视为m 对m的加减操作是在printf函数输出之后再一次性加减。 即当m=6时,printf("%d",m--),输出的结果是6,但输出后m就变成5了 答案:C 小扩展,printf配合m++等能出很多题。如m=4. printf("%d,%d,%d,%d",m++,++m,m--,m++) 试一试,结果你一定不信
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第一题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
2.已知int x=10,y=20,z=30;以下程序执行后x、y、z的值是()
if(x>y) z=x;x=y;y=z;
A.x=10,y=20,z=30
B.x=20,y=30,z=30
在第二个三目表达式中,对等号右边进行计算,因为m=1,y=3,m<y成立,所以将中间语句m的值
赋给新的m,即m还是等于1
在最后一个三目表达式中,m=1,z=4,m<z成立,仍执行中间的语句m,所以m=m=1
因此最后m的值为1
答案:A
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第五题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第四题
编译出现错误
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
5.若w,x,y,z,m均为int型变量,则执行下列语句后m的值是()
w=1;x=2;y=3;z=4;
m=(w<x)?w:x;
m=(m<y)?m:y;
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第二题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
3.下列程序执行后的输出结果是()
#include<stdio.h>
void main()
{ int m=5;
if(m++>5) printf("%d\n",m);
1-5 DBCBA
注意
为简化程序长度,所有源程序中均删除 #include<stdlib.h>和system("pause")代码
不影响最终的结果,请大家注意
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
1.在"if(表达式)"语句中,可以判断的“表达式”是()
A.关系表达式
B.逻辑表达式
D. if(x<y) {x++;y++;}
解答:本题考查if语句的语法 if语句的基本形式为: if(表达式) 语句1;
else 语句2; 注意,if后面的表达式是用括号括起来的 对于选项B,if语句中的表达式是一个逻辑与结构,但缺少括号,应该改为: if((x=y)&&(x!=0)) x+=y; 这个里面还要注意的是,逻辑与的两边是 (x=y)&&(x!=0),对于左半部分(x=y)的意思是 将y的值赋给x,然后看这个值是否为真(非0即为真) 这里不去追究到底是应该用(x==y)还是(x=y),但语法上这两个表达式都可以进行判断 答案:B
C我语们言辅毕导业第三啦章
其实是答辩的标题地方
讲解人
吴慈航 化工学院2013级能源化学工程 西北大学学生校长助理,特等奖学金获得者
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
配套教材见右图
本章讲解选择题和程序设计题
一、选择题
每题后一页均附有相应的源程序和执行结果
选择题参考答案预览
C.算术表达式
D.任意表达式
解答:本题考查if语句 注意,这里问的是可以判断的“表达式”,有的表达式不一定有实际的意义但也可以判断 用一个简单的例子,if(a+b>2||a+b<0) {语句} 这里综合运用了关系表达式(大于关系和小于小于) 逻辑表达式(逻辑或) 算数表达式(a+b) 单独用每一个表达式也能有结果,具体见下一页的测试图 答案:D