#include
#include
using namespace std;
int main()
{
int m = 0123;
int n = 123;
printf("%o %o\n", m, n);
return 0;
}
A 0123 0173
B 0123 173
C 123 173
D 173 173
解析:
0123表示八进制,%o表示以八进制打印输出,输出结果不显示0
A flag&=~2
B flag|=2
C flag^=2
D flag>>=2
A const int const *x = &y;
B int * const x = &y;
C const int *x = &y;
D int const *x = &y;
E const int * const x = &y;
A 2,1
B 3,1
C 3,9
D 运行时崩溃
int a[5] = { 1,3,5,7,9 };
int* p = (int*)(&a + 1);
printf(“% d, % d”, *(a + 1),* (p - 1));
解析:
数组名除了在&和sizeof()符号下表示整个数组,其余情况都表示数组首元素地址
A Oxf8b821c4
B Oxf8b821a6
C Oxf8b82198
D Oxf8b821c0
解析:
int Fun(int n)
{
if (n == 5)
return 2;
else
return 2 * Fun(n + 1);
}
A 2
B 4
C 8
D 16
#include
using namespace std;
void func(char** m)
{
++m;
cout << *m << endl;
}
int main() {
static char* a[] = { "morning", "afternoon", "evening" };
char** p;
p = a;
func(p);
return 0;
}
A afternoon
B 字符o的起始地址
C 字符o
D 字符a的起始地址
他的回答: (错误)
正确答案: A
解析:
1.a是一个指针数组,a中保存的时字符指针,在栈上开辟空间,其指向的字符串保存在静态字符常量区
2.对指针加1,相当于加上其所指向类型的大小,二级指针加一,则其指向下一个一级指针的位置
int func(int x){
int count=0;
while (x)
{
count++;
x=x&(x-1);//与运算
}
return count;
}
A 8
B 9
C 10
D 12
解析:
x&x-1是统计一个数二进制中1的个数的方法,每次和比自己小1的数相与都会消去二进制中的一个1
#include
int cnt = 0;
int fib(int n)
{
cnt++;
if (n == 0)
return 1;
else if (n == 1)
return 2;
else
return fib(n - 1) + fib(n - 2);
}
void main()
{
fib(8);
printf("%d", cnt);
}
A 41
B 67
C 109
D 177
解析:
cnt即递归调用的次数
struct A
{
int a;//4
short b;//2
int c;//4
char d;//1
};
struct B
{
int a;
short b;
char c;
int d;
};
A 16,16
B 13,12
C 16,12
D 11,16
解析:
short类型占2个字节内存,long类型占4个字节,结构体内存对齐