(28)有如下程序 main() { int x=3; do { printf("%d",x--);} while(!x); } 该程序的执行结果是________。 A)321 B)3 C)不输出任何内容 D)陷入死循环 答案:B 评析:本题x赋初值为3,当执行printf("%d",x--);时,由于X--的作用是先运算x,再将x的值减l,所以,printf输出的x值为3,等输出后,x的值减1变为2,继续执行,判断条件!x为假,循环只被执行一次。 (29)设有声明语句:char a=’\72’;则变量a__________ A)包含1个字符 B)包含2个字符 C)包含3个字符 D)声明不合法 答案:A 评析:转义字符常量’\xx’可以把’\’后面的数字转换为对应的ASCII字符。 (30)有以下程序段: main() { int a=5,*b,**c c==&b;b=&a; } 程序在执行了c=&b;b=&a;语句后,表达式ttc的值是__________。 A)变量a的地址 B)变量b中的地址 C)变量a中的值 D)变量b的地址 答案:C 评析:指针变量是用来存放地址的。&:取地址运算符。+:指针运算符。**c为指针变量*c所指向的存储单元,*c为指针指针变量c所指向的存储单元,而c=&b表示c为变量b的地址,b=&a表示b为变量a的地址。表达式一c的值就是变量a中的值。 (31)有如下函数调用语句 func(recl,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是________。 A)3 B)4 C)5 D)有语法错误 答案:A 评析:(rec4,rec5)是逗号表达式,它的值是rec5的值。所以该函数调用语句含有的实参个数是3。 (32)有如下程序 main() { char s[115]={.tabc","de","fgh"}; printf("%e",s[2][6]); } 其输出为__________。 A)不确定 B)编译错误 C)g D)输出null字符 答案:A 评析:由于s[2116]表示字符串已超出了数组s的表示范围,在c中不会对数组越界进行检查,当数组越界时,会得到一个不确定的值。 (33)有如下程序 int rune(ira a,int b) { remm(a+b);} main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); primf("%d\n",r); } 该程序的输出结果是________。 A)12 B)13 C)14 D)15 答案:D 评析:调用函数func(x,y),返回x+y,即7;再调用函数func(7,z),返回7+z,即15。 (34)有如下程序段 int *p,a=10,b=l; p=&a; a=*p+b; 执行该程序段后,a的值为_________。 A)12 B)11 C)10 D)编译出错 答案:B 评析:执行p=&a;后,p指向整数a,*p即p的目标变量,也就是a;所以a=*p+b等价于a=a+b,可知a的值最终为11。 (35)有以下程序: int*f(int*x,int*y) { if(*x<*y)return x; els [1] [2] [3] [4] [5] [6] [7] 下一页 |