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

评析:cp=c这个语句是将数组第0行的地址赋给了cp。cp+1使指针指向二维数组c的第一行;+(cp+3)是数组c的第三行的第0列的地址值;+(cp+1)+3是数组c的第一行第三列的地址值。

(40)下列选项中不能正确定义结构体的是_________。

A)typede fstruct B)struct color c1

{ int red; { int red;

int green; int green;

int blue; int blue;

}cOLOR; };

COLOR cl;

C)struct color D)struct

{ int red; { int red;

int green; int green;

int blue; int blue;

}cl; }cl;

答案:B

评析:将一个变量定义为标准类型与定义为结构体类型不同之处在于:后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(例如,struct color),不能只指定结构体名。其中可以不出现结构体名,答案D就是缺省结构体名的情况。而变量名列表必须放在成员列表后面,所以B答案不能正确将c1定义为结构体变量。

(41)设有以下语句

char a=3,b=6,c;

c=a^b<<2:

则c的二进制值是_________。

A)00011011 B)00010100 C)00011100 D)00011000

答案:A

评析:“<<”是c语言中规定的左移运算符,n是异或运算符,所以,c的二进制值应为0001 1011。

(42)设有如下定义

struct ss

{ char name[10];

int age;

char sex;

}std[3],*p=std;

下列各输入语句中错误的是__________.

A)scanf(”%d”,&(*p).age); B)scanf(”%s”,&std.name);

C)scanf(”%c”,&std[O].sex); D)SCanf(”%c”,&(p->SEX));

答案:B

评析:在c语言中,结构体变量的引用有三种等价方式:

1、结构体变量.成员名;2、(*p).成员名;3、p->成员名。

因为std.name是字符数组名,-本身代表地址,其前面不应该使用“&”符号,所以选项B错误。

(43)设有

static char str[]=”Beijing”;

则执行

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

后的输出结果为__________。

A)5 B)7 C)12 D)14

答案:A

评析:在执行printf()函数前,数组str的长度是7,但是当使用strcpy()函数将新的值赋给str后,strlenr)函数返回的应当是现在的str字符串的字符个数,即是5。

(44)下列程序段中,不是死循环的是__________。

A)int i=100; B)unsigned k=0;

while(1) do

{ {

i=i%100+l: ++k;

if(i>=100)break; }

} while(k>=0);

C)for(;;); D)int s=3379;

while(s++%2+s%2)s++;

答案:A

评析:当表达式为非0值时,执行while语句中的内嵌语句,可用break语句跳出循环,用continue语句结束本次循环。选项A不是死循环,当i=100时跳出循环。选项c为空循环语句。

(45)以下程序的输出结果是________。

#include

main()

{ int i;

for(i=l;i<5;i++){

if(i%2)print引剃’);

else continue;

printf(”≠f”);

}

printf(”$\n”);