二级C语言笔试选择题-1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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语言中,预处理命令行都以”#”开头