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

答案:D

评析:选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条件的值;选项c中,表达式表示的是0,因为没有满足条件的值;选项D表示的是a和b为同号。

(24)若己定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的

表达式是__________。

A)p+l B)a+l C)a++ D)++p

答案:C

评析:数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其它元素。

(25)以下程序的输出结果是__________。

main()

{ int a==-1,b=1,k;

if((++a<0)&&!(b–<=0))

printf(”%d %d\\n”,a,b);

else

printf(”%d %d\n”,b,a);

}

A)-1 l B)0 l

C)1 0 D)0 0

答案:C

评析:逻辑运算符的优先次序如下:!(非)→&&(与)→‖(或),但本题需特别、注意的是短路的概念。

(26)下面程序的输出结果是__________。

#define P1(x)printf(x)

main()

{

char d[]。”p”;

Pl(d);

P1(”d”);

}

A)pd B)d”d” C)”p”d D)”p””d”

答案:A

评析:带参数的宏定义的一般形式为:#define宏名(参数表)字符串

程序中的Pl(d);经宏置换后为printf(d);,所以输出字符串p;程序中的Pl(“d”);经宏置换后printf(“d”)。

(27)以下选项中,能定义s为合法的结构体变量的是__________。

A) typedef struct abc

{ double a;

charb[10];

}s;

B) struct

{ double a;

char b[10];

}s;

C) struct ABC

{ double a;

char b[10];

}

ABC s:

D) typedef ABC

{ double a;

char b[10];

}

ABC s:

答案:B

评析:定义一个结构体类型的变量,可采用三种方法:

①先定义结构体类型,再定义变量名;②在定义类型的同时定义变量:③直接定义结构类型变量,即不出现结构体名:选项B符合第三种定义方法。

(28)请读程序:

#include

#include

main()

{

char*s1=”AbCdEf”, *s2=”aB”;

s1++; s2++;

printf(”%d、n”,strcmp(sl,s2));

}

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

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

答案:A

评析:strcmp(X1,X2)是串比较函数,本题中“s1”、“s2”分别表示这两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,则*sl为“bCdEf’’,*s2为“B”。在字符串比较中,大小的确定是各个字符串相应位置字符的ASCII码值的大小决定的, sl>s2,返回值为正数。