141-150

注:以下问题的部分解析并非全部是自己原创,只是为了便于以后复习,直接粘贴总结的答案,主要来源是七月在线中的解析部分。https://www.julyedu.com/question/selectAnalyze/kp_id/4/cate/C

1、下列while循环的次数是( )

void main()
{
while(int i = 0)
i–;
}
A 无限
B 0
C 1
D 5

解释:选B

赋值语句“a=b”的返回值即赋值后a的值,int i = 0, 则返回值为0, 故一次都不循环

2、 下面哪个指针表达式可以用来引用数组元素a[i][j][k][l]( )

A ((((a+i)+j)+k)+l)
B * (* (* (* (a+i)+j)+k)+l)
C (((a+i)+j)+k+l)
D ((a+i)+j+k+l)

解释:选B

运算符 * 为解引用运算符,若int p[5]为一维数组,* (p+i)相当于p[i]即访问下标为i的元素。对应于本题,* (a+i)首先得到一个三维数组首地址,* (* (a+i)+j)得到一个二位数组的首地址,以此类推,* (* (* (* (a+i)+j)+k)+l)相当于访问数组元素a[i][j][k][l]。

3、 根据下面递归、函数:调用函数Fun(2),返回值是多少( )

int Fun (int n)
{
if ( n = = 5)
return 2;
else
return 2*Fun (n+1);
}
A 2
B 4
C 8
D 16

解释:选D

n = 2
Fun(2) = 2 * Fun(3) = 2* 2 * Fun(4) = 2* 2* 2* Fun(5) = 2* 2* 2* 2 = 16

4、 以下程序段的运行结果是( )

int main(void)
{
char aa[][3] = {‘a’,‘b’,‘c’,‘d’,‘e’,‘f’};
char (*p)[3] = aa;
p++;

printf("%c\n",**p);  
return 0;  

}
A b
B a
C c
D d

解释:选C

char (*p)[3] = aa; p为一个指向char[3] 的指针,p每加一个单位,实际上是移动一个数组的大小,即3个元素,故 ** p为d
关于数组指针和指针数组的区别,可以参考我的另一篇文章
https://blog.csdn.net/weixin_44412429/article/details/95165898

5、在C语言中,下列( )是合法的标识符。

A 4x
B 1P234
C COUNT
D short

解释:选C

标识符可以由任意的大小写字母、下划线和数字组成,但必须以字母或下划线开头,同时注意不能使用系统保留名称作为用户标识符。选项A和B以数字开头,而D选项中short为系统保留名称。

6、 C语言中的标识符只能有字母、数字和下划线三种字符组成,且第一个字符( )

A 必须为字母
B 必须为字母或下划线
C 必须不是字母或下划线
D 必须为下划线

解释:选B

7、下面程序的输出是( )

int main(void)
{
enum team { my , your = 9 , his , her = his + 3};

printf("%d %d %d %d\n",my , your , his , her);  
return 0;  

}
A 0 9 10 13
B 0 8 11 12
C 0 8 10 12
D 0 8 12 9

解释:选A

枚举类型变量的成员,默认第一个成员值为0,之后一次递加1,若其中一个赋值,则之后依旧是递加1。

8、以下程序

int main(int argc, char** argv)
{
int n = 0 , i;
for(i = 1 ; i < argc ; i++)
n = n * 10 + *argv[i]-‘0’;
printf("%d\n",n);
return 0;
}
经编译链接生成可执行文件tt.exe,若运行时输入以下命令行 tt 12 345 678,则程序运行的输出结果是( )
A 136
B 12345
C 12345678
D 12

解释:选A

题中命令行输入的参数有4个,分别为”tt”、”12”、”345”、”678”,故argc为4,并且这4个参数传给argv。在main函数中,第一次取下标为1的参数,将其首字符转换为对应的整数,得到1,此时n=1;依次取下标分别为2和3的参数,进行相应计算,分别得到n=13以及n=136,最后将n输出得到136。

9、 若已定义:int a[9],*p = a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( )

A ++p
B a+1
C p+1
D a++

解释:选D

数组名不能作为运算的左值被修改,即++a或者a++这种需要修改对象值的操作都是无法编译通过的。

10、 若执行下面的程序时,从键盘上输入5,则输出是( )

int main(int argc, char** argv)
{
int x;
scanf("%d",&x);
if(x++ > 5)
printf("%d\n",x);
else
printf("%d\n",x–);
return 0;
}
A 7
B 4
C 6
D 5

解释:选C

if(x++ > 5) 先进行 x > 5 为假 然后 x 自增1 x = 6
跳转到 printf("%d\n",x–); 先输出x(6),然后x才自减。

发布了31 篇原创文章 · 获赞 4 · 访问量 2451

猜你喜欢

转载自blog.csdn.net/weixin_44412429/article/details/95730762
今日推荐