C语言笔试题带答案 下载本文

(31)以下程序的输出结果是_________。

main()

{ char str[12]={‘s’,‘t’,‘r’,‘i’,‘n’,‘ g’};

printf(”%d\n”,strlen(str));

}

A)6 B)7 C)ll D)12

答案:A

评析:在c语言中,字符串的长度是其首字符到NULL(不含)字符的总字符个数。本题定义字符数组str的同时,对第7个元素,由系统自动添加上“\0”,故字符串的长度为6。

(32)请读程序段:

char str[]=”ABCD”,*p=str;

printf(”%d\n”,*(p+4));

程序段的输出结果是_________。

A)68 B)0

C)字符‘D’的地址 D)不确定的值

答案:B

评析:在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志“\0”,故指向字符数组的指针p的+(p+4)的值为“\0”。由于“\0”的编码值就是0,所以本题输出为0。

(33)若有定义:int a[4][10];,则以下选项中对数组元素a[i][j]引用错误的是________。

(0<=i<4,0<=j<10)

A)*(&a[O][O]+10*i+j) B)*(a+i)+j

C)*(*(a+i)+j) D)*(a[i]+j)

答案:B

评析:本题中选项B是错误的引用,*(a+i)+j只代表了a[i][i]的地址。

(34)设有以下语句:

char strl[]=”string”,str2[8],。str3,。str4=”strin∥;

则__________不是对库函数的正确调用。

A)strcpy(strl,”HELLOl”); B)strcpy(str2,”HELL02”);

C)strcpy(str3,”HELL03”); D)strcpy(str4,”HELL04”);

答案:C

评析:c语言中:sgcpy(stl,st2);,其两个参数均为字符指针或字符数组,选项c中的目的串指针str3没有指向具体有效的存储单元,故是错误的调用。

(35)请读程序:

#include

#include

main()

{ char*sl=”AbCdEf”,*s2=”aB”;

s1++;s2++;

printf(”%d\n”,strcmp(s 1,s2));

}

上面程序的输出结果是___________。

A)正数 B)负数 C)零 D)不确定的值

答案:A

评析:函数strcmp的功能是比较字符串s1和s2,如果sl>s2,则返回个正数;如果sls2,所以函数的值为正数。

(36)下面程序的输出是_________。

char s[]=”ABcD”;

main()

{ char*p;

for(p=s;p

printf(”%s\n”,p);

}

A)ABCD B)A C)D D)ABCD

BCD B C ABC

CD C B AB

D D A A

答案:A

评析:在第一次执行for循环时,字符数组的首地址赋给了指针变量p,使得指针变量p指向了s的首地址,输出p所指向的字符串;第二次执行for循环时,p值增加1,p指向了s的第二个元素输出BCD;第三次输出CD;第四次输出D;直到p指向字符串的结束字符“\0”,for循环终止执行。

(37)以下程序输出的结果为__________。

main()

{ char* alpha[6]={“ABCD”,

EFGH”,”IJKL”,”MNOP”,”QRST”,”UVwX”};

char**p;

int i:

p=alpha;

for(I=0;i<4;i++)

printf(”%s”,p[I]);