全国计算机二级C选择题题库第36套(3)

2020-06-05 12:03

参考答案:B

f1(*a,b),*a地址传递,b值传递,将b值传给*a,则f1(&t1,t2)调用后输出t1、t2为BB。f2(a,b)值传递,传入的只是a,b的拷贝,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。f3(*a,*b)为地址传递,可以实现a,b值的交换,则f3(&t1,&t2)调用后输出t1、t2为BA。因此结果为BAABBB。故答案为B选项。

29、以下叙述正确的是

A) char c1, *c2, *c3[10]; 是合法的变量定义语句 B) 数组说明符的一对方括号中不能使用表达式 C) 数组元素下标可以是非整数

D) 若有定义 char array[4]; 则语句 printf(\是合法的 参考答案:A

C语言规定定义数组时,数组的长度必须是整型常量,数组说明符的一对方括号中表达式只要是常量即合法,因此选项B错误。C语言规定,数组元素下标必须是非负整数 ,因此选项C错误。选项D char array[4]数组的长度为4, array[\其中\常量字符串,与C语言规定数组的下标必须是非负整数不符,故答案为A选项。

30、有以下程序

#include main( )

{ int a[3][3]={{1,3,5,}, {7,9,11,}, {13,15,17}}; int (*p)[3]=a, i,j,n=0; for(i=0;i<3;i++) for(j=0;j<2;j++) n+=*(*(p+i)+j); printf(\}

程序运行后的输出结果是 A) 54 B) 60 C) 36 D) 48

参考答案:D

for循环的作用是求数组各行前二列的数字之和。*(*(p+i)+j)?p[i][j] 1+3+7+9+13+15=48,因此答案为D选项。

31、设有定义:

char p[]={'1', '2', '3'},*q=p;

以下不能计算出一个char型数据所占字节数的表达式是 A) sizeof(*q) B) sizeof(char) C) sizeof(p)

D) sizeof(p[0]) 参考答案:C

变量p,q均是指针,因此sizeof(p)=4,而*p,*q,p[0]的类型都是char,因此长度为1,故A、D选项均正确。选项B,直接计算char的字节数也正确,故答案为C选项。

32、有以下程序

#include fun(int x, int y) { static int m=0, i=2;

i+=m+1; m=i+x+y; return m; }

main()

{ int j=1, m=1, k;

k=fun(j,m); printf(\ k=fun(j,m); printf(\ }

执行后的输出结果是 A) 5, 11 B) 5, 5 C) 11, 11 D) 11, 5

参考答案:A

static静态变量只在声明时初始化一次。因此m,n只是在第一个调用fun函数时初始化,第二次保持原来的只不变,不在进行初始化。因此第一次,可计算i=3,m=3+1+1=5,故打印为5,第二次i=4+5,m=9+1+1=11,故打印11。故答案为A选项。

33、有以下程序

#include

int f( int x[], int n ) { if ( n> 1)

return x[n-1]+ f(x, n-1)*10; else

return x[0]; }

main( )

{ int z[3] = {1,2,3}, y; y = f(z,3);

printf( \}

程序运行后的输出结果是 A) 321 B) 123 C) 1 D) 3

参考答案:B

f函数的作用是将int型数组构造成一个整型数。f函数采用递归的方式来实现,位数是递增的。有题设可知结果为123,因此输出结果为B选项。

34、有以下程序

#include #include main()

{ char ss[10]=\ strcat( ss, \ gets( ss );

printf(\}

执行时输入:ABC<回车>,则输出结果是 A) 123456ABC B) ABC9 C) ABC

D) ABC456789 参考答案:C

gets(ss)读入一串字符串,直到遇到回车,读入的数据从数组的起始位置覆盖。数组s里的内容是ABC\\056789\\0,因此打印出ABC。故答案为C选项。

35、有以下程序

#include #include main() {

printf(\}

程序运行后的输出结果是 A) 3 B) 13 C) 1 D) 0

参考答案:A

C语言转义字符是一个字符。字符串0\\t\\n\\0C011,共有0,\\t, \\n三个字符。strlen()遇到\\0计数结束,因此计数为3,故答案为A选项。

36、有以下程序

#include int show( char *str ) { while (*str)

{ putchar(*str+1); str++;

}

return *str+1; }

main( ) {

printf(\}

程序运行后的输出结果是 A) ABCD0 B) BCDE0 C) BCDE1 D) ABCD1

参考答案:C

putchar()每次输出一个字符,根据*str+1,因此ABCD每个字符都加1, 最后'\\0'=0,因此最后输出1,故答案BCDE1。故答案为C选项。

37、有以下程序

#include void my_put() { char ch;

ch = getchar();

if (ch != 'C') my_put(); putchar(ch); }

main( ) {

my_put(); }

执行时输入:ABC<回车>,则输出结果是 A) ABC B) CBA C) AB D) ABCC

参考答案:B

my_put()递归,直到输入了C,开始返回。递归使用的是栈的思想,因此最后输入进去的最先返回,并打印。因此结果是CBA。答案为B选项。

38、有以下程序

#include void fun(int n)

{ static int x[3]={1,2,3}; int k;

for( k=0; k<3; k++ ) x[k] += x[k]-n;

for( k=0; k<3; k++ ) printf(\

}

main()

{ fun(0); fun(1); } 程序运行后的输出结果是 A) 1,2,3,0,1,2, B) 2,4,6,1,3,5, C) 2,4,6,3,7,11, D) 2,4,6,4,8,12, 参考答案:C

第一次调用fun()函数,此时n=0,数组x是静态的,因此,只在第一次时初始化,有

x[k]+=x[k]-n,计算可知,x[]={2,4,6},第二次调用fun(), 此时n=1,x[]={2,4,6},经计算的x[]={3,7,11},故打印结果为2,4,6,3,7,11。答案为C选项。

39、有以下定义

struct person { char name[10]; int age; }; struct person class[10]={ \ \ \ \ }; 能输出字母M的语句是

A) printf(\B) printf(\C) printf(\D) printf(\ 参考答案:A

C语言规定数组的下标从0开始,结构体变量class初始化了前4项,第三项的name=\,class[2].name[0]=`M`,故答案为A选项。

40、若要通过位运算使整型变量a中的各位数字全部清零,以下选项正确的是 A) a=a^0; B) a=a|0; C) a=a&0; D) a=!a;

参考答案:C

异或运算^,位相同为0,不同为1,或运算|只用对应位有1,结果为1,否则为0,与运算&,对应位都为1,才为1,否则为0,=!不等于。只有与0按位与,才能保证任意数的所有位清零,可得答案为C选项。


全国计算机二级C选择题题库第36套(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数电实验报告模板

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: