ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:33.41KB ,
资源ID:10649508      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10649508.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C复印练习答案解析阶段测试一和二的答案分析.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C复印练习答案解析阶段测试一和二的答案分析.docx

1、C 复印练习答案解析阶段测试一和二的答案分析C+复印练习详细答案解析时间:2016年4月11日 阶段测试11、选B A选项:OxFF 是十六进制数,其中Ox表示的是十六进制的意思,该数字是c语言常量 B选项:1.2e0.5 是科学记数法,但是在c语言中要正确要求e的后边必须是整数,所以B选项错误,并且e的前边必须有数字,像 e7 这种表示方法是错误的 C选项:2L是c语言中的常量,其中 L代表的是2属于long型的数值 D选项:72 是字符型常量的一种特殊情况,是根据其中的ASCII码来对应的 拓展总结: C语言中的常量总结 常亮:在程序运行过程中,值不会改变的量称为常量。 我们知道变量有什么

2、整形,实型,字符型 那常量有哪些类别,这些常量是什么形式的、长什么样的呢? 总的来说,常量有一下几种类别: 一.整型常量,也就是整常数。 二.实型常量。 三.字符型常量。 四.字符串常量,注意字符串常量和字符型常量是不一样的。 一.整型常量 整型常量可以用三种样子: 1.十进制整数。如356,-120,0。 2.八进制整数。八进制形式的常量都以0开头,如0123,也就是十进制的83;-011,也就是十进制的-9。 3.十六进制整数。十六进制的常量都是以0x开头,如0x123,就是十进制的291。 4.等等其他进制数 二.实型常量 实型常量有两种样子: 1.十进制小数形式。 注意:0.0也是实型

3、常量。 2.指数形式。 比如123000,用科学计数法表示为1.2310的5次方,用C语言表示就是1.23e5或1.23E5,注意e或E前面必须要有数字,而且e或E后面的数字一定要是整数。 三.字符型常量 字符型常量都是用括起来的,其表现形式可以有两种: 1.一般形式。一个字符用括起来,注意只能有一个字符。 2.特殊形式。特殊形式都是以开头,它们在屏幕上不会直接显示出来,而是根据其特定的功能来显示的,这些特殊字符常量有: n 换行,相当于敲一下回车。 t 跳到下一个tab位置,相当于按一下键盘上的tab键。 b 退格,相当于按一下backspace。 r 使光标回到本行开头。 f 换页,光标移

4、到到下页开头。 输出字符,也就是在屏幕上显示一个字符。 输出字符,也就是在屏幕上显示一个字符。 输出字符,也就是在屏幕上显示一个字符。 ddd 1位到3位八进制数表示的字符。 例如:使用376,则在屏幕上显示一个黑色的方块。 xhh 1位到2位十六进制数表示的字符。注意x不能丢了。 四.字符串常量 字符串常量与字符常量不同的地方是,字符串常量是用把字符串括起来,所以a和a是不一样的,而且系统会在字符串常量的末尾自动加一个字符串结束标志(0)。2、选D A选项:VAR 不是c语言中的关键字,A错 B选项:cher不是c语言中的关键字,注区别于char,char是字符型,是c语言中的关键字,B错

5、C选项:integer是一个类(类后边会讲),不是c语言中的关键字,C错 D选项:是c语言中的关键字,多出现于switch语句中,表示缺省、默认的意思 拓展总结: C语言中的关键字总共有32个: auto :声明自动变量 short :声明短整型变量或函数 int: 声明整型变量或函数 long :声明长整型变量或函数 float:声明浮点型变量或函数 double :声明双精度变量或函数 char :声明字符型变量或函数 struct:声明结构体变量或函数 union:声明共用数据类型 enum :声明枚举类型 typedef:用以给数据类型取别名 const :声明只读变量 unsigne

6、d:声明无符号类型变量或函数 signed:声明有符号类型变量或函数 extern:声明变量是在其他文件正声明 register:声明寄存器变量 static :声明静态变量 volatile:说明变量在程序执行中可被隐含地改变 void :声明函数无返回值或无参数,声明无类型指针 if:条件语句 else :条件语句否定分支(与 if 连用) switch :用于开关语句 case:开关语句分支 for:一种循环语句 do :循环语句的循环体 while :循环语句的循环条件 goto:无条件跳转语句 continue:结束当前循环,开始下一轮循环 break:跳出当前循环 default:

7、开关语句中的“其他”分支 sizeof:计算数据类型长度 return :子程序返回语句(可以带参数,也可不带参数)循环条件 3、选A 对于这道题,首先要明白 *(乘) /(除) 的优先级一样,并且自左而右结合 A选项:x/y*z 等价于 (x/y)*z 与题目不符 B选项:可以表示 C选项:可以表示 D选项:x/y/z 等价于 (x/y)/z 可以表示注意:要求对各个运算符的优先级以及结合方向熟悉4、选C 本题表达式 a+=a-=a*a 是进行两次对a赋值,表达式等价于: a+=(a-=(a*a) 也等价于以下分句: int a = 3; a-=a*a; (等价于a = a-(a*a) a

8、+= a (等价于a = a + a) 即先算a-a*a即3-3*3 = (-6),再将最终结果赋给a,因此此时a等于-6。 再在a等于-6的基础上再算a=a+a即最终a=(-6)+(-6) 得-12 因此选C 5、选C 本题要注意的是c语言中规定运算最少的法则,即不做没有用的运算 也就是说对于 逻辑或 和 逻辑与 运算来讲,需要看左边表达式的真假再来判断右边表达式是否执行 对于逻辑或(|)运算来说,当|左边的表达式为真时,|右边的表达式就不再执行,否则一定执行右边的表达式 对于逻辑与(&)运算来说,当&左边的表达式为假时,|右边的表达式就不再执行,否则一定执行右边的表达式 本题中 x=y=3

9、; t=+x|+y; 首先系统先执行 x=y=3; 语句,接着自左往右执行 t=+x|+y; 系统发现 +x 值为 4,是真(非零即真),并且 是逻辑或的判断运算,所以 | 右边的 +y 就不再执行,直接跳过,因此y的值并没有改变,依然是3 因此选C 6、选B 自增分成两种:前缀自增和后缀自增 前缀自增: 类似 +n 这种将符号放在变量名的前边,这时候运行的是先对n自加,再执行表达式 例如: int n = 9; if (+n10); 是先给n加上1,此时n等于10;再执行表达式做判断,也就是 n = 10 10 不成立 后缀自增: 类似 n+ 这种将符号放在变量名的后边,这时候先运行表达式,

10、整个表达式运行完之后n再自加1 也就是说在这整个语句没有运行完之前,n 还是原来的值,并没有自增加1 例如:(本题就是这种情况) int n = 9; if (n+10); 是先判断 n = 9 10; 等整个表达式执行完之后n再自加1,也就是说在if语句下边只有出现n,那么n的值就是 10 7、选D A选项:第一行switch(a+b); 中的分号错误,此处不能有分号,A错 B选项:含有两个 case 3:错,B错 C选项:switch a 中 a 没有用括号括起来,C错 D选项:正确,default 语句可以放在花括号中的任何位置8、选A while 循环语句中的判断表达式为真,就执行循环

11、体,否则退出循环 本题的 while (k=1); 语句中的判断表达式 k = 1 是将1赋给k,k的值为1,判断表达式永远为真,循环就会一直执行,因此程序会陷入死循环 如果将本题的程序中的 k = 1 改成 k = 1,那么程序还是会陷入死循环,因为程序中的循环体是 k+ ,没有能够改变判断表达式的条件 如果将本题的程序中的 k = 1 改成 k = 1,并且将 k+ 改成 k-,那么程序就会执行一次之后终止 9、选B 本题程序的功能是求-1到5的和,结果是 -1 + 1 + 2 + 3 + 4 + 5 = 14 注意sum 的初始值是 -1 而不是 0 10、选C 分析见以下注释部分 #

12、include using namespace std; void main() int x = 3; do cout (x=-2) endl; while (!(-x); /当执行到该语句时,x的值先自减等于-3,再判断while中的表达式,根据非零即真, / 是零为假来判断是否执行循环体,-3不是零,所以(-x)为真,!(-x)为假, / 即判断表达式为假循环终止 /如果将!号去掉,将陷入死循环 11、2,1 本题属于简单的赋值运算题,注意的请看注释 # include using namespace std; void main() int a = 1, b = 2; a = a + b

13、; /执行完该语句后 a 的值为 3 b = a - b; / 该语句中 a 的值为3,b的值为2,执行完该语句后b的值为1 a = a - b; / 该语句中 = 号右边的 a 的值为3,b的值为1,执行完该语句后 a 的值为2 cout a , b endl; /该语句中,也可以写成 , , 另外输出a和b时按照最后a和b的值输出的 12、6.6 # include using namespace std; void main() int a = 9, b = 2; /定义两个整型变量a和b,并且初始化 float x = , y = 1.1, z; /定义三个浮点型变量x,y,z,并且将

14、x和y初始化 z = a/2 + b*x/y + 1/2; /*1、 整型变量做除法,如果商的实际值含有小数点,也只能保存商的整数部分,而将小数部分去掉 a是整型变量,那么a/2的值是4,而不是4.5,同理1/2的值是0;而不是0.52、 b*x/y 等价于 (b*x)/y 如果运算中含有混合运算,那么低级的将自动转向高级的类型,例如 b*x/y中b是整型,x和y是浮点型,那么b*x结果是浮点型, 同理b*x/y的结果也是浮点型,所以b*x/y的值为(2x)/1.13、 综合以上,z = a/2 + b*x/y + 1/2 = 4 + (2x)/1.1 + 0 = 16算得 x = 6.6 *

15、/ cout z (3+5, 6+8) 的值为14 2 (a = 3*5, a*4) 的值为60 3 # include int main(void) int x, y, z; x = y = 1; z = x+, y+, +y; cout x endl y endl z endl; return 0; 以上程序输出的结果为;2 3 1 2、本题程序中的cout (+x, y+) z+2; 其中逗号表达式的值与x无关,只与y有关,y+是后自增,因此逗号表达式 的值为3,z+2的值为3;因此输出33 故选D 15、选D 在C语言表达式中用 | 表示逻辑或 用 & 表示逻辑与 用 ! 表示非 16

16、、选A 解析见注释 # include int main(void) int x = 1, a = 0, b = 0; switch (x) /第7行 执行完这一条语句之后直接跳到第11行执行case1语句,并从case1开始一直执行到 /return 0; 结束程序 case 0:b+; /该语句不会被执行 case 1:a+; / 第11行 case 2: a+; b+; cout a= a , b= b endl; return 0; 最终a+被执行两次,一次在case1中执行,另一次在case2中执行 b+被执行1次,在case2中执行 因此最后的结果是: a = 2,b = 1 故选

17、A 17、选C 解析见注释 # include using namespace std; void main() float x = 2.0, y; /定义浮点型变量 if (x0.0) /x = 2.0 不小 0.0 因此不执行该if语句的y = 0.0;语句 y = 0.0; else if (x10) /x = 2.0 10,成立,执行,并且下边的else语句不再执行 y = 1.0/x; / 因此 y = 1.0/2.0 y为浮点型变量,y的值为0.5 else y = 1.0; cout y endl; 18、选C if else 嵌套有一个原则,称作就近原则,就是在没有使用花括号的

18、情况下,如果多个if else出现,那么if 和 else 的匹配问题就要遵循就近原则,就是else和离它最近的if相匹配 因此本题的代码等价于这样写: # include using namespace std; void main() int a = 2, b = -1, c = 2; if (ab) if (b0) c = 0; else c+; cout c endl; 认为本题的程序等价于一下的程序是错误的: # include using namespace std; void main() int a = 2, b = -1, c = 2; if (ab) if (b0) c =

19、 0; else c+; cout c endl; 如果认为是这样,那么就很容易误选成D而导致错误 19、选C 本题中执行第一次循环之后,i 的值为1,但是循环体中没有让i的值改变的语句,也就是说i的值从执行循环之后就一直是1,i3也就永远成立,改变的值只是sum的值,所以一直循环,即陷入死循环 故选C 20、选B 见注释 # include using namespace std; void main() int x = 23; do cout x- 当n = 9,96成立,执行循环体, n- n = 8 输出8 2 n = 8,86成立,执行循环体, n- n = 7 输出7 3 n =

20、7,76成立,执行循环体, n- n = 6 输出6 4 n = 6,66不成立,退出循环, 因此输出的结果是:876 故选B 22、第一个空;i=9 或 i10 第二个空:j%3 或 j%3!=0 注意: 第一个空不能习惯性地填 i100 或 i=99,因为for循环体当中,有j = i*10 + 6; 将会超出100的范围,显然是错误的 第二个空的功能是将不能被3整除的数直接跳过,直接进行下一趟循环,直到循环终止 23、填 b = i + 1 首先对于b来说,只进行过定义,没有初始化,因此,所填的空一定是关于b的初始化,否则下边c+=b语句就会出错,再结合输出流中的奇数之和时c减去11,这

21、11恰好是循环次数,也就是说循环一次,奇数的和多1,因此所要填的空一定和i相关,因此推出要填 b = i + 1 24、选C 默认情况下,if语句,for语句,while 语句都只能控制一个循环语句,若想要控制多个循环语句,必须用花括号将循环体括起来,形成复合语句。 本题中第二个for语句属于第一个for的循环体,if语句有属于第二个for语句的真语句, m=1;也属于if条件语句的真语句,也就是说从第二个for语句到m=1语句都是第一个for的循环体,但是n+不是任何一个for语句或if条件语句的真语句,即n+是第一个for语句的下一个语句,因此不管第一个for语句、第二个for语句、if语

22、句怎么样执行,都与n+无关,最终n+语句必然执行,因此输出的n一定是1 故选C 阶段测试21、选B 对于本题中的func(expl, exp2),(expl, exp2)中,(expl, exp2)和 (expl, exp2)都是逗号表达式,逗号表达式的 最终值是一个,也就是说(expl, exp2)和 (expl, exp2)的最终结果是两个值,因此实参是两个! 2、选C 要读懂本题,要了解一下几个内容: 1)、本函数执行的顺序(简称程序流程): 大致地讲,本程序先从main函数入口开始执行程序,就是从 void main()进入程序,再执行int x = 6, y = 7, z = 8, r; 这一句,接下来当然是执行r = func(x-, y+, x+y), z-);这一句,当执行完这一句后,程序不再在主函数中继续往下执行,而是直接跳到被调函数去执行,也就是直接跳去int func(int a, int b) 中去执行,等执行完被调函数后,程序再回到主函数中接着执行,也就是说主函数既是函数的入口,也是函数的出口。 2)、自增自减在函数调用中作实参: 自增自减在函数中作实参,如果是前自增,那么在执行完整句表达式之前就已经将自增的值发送到相对应的形参了 举例: # include

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1