2009年4月,全国计算机等级二级C考试你准备好了没?考计算机等级二级C语言考试的朋友可以多关注一下考试大为大家整理的2009年4月,全国计算机等级二级C语言考前练习!希望对大家的备考有好的帮助!考试大祝各位考个好成绩!大家每天都来练习哦!不断的加强巩固!每天都有更新哦!继续上一篇... (1)下列程序执行后输出的结果是___________。 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,12 B)9,13 C)8,4 D)9,5 答案:C 评析:本题执行过程如下:首先调用fun函数,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行"d+=a++",此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。
(2)已知下面的程序段,正确的判断是_________。 #define A 3 #define B(A)((_A+1)'a) int a=3: …… X=3*(A+B(7)); A)程序错误,不允许嵌套定义 B)X=93 C)X=8l D)程序错误,宏定义不允许有参数 答案:C 评析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。
(3)定义int*swap()指的是_______。 A)一个返回整型值的函数swap() B)一个返回指向整型值指针的函数swap() C)一个指向函数swap()的指针,函数返回一个整型值 D)以上说法均错 答案:B 评析:一个函数可以带回一个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和?号,由于f)优先级高于t。故它是一个返回整型指针的函数。
(4)以下程序段的输出结果是__________。 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)aaa B)aaa C)aaa\0bbb\0 D)aaabbb bbb bbb 答案:B 评析:scanf是标准输入函数,在输入字符串aaa时,实际的内容为"aaa","\0"是由系统自动加入的;gets的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以"\0"代替换行符。
(5)下述函数功能是________。 Int fun(char*x) { char*y=x; while(*y++); return y-x-l; } A)求字符串的长度 B)求字符串存放的位置 C)比较两个字符串的大小 D)将字符串x连接到字符串y后面 答案:A 评析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。
(6)以下程序的输出结果是_________。 main() { char str[12]={'s','t','r','i','n',' g'}; printf("%d\n",strlen(str)); } A)6 B)7 C)ll D)12 答案:A 评析:在c语言中,字符串的长度是其首字符到NULL(不含)字符的总字符个数。本题定义字符数组str的同时,对第7个元素,由系统自动添加上"\0",故字符串的长度为6。
(7)请读程序段: char str[]="ABCD",*p=str; printf("%d\n",*(p+4)); 程序段的输出结果是_________。 A)68 B)0 C)字符'D'的地址 D)不确定的值 答案:B 评析:在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志"\0",故指向字符数组的指针p的+(p+4)的值为"\0"。由于"\0"的编码值就是0,所以本题输出为0。
(8)若有定义:int a[4][10];,则以下选项中对数组元素a[i][j]引用错误的是________。 (0<=i<4,0<=j<10) A)*(&a[O][O]+10*i+j) B)*(a+i)+j C)*(*(a+i)+j) D)*(a[i]+j) 答案:B 评析:本题中选项B是错误的引用,*(a+i)+j只代表了a[i][i]的地址。
(9)设有以下语句: char strl[]="string",str2[8],。str3,。str4="strin∥; 则__________不是对库函数的正确调用。 A)strcpy(strl,"HELLOl"); B)strcpy(str2,"HELL02"); C)strcpy(str3,"HELL03"); D)strcpy(str4,"HELL04"); 答案:C 评析:c语言中:sgcpy(stl,st2);,其两个参数均为字符指针或字符数组,选项c中的目的串指针str3没有指向具体有效的存储单元,故是错误的调用。
(10)请读程序: #include #include main() { char*sl="AbCdEf",*s2="aB"; s1++;s2++; printf("%d\n",strcmp(s 1,s2)); } 上面程序的输出结果是___________。 A)正数 B)负数 C)零 D)不确定的值 答案:A 评析:函数strcmp的功能是比较字符串s1和s2,如果sl>s2,则返回个正数;如果sls2,所以函数的值为正数。
(11)下面程序的输出是_________。 char s[]="ABcD"; main() { char*p; for(p=s;p printf("%s\n",p); } A)ABCD B)A C)D D)ABCD BCD B C ABC CDC B AB D D A A 答案:A 评析:在第一次执行for循环时,字符数组的首地址赋给了指针变量p,使得指针变量p指向了s的首地址,输出p所指向的字符串;第二次执行for循环时,p值增加1,p指向了s的第二个元素输出BCD;第三次输出CD;第四次输出D;直到p指向字符串的结束字符"\0",for循环终止执行。
|