赞
踩
目录
- for(int i = 4; i > 1; i--)
- for(int j = 1; j < i; j++)
- putchar('#');
答案:######
解析: i=4 j=1 #
j=2 #
j=3 #
j=4
i=3 j=1 #
j=2 #
j=3
i=2 j=1 #
j=2
i=1
答案:D
解析:复合语句可以包含多条语句 , 在其中可以定义局部变量 , 所以 A 错误。花括号对 {} 不仅用来表示函数的开头和结尾 , 也可以用于表示复合语句 , 所以 B 错误。 C 语言中的语句必须以分号 ";" 结束 , 所以空语句表示为 ";", 不是空行 , 所以 C 错误。
- #include <iostream>
- using namespace std;
- int i = 0;
- int fun(int n) {
- static int a = 2;
- a++;
- return (a * n);
- }
-
- int main() {
- int k = 5;
- {
- int i = 2;
- k += fun(i);
- }
- k += fun(i);
- cout << k;
- return (0);
- }

答案:11
这题学习了,原来不知单纯只是 { } 也能组成作用域。
1. 所以上题 { } 内使用的 i 是局部变量 i,i=2,在第一句 k += fun( i ) 后k变成了11;
2. 第二句k += fun( i ) 是在 { } 外,使用的i是全局变量,i=0,所以 k += fun( i ) 后k加上了0等于11;
答案:B C
解析:
选项1 : 运算结果进行比较的话,已经溢出导致结果变化,去比较也为时已晚。 所以不正确
选项2 : 检测符号为变化可以防止符号溢出,正确。
选项3 : a+b = c c - a != b 则c溢出 正确
选项4 : 参数长度 0000000000000000000000000 这个长度算溢出么 不正确
- char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08};
- short *pshort = (short *)array;
- int *pint = (int *)array;
- int64 *pint64 = (int64 *)array;
- printf("0x%x , 0x%x , 0x%llx , 0x%llx", *pshort , *(pshort+2) , *pint64 , *(pint+2));
答案:B
解析:
B。
小端机器的数据高位字节放在高地址,低位字节放在低地址。
char array[12] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
1,char一字节,直观呈现的结果为:0x08-07-06-05-04-03-02-01(从后到前下标为0-7);
2,short两字节,直观呈现 的结果 为: 0x0807-0605-0403-0201 (从后到前 下标 为0-3) :
*pshort从0开始,所以0x201;
*(pshort+2)从2开始,所以0x605;
3,int64八字节,直观呈现 的结果 为 0x0807060504030201 (从后到前 下标 为0) :
*pint64从0开始,所以0x807060504030201;
4,int四字节,直观呈现为0x08070605-04030201(从后到前 下标 为0-1) :
*(pint+2))从2开始,但是最多只到下标1,后面位置默认为0。
- #include<iostream>
- using namespace std;
- class Clock{
- public:
- Clock(int NewH=0, int NewM=0, int NewS=0){Hour=NewH; Minute=NewM;Second=NewS;}
- void ShowTime() {cout<<Hour<<":"<<Minute<<":"<<Second;}
- Clock operator ++();
- private:
- int Hour, Minute, Second;};
- Clock Clock::operator ++(){
- Second++;
- if(Second>=60){
- Second=Second-60;
- Minute++;
- if(Minute>=60){
- Minute=Minute-60;
- Hour++;
- Hour=Hour%24;}}
- return ________;
- }
- };
-
- int main() {
- Clock c1;
- (++c1).ShowTime();
- return 0;
- }

答案:*this
解析:选B。return *this返回的是当前对象的克隆或者本身,return this返回当前对象的地址,这里很明显是返回当前对象。c1是定义在主函数里面的对象,很明显不对。Clock是类名,也不对。
- char* getmemory(void){
- char p[]= " hello world";
- return p;
- }
- void test(void){
- char *str=NULL;
- str=getmemory(); printf(str);
- }
答案:输出乱码
解析:getmemory 返回的指针,是内部变量, 调用之后会被回收。 所以输出是不确定的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。