文章目录
- 第1天
-
-
- ==1.下面程序段的运行结果是:==
- [==2.当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少?==](#==2.当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少?==)
- ==3.下面程序输出是什么?==
-
第1天
1.下面程序段的运行结果是:
M
char C[5]={'a','b','\0','c','\0'};
printf("%s",C);
选项 | 答案 |
---|---|
A | 'a''b' |
B | ab |
C | ab_c |
D | ab_c_(其中_表示空格) |
答案
我的答案 | 正确答案 |
---|---|
D | B |
忘记格式匹配符 | %s格式符意为输出字符串,输出字符串时,遇到 "\0"表示结束,所以结果是ab; |
知识补充
格式符 | 作用 |
---|---|
%d | 整型输出, |
%ld | 长整型输出, |
%o | 以八进制数形式输出整数, |
%x | 以十六进制数形式输出整数, |
%u | 以十进制数输出unsigned型数据(无符号数)。 |
%c | 用来输出一个字符, |
%s | 用来输出一个字符串, |
%f | 用来输出实数,以小数形式输出, |
%e | 以指数形式输出实数, |
%g | 根据大小自动选f格式或e格式,且不输出无意义的零。 |
2.当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少?
选项 | 答案 |
---|---|
A | 1 |
B | 0 |
C | 4 |
D | 运行错误 |
答案
我的答案 | 正确答案 |
---|---|
C | A |
对类所占字节大小不了解 | 深度探索c++对象模型中是这样说的: 那是被编译器插进去的一个char ,使得这个class的不同实体(object)在内存中配置独一无二的地址。 也就是说这个char是用来标识类的不同对象的。 |
知识补充
3.下面程序输出是什么?
M
int main()
{
bool first=true;
int sum=0;
int value;
unsigned short i=0xFFFF;
for (;i>=0;--i)
{
if (first)
{
value=65536;
sum+=value%3;
first=false;
}
else{
sum+=--value%3;
if (value<=0)
{
cout<<sum<<","<<i;
break;
}
}
}
return 0;
}
答案
选项 | 答案 |
---|---|
A | 1,65535 |
B | 65535,65535 |
C | 65535,65536 |
D | 65535,1 |
E | 65536,65535 |
True只经历1次, i=65535,value=65536,value%3=1;
False第1次循环,i=65534,value=65535,value%3=0;
False第2次循环,i=65533,value=65534,value %3=2;
...
之后value%3的结果一直是1,0,2循环,即每3次循环sum+3;
...
False第65535次循环,i=0,value=1,value%3=1;
False第65536次循环,i=65535,value=0,value%3=0;//变量i是unsigned short类型,0再减去1等于65535
故最后sum=2+0+1...(每3次循环余数和为3,所以前65535(3的倍数)次循环余数和为65535,再加最后1次循环的余数1,最后sum=65536,而i=65535)