二级C语言笔试选择题-1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二级C语言笔试选择题-1

(总分:93.00,做题时间:90分钟)

一、选择题(总题数:55,分数:93.00)

1.有以下程序

#include<stdio.h>

main()

int a[3][4]=(1,3,5,7,9,11,13,15,17,19,21,23,(*p)[4]=a,i,j,k=0;

for(i=0;i<3;i++)

for(j=0;j<2;j++)k=k+*(*(p+i)+j);

printf("%d/n",k);

程序运行后的输出结果是______。

A.60 B.68 C.99 D.108

(分数:2.00)

A. √

B.

C.

D.

解析:[解析] k累加a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1],结果为60,答案选择A。2.以下不能将s所指字符串正确复制到t所指存储空间的是______。

A.do*t++=*s++;while(*s); B.for(i=0;t[i]=s[i];i++);

C.while(*t=*s)t++;s++; D.for(i=0,j=0;t[i++]=s[j++];);

(分数:2.00)

A. √

B.

C.

D.

解析:[解析] do{*t++=*s++;}while(*s);不能。因为当*s=0 时,while(*s)跳出循环,这样字符串结束标志/0 没有复制给*t,造成*t不完整。注意,*t++=*s++是先执行*t=*s,然后才进行t=t+1,s=s+1。选项B、C、D都能将/0 复制过去。

3.有以下函数

int fun(char*x,char*y)

int n=0;

while((*x==*y)&&*x!='/0')x++;y++;n++;

return n;

函数的功能是______。

A.统计x和y所指字符串中最前面连续相同的字符个数

B.查找x和y所指字符串中是否有'/0'

C.将y所指字符串赋给x所指存储空间

D.统计x和y所指字符串中相同的字符个数

(分数:2.00)

A. √

B.

C.

D.

解析:[解析] 本题中由循环条件可知,当遇到“/0”或“x与y所指的字符的值不相等”其中的一个条件时就结束循环,因此本题函数的功能是统计x和y所指字符串中最前面连续相同的字符个数。

4.有以下程序

#include<stdio.h>

main()

char ch[]="uvwxyz",*pc;

pc=ch;

printf("%c/n",*(pc+5));

程序运行后的输出结果是______。

A.z B.0

C.元素ch[5]的地址 D.字符y的地址

(分数:2.00)

A. √

B.

C.

D.

解析:[解析] main函数输出字符串第6个元素对应的数据,所以答案为A。

5.设有如下程序段

#include<stdio.h>

char s[20]="Beijing",*p;

p=s;

则执行p=s;语句后,以下叙述正确的是______。

A.可以用*p表示s[0]

B.s数组中元素的个数和p所指字符串长度相等

C.s和p都是指针变量

D.数组s中的内容和指针变量p中的内容相同

(分数:2.00)

A. √

B.

C.

D.

解析:[解析] 本题主要考查的是字符数组、字符串和字符指针的一些概念。数组元素个数,是在定义数组的时候确定的,本题的s数组元素个数是20。而字符串长度,是从该字符串的第1个字符开始,一直到/0 字符为止,所历经的字符个数,/0 不算在内。所以本题p所指字符串("Beijing")的长度为7。因此选项B 的叙述不正确。s是数组名,而不是指针变量,因此选项C不正确。数组s中除了包含字符串“Beijing”外,还包含其后的20个以内字节的内容,而指针变量p中包含的只是数组s的首地址。因此选项D的说法也不正确。

6.若有以下程序段

char str[4][12]="aa","bbb","ccccc","d",*strp[4];

int i;

for(i=0;i<4;i++)strp[i]=str[i];

不能正确引用字符串的选项是______。

A.strp B.str[0] C.strp[3] D.*strp

(分数:2.00)

A. √

B.

C.

D.

解析:[解析] strp是字符串指针数组,不能作为字符串的引用。

7.有以下程序

#include<stdio.h>

main()

int a[5]=2,4,6,8,10,*p,**k;

p=a;k=&p;

printf("%d",*(p++));

printf("%d/n",**k);

程序运行后的输出结果是______。

A.2 4 B.4 4 C.2 2 D.4 6

(分数:2.00)

A. √

B.

C.

D.

解析:[解析] *(p++),表达式为a[0]的值,为2,执行后p指向a[1],**k为*p实际为a[1],输出4,所以选择A。

8.设有以下函数:

void fun(int n,char*s)

……

则下面对函数指针的定义和赋值均正确的是______。

A.void(*pf)(int,char*);pf=fun; B.void*pf();pf=fun;

C.void*pf();*pf=fun; D.void(*pf)(int,chad;)pf=&fun;

(分数:2.00)

A. √

B.

C.

D.

解析:[解析] 赋值给函数指针,需要函数的参数一致,返回值一致,才可以赋值。选项A正确。

9.以下叙述中正确的是______。

A.在C语言中,预处理命令行都以”#”开头

相关文档
最新文档