【笔试常见易错选择题02】%s、二维数组、for、printf、进制输出形式、二维数组地址运算、位运算、递归

【笔试常见易错选择题02】%s、二维数组、for、printf、进制输出形式、二维数组地址运算、位运算、递归_第1张图片

1. 以下程序的输出结果是()

#include 
main() {
char a[10] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 0}, *p;
int i;
i = 8;
p = a + i;
printf("%s\n", p - 3);
}

A. 6
B. 6789
C. ‘6’
D. 789

%s遇到\0才会停止打印
选B.

2. 以下能对二维数组a进行正确初始化的语句是()

A. int ta[2][]={{0,1,2},{3,4,5}};
B. int ta[][3]={{0,1,2},{3,4,5}};
C. int ta[2][4]={{0,1,2},{3,4},{5}};
D. int ta[][3]={{0,2},{},{3,4,5}};

二维数组声明时,行可以省略,列不能省略
选B.

3. 设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是

A. n=0;while(ch=getchar()!=‘\n’)n++;
B. n=0;while(getchar()!=‘\n’)n++;
C. for(n=0;getchar()!=‘\n’;n++);
D. n=0;for(ch=getchar();ch!=‘\n’;n++);

D选项for循环初始化部分只会执行一次
也就是说只会获取一次字符
所以不能统计一行中输入字符个数
选D.

4. 32位系统中,定义**a[3][4],则变量占用内存空间为()。

A. 4
B. 48
C. 192
D. 12

方括号的优先级高,是一个三行四列的数组
每个元素是一个指针
选B.

5. 假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

#include 
int main(){
 long long a = 1, b = 2, c = 3;
 printf("%d %d %d\n", a, b, c);
return 0;
}

A. 1,2,3
B. 1,0,2
C. 1,3,2
D. 3,2,1
【笔试常见易错选择题02】%s、二维数组、for、printf、进制输出形式、二维数组地址运算、位运算、递归_第2张图片

大端低位存高地址
小端低位存低地址
此题是32位小端
选B.

6. 程序运行后的输出结果是()

#include
#include
using namespace std;
int main(){
 int m=0123, n=123;
 printf("%o %o\n", m, n);
 return 0;
}

A. 0123 0173
B. 0123 173
C. 123 173
D. 173 173

二进制以b结尾,例如:1011b
八进制以0开头,例如:0123
0-9都代表十进制,没有特殊格式
十六进制0x开头或h结尾,例如:0x6C,6Ch
%d:十进制方式输出
%o:八进制方式输出
%x:十六进制方式输出
选C.

7. 二维数组X按行顺序存储,其中每个元素占1个存储单元。若X[4][4]的存储地址为Oxf8b82140,X[9][9]的存储地址为Oxf8b8221c,则X[7][7]的存储地址为()

A. Oxf8b821c4
B. Oxf8b821a6
C. Oxf8b82198
D. Oxf8b821c0
【笔试常见易错选择题02】%s、二维数组、for、printf、进制输出形式、二维数组地址运算、位运算、递归_第3张图片

选A.

8. 以下程序的输出结果是:

#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的起始地址
【笔试常见易错选择题02】%s、二维数组、for、printf、进制输出形式、二维数组地址运算、位运算、递归_第4张图片

首元素地址++,打印第二个元素
而不是第一个元素的第二个字符
选B.

9. 求函数返回值,输入x=9999

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),x的二进制就少一个1
功能:返回x的二进制有多少个1
选A.

10. 下列程序执行后,输出的结果为()

#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
【笔试常见易错选择题02】%s、二维数组、for、printf、进制输出形式、二维数组地址运算、位运算、递归_第5张图片

cnt实际在统计斐波那契递归总的次数
选B.

你可能感兴趣的:(笔试常见编程题,c++,算法,leetcode)