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

}

A)ABCDEFGHIJKL B)ABCD

C)ABCDEFGHIJKLMNOP D)AEIM

答案:C

评析:alpha[O]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此类推。当执行p=alpha后,p指向指针数组alpha的首地址。for循环中输出了4个字符串。

(38)下面程序的输出结果是_________。

#include

main()

{ char*p[]={”B00L”,”0PK”,”H”,”SP”};

int i:

for(i=3;i>=0;i–,i–)

printf(“%c”,*p[i]);

printf(”\n”);

}

A)SO B)SP C)SPOPK D)SHOB

答案:A

评析:p[0]存放的是“BOOL\0”的首地址;p[1]存放的是“OPK\0”的首址等。

在printf语句中输出的+p[I]表示p[i]字符串的第一个字符。在for循环中,i的初值为3,那么输出的第一个字符为“s”,接着两次i–,则输出的值为+p[1],即字符“0”,所以本题的输出为SO。

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

#include

void prt(int*x,int*y,int*z)

{ printf(”%d,%d,%d\n”,++*x,++*y*(z++));}

int a=10,b=40,c=20;

main()

{ prt(&a,&b&C);

prt(&a,&b,&C);

}

A)ll,42,3l B)ll,41,20 C)1l,21,40 D)11,41,2l

12,22,41 12,42,20 11,2l,41 12,42,22

答案:B

评析:由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。

(40)若一个外部变量的定义形式为static int x;,那么,其中static的作用应该是_______。

A)将变量存储在静态存储区

B)使变量x可以由系统自动初始化

C)使x只能在本文件内引用

D)使x的值可以永久保留

答案:C

评析:事实上,无论有无static修饰,外部变量都具有A、B和c三种特性。作为一种修饰,static仅是限制此类型外部变量的引用范围:只能在定义它的文件范围内使用。

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

#include

#define SQR(x)x*x

main()

{ int a,k=3;

a=++SQR(k+1);

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

}

A)8 B)9 C)17 D)20

答案:B

评析:本题宏替换中遇到形参x以实参k+l代替,其它字符不变。sQR(k+1)展开后应为字符串k+l*k+l。

(42)下面是对宏定义的描述,不正确的是_______。

A)宏不存在类型问题,宏名无类型,它的参数也无类型

B)宏替换不占用运行时间

C)宏替换时先求出实参表达式的值,然后代入形参运算求值

D)宏替换只不过是字符替代而已

答案:C

评析:宏替换实质上就是字符替代,它不可能进行计算,故c错误。带参数的宏与函数相比,宏在程序编译之前已经将代码替换到程序内,执行时不会产生类似于函数调用的问题,可以说不占用运行时间。

(43)以下程序(程序左边的数字为附加的行号)________。

1#include

2#include

3main()

4{char s[]=”string”;

5 puts(s);

6 strcpy(s,”hello”);

7 printf(”%3s\n”,s);}