您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > C++复印练习答案解析(阶段测试一和二的答案)
C++复印练习详细答案解析时间:2016年4月11日阶段测试11、选BA选项:OxFF是十六进制数,其中Ox表示的是十六进制的意思,该数字是c语言常量B选项:1.2e0.5是科学记数法,但是在c语言中要正确要求e的后边必须是整数,所以B选项错误,并且e的前边必须有数字,像e7这种表示方法是错误的C选项:2L是c语言中的常量,其中L代表的是2属于long型的数值D选项:'\72'是字符型常量的一种特殊情况,是根据其中的ASCII码来对应的拓展总结:C语言中的常量总结常亮:在程序运行过程中,值不会改变的量称为常量。我们知道变量有什么整形,实型,字符型……那常量有哪些类别,这些常量是什么形式的、长什么样的呢?总的来说,常量有一下几种类别:一.整型常量,也就是整常数。二.实型常量。三.字符型常量。四.字符串常量,注意字符串常量和字符型常量是不一样的。一.整型常量整型常量可以用三种样子:1.十进制整数。如356,-120,0。2.八进制整数。八进制形式的常量都以0开头,如0123,也就是十进制的83;-011,也就是十进制的-9。3.十六进制整数。十六进制的常量都是以0x开头,如0x123,就是十进制的291。4.等等其他进制数二.实型常量实型常量有两种样子:1.十进制小数形式。注意:0.0也是实型常量。2.指数形式。比如123000,用科学计数法表示为1.23×10的5次方,用C语言表示就是1.23e5或1.23E5,注意e或E前面必须要有数字,而且e或E后面的数字一定要是整数。三.字符型常量字符型常量都是用''括起来的,其表现形式可以有两种:1.一般形式。一个字符用''括起来,注意只能有一个字符。2.特殊形式。特殊形式都是以\开头,它们在屏幕上不会直接显示出来,而是根据其特定的功能来显示的,这些特殊字符常量有:\n换行,相当于敲一下回车。\t跳到下一个tab位置,相当于按一下键盘上的tab键。\b退格,相当于按一下backspace。\r使光标回到本行开头。\f换页,光标移到到下页开头。\\输出\字符,也就是在屏幕上显示一个\字符。\'输出'字符,也就是在屏幕上显示一个'字符。\输出字符,也就是在屏幕上显示一个字符。\ddd1位到3位八进制数表示的字符。例如:使用'\376',则在屏幕上显示一个黑色的方块。\xhh1位到2位十六进制数表示的字符。注意x不能丢了。四.字符串常量字符串常量与字符常量不同的地方是,字符串常量是用把字符串括起来,所以'a'和a是不一样的,而且系统会在字符串常量的末尾自动加一个字符串结束标志('\0')。2、选DA选项:VAR不是c语言中的关键字,A错B选项:cher不是c语言中的关键字,注区别于char,char是字符型,是c语言中的关键字,B错C选项:integer是一个类(类后边会讲),不是c语言中的关键字,C错D选项:是c语言中的关键字,多出现于switch语句中,表示缺省、默认的意思拓展总结:C语言中的关键字总共有32个:auto:声明自动变量short:声明短整型变量或函数int:声明整型变量或函数long:声明长整型变量或函数float:声明浮点型变量或函数double:声明双精度变量或函数char:声明字符型变量或函数struct:声明结构体变量或函数union:声明共用数据类型enum:声明枚举类型typedef:用以给数据类型取别名const:声明只读变量unsigned:声明无符号类型变量或函数signed:声明有符号类型变量或函数extern:声明变量是在其他文件正声明register:声明寄存器变量static:声明静态变量volatile:说明变量在程序执行中可被隐含地改变void:声明函数无返回值或无参数,声明无类型指针if:条件语句else:条件语句否定分支(与if连用)switch:用于开关语句case:开关语句分支for:一种循环语句do:循环语句的循环体while:循环语句的循环条件goto:无条件跳转语句continue:结束当前循环,开始下一轮循环break:跳出当前循环default:开关语句中的“其他”分支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))也等价于以下分句:inta=3;a-=a*a;(等价于a=a-(a*a))a+=a(等价于a=a+a)即先算a-a*a即3-3*3=(-6),再将最终结果赋给a,因此此时a等于-6。再在a等于-6的基础上再算a=a+a即最终a=(-6)+(-6)得-12因此选C5、选C本题要注意的是c语言中规定运算最少的法则,即不做没有用的运算也就是说对于逻辑或和逻辑与运算来讲,需要看左边表达式的真假再来判断右边表达式是否执行对于逻辑或(||)运算来说,当||左边的表达式为真时,||右边的表达式就不再执行,否则一定执行右边的表达式对于逻辑与(&&)运算来说,当&&左边的表达式为假时,||右边的表达式就不再执行,否则一定执行右边的表达式本题中x=y=3;t=++x||++y;首先系统先执行x=y=3;语句,接着自左往右执行t=++x||++y;系统发现++x值为4,是真(非零即真),并且是逻辑或的判断运算,所以||右边的++y就不再执行,直接跳过,因此y的值并没有改变,依然是3因此选C6、选B自增分成两种:前缀自增和后缀自增前缀自增:类似++n这种将符号放在变量名的前边,这时候运行的是先对n自加,再执行表达式例如:intn=9;if(++n10);是先给n加上1,此时n等于10;再执行表达式做判断,也就是n=1010不成立后缀自增:类似n++这种将符号放在变量名的后边,这时候先运行表达式,整个表达式运行完之后n再自加1也就是说在这整个语句没有运行完之前,n还是原来的值,并没有自增加1例如:(本题就是这种情况)intn=9;if(n++10);是先判断n=910;等整个表达式执行完之后n再自加1,也就是说在if语句下边只有出现n,那么n的值就是107、选DA选项:第一行switch(a+b);中的分号错误,此处不能有分号,A错B选项:含有两个case3:错,B错C选项:switcha中a没有用括号括起来,C错D选项:正确,default语句可以放在花括号中的任何位置8、选Awhile循环语句中的判断表达式为真,就执行循环体,否则退出循环本题的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而不是010、选C分析见以下注释部分#includeiostreamusingnamespacestd;voidmain(){intx=3;docout(x=-2)endl;while(!(--x));//当执行到该语句时,x的值先自减等于-3,再判断while中的表达式,根据非零即真,//是零为假来判断是否执行循环体,-3不是零,所以(--x)为真,!(--x)为假,//即判断表达式为假循环终止//如果将!号去掉,将陷入死循环}11、2,1本题属于简单的赋值运算题,注意的请看注释#includeiostreamusingnamespacestd;voidmain(){inta=1,b=2;a=a+b;//执行完该语句后a的值为3b=a-b;//该语句中a的值为3,b的值为2,执行完该语句后b的值为1a=a-b;//该语句中=号右边的a的值为3,b的值为1,执行完该语句后a的值为2couta','bendl;//该语句中','也可以写成,,另外输出a和b时按照最后a和b的值输出的}12、6.6#includeiostreamusingnamespacestd;voidmain(){inta=9,b=2;//定义两个整型变量a和b,并且初始化floatx=,y=1.1,z;//定义三个浮点型变量x,y,z,并且将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*/coutzendl;}13、选A因为c3是整型变量,尽管c3=1.0/c2*c1中1.0/c2*c1的最终结果是浮点型的数值(其数值为0.5),但是将浮点型数据存放在整型变量中,整型变量只能保存该数值的整数部分,而将小数部分去掉。本题是将1.0/c2*c1的最终结果0.5保存在整型变量c3中,所以最终c3等于0因此选A14、选D1、逗号表达式:C语言中提供一种特殊的运算符,逗号运算符,形如本题中(++x,++y)中间是逗号,而不是分号逗号表达式的运算过程;从左往右逐个计算表达式,并且逗号表达式作为一个整体,其值为最后一个表达式的值逗号表达式的优先级:在所有运算符中的优先级别最低举例:1(3+5,6+8)的值为142(a=3*5,a*4)的值为603#includeiostream.hintmain(void){intx,y,z;x=y=1;z=x++,y++,++y;coutxendlyendlzendl;return0;}以上程序输出的结果为;2312、本题程序中的cout(++x,y++)z+2;其中逗号表达式的值与x无关,只与y有关,y++是后自增,因此逗号表达式的值为3,z+2的值为3;因此输出33故选D15、选D在C语言表达式中用||表示逻辑或用&&表示逻辑与用!表示非16、选A解析见注释#includeiostream.hintmain(void){intx=1,a=0,b=0;switch(x)//第7行执行完这一条语句之后直接跳到第11行执行case1语句,并从case1开始一直执行到//return0;结束程序{case0:b++;//该语句不会被执行case1:a++;//第11行case2:a++;b++;}couta=a,b=bendl;return0;}最终a++被执行两次,一次在case1中执行,另一次在case2中执行b++被执行1次,在case2中执行因此最后的结果是:a=2,b=1故选A17、选C解析见注释#includeiostreamusingnamespacestd;voidmain(){floatx=2.0,y;//定义浮点型变量if(x0.0)//x==2.0不小0.0因此不执行该if语句的y=0.0;语句y=0.0;elseif(x10)//x==2.010,成立,执行,并且下边的else语句不再执行y=1.0/x;//因此y=1.0/2.0y为浮点型变量,y的值为0.5elsey=1.0;coutyendl;}18、选Cifelse嵌套有一个原则,称作就
本文标题:C++复印练习答案解析(阶段测试一和二的答案)
链接地址:https://www.777doc.com/doc-2901623 .html