计算机等级考试二级C语言考前密卷[1]下
(26)下列程序执行后输出的结果是___________。 int d=l: fun(int p) { int d。5; d+=p++; printf("%d,",d); } main() { int a=3; fun(a); d+=a++: printf("%d\n",d); } A)8,12B)9,13C)8,4D)9,5 答案:C 评析:本题执行过程如下:首先调用fun函数,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行"d+=a++ ",此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。 (27)已知下面的程序段,正确的判断是_________。 #define A 3 #define B(A)((_A+1)’a) int a=3: …… X=3*(A+B(7)); A)程序错误,不允许嵌套定义B)X=93 C)X=8lD)程序错误,宏定义不允许有参数 答案:C 评析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。 (28)定义int*swap()指的是_______。 A)一个返回整型值的函数swap() B)一个返回指向整型值指针的函数swap() C)一个指向函数swap()的指针,函数返回一个整型值 D)以上说法均错 答案:B 评析:一个函数可以带回一个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和·号,由于f)优先级高于t。故它是一个返回整型指针的函数。 (29)以下程序段的输出结果是__________。 main() { char s1[10],s2[10],s3[10]; scanf("%s",s1);gets(s2);gets(s3); puts(s 1);puts(s2);puts(s3); } 输入数据如下: (此处 aaa bbb A)aaaB)aaaC)aaa\0bbb\0D)aaabbb bbb bbb 答案:B 评析:scanf是标准输入函数,在输入字符串aaa时,实际的内容为"aaa ","\0"是由系统自动加入的;gets的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以"\0"代替换行符。 (30)下述函数功能是________。 Int fun(char*x) { char*y=x; while(*y++); return y-x-l; } A)求字符串的长度 B)求字符串存放的位置 C)比较两个字符串的大小D)将字符串x连接到字符串y后面 答案:A 评析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。 首页 1 2 3 4 5 6 7 尾页 相关资料 |