A)预处理命令行必须位于源文件的开头
B)在源文件的一行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间 答案:D
评析:通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令:宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。
(38)若有以下说明和定义 union dt
{int a;har b;ouble c;}data;
以下叙述中错误的是________。
A)data的每个成员起始地址都相同
B)变量data所占的内存字节数与成员c所占字节数相等
C)程序段:data.a=5;pintf(―%f\\n‖,data.C);输出结果为5.000000
D)data可以作为函数的实参 答案:C
评析:union是表示共用体的关键字,成员a,b,c共占用同一个内存空间,data的每个成员起始地址都相同;共用体变量所占的内存长度等于最长的成员的长度,故变量‘data所占的内存字节数与成员c所占字节数相等;执行―data.a=5;printf(―%f\\n‖,data.C);‖printf
函数只是将内存中的数据以不同的类型输出,而不能将内存中的整型数据自动转换为等值的浮点数,故C是错误的。
(39)以下语句或语句组中,能正确进行字符串赋值的是________。
A)char*sp;*sp=‖right!‖; B)char s[lO];s=‖right! ―;
C)char s[10];*s=‖right! ―; D)char*sp=‖right! ―; 答案:D
评析:选项A定义了字符型的指针变量sp,则*sp存储的是第一个字符,而给它赋的是字符串,故错;
选项B表示代表数组的首地址,而题中给它赋的是字符串,所以错误;
选项c定义了一个字符型的数组s[10],再通过+s给数组元素赋初值,这时是与选项A相同的错误。
(40)设有如下说明
typedef struct ST
{long a; int b; char c[2];}NEW;
则下面叙述中正确的是________。
A)以上的说明形式非法 B)ST是一个结构体类型
C)NEW是一个结构体类型 D)NEW是一个结构体变量 答案:C
评析:typedef关键字用于声明一个新的类型名代替已有的类型名。
本题中如果没有用typedef进行定义的话,则struct ST为结构体类型,现在用typedef定义后,相当于用NEW代表了struct ST这一结构体类型,故NEW为结构体类型。
(41)有以下程序 main()
{ int a=1,b;
for(b=l;b<10;b++)
{ if(a>=8)break;
if(a%2==1){a+=5;continue;} a-=3; )
printf(―%d\n‖,b); }
程序运行后的输出结果是________。
A) 3 B)4 C) 5 D) 6 答案:B
评析:break和continue的区别是:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,.不再判断执行的条件是否成立。
(42)有以下程序 main()
{ char s[]=‖l 59″,*p; p=s;
printf(―%c‖,*p++);printf(―%c‖,*p++); }
程序运行后的输出结果是________。
A)15 B)16 C)12 D)59 答案:A
评析:本题通过―p=s‖将指针变量p指向字符数组s,在第一次输出时,由于++和*为同一优先级,―*p++‖相于―+(p++)‖。p指向s[1],输出为s[1]的值。
(43)有以下函数
fun(char*a,char*b)
{ while((*a!=‘\0‘)&&(*b!=‘\0‘)&&(*a==b))
{a++;b++; }
return(*a-*b); }
该函数的功能是________。
A)计算a和b所指字符串的长度之差
B)将b所指字符串连接到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小 答案:D
评析:字符串的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到?\0‘为止,相等,则返回0,否则返回第一个不等字符串的ASCII码的差值。
(44)有以下程序 main()
{ int num[4][4]={{1,2,3,4},{5,6,7,8),{9,10,11,12},{13,14,15,16}},i,j;
for(i=O;i<4;i++)
{ for(j=0;j<=i.j++)printf(―%4c‖,‘ ‘);
for(j______; j<4;j++)printf(―%4d‖,num[i][j]);
printf(―\n‖); } }
若要按以下形式输出数组右上半三角