贵州大学2012-2013学年第二学期考试复习题C语言程序设计一、单选题(请将正确答案写在答题纸,1~20题每题1分,21~35题每题2分,共50分)1. 下列关于C语言的说法不正确的是( D )。
A.C语言既具有高级语言的一切功能,也具有低级语言的一些功能B.注释可以出现在程序中任意合适的地方C.C语言中的每一条执行语句都必须用分号结束,分号是C语言的一部分D.定义函数的首行要加分号2. C语言程序的执行顺序是(B )。
A.从第一个函数开始执行B.从main函数开始执行C.从任意函数开始执行D.从第一条语句开始执行3. 以下关于注释的叙述,正确的是(D )。
A.注释参与编译,影响程序结果B.注释不参与编译,但影响程序结果C.注释参与编译,但不影响程序结果D.注释不参与编译,不影响程序结果4. 以下叙述正确的是(A )。
A.C语言程序可以在任意C编译器下编译B.C语言程序只能在TC环境下编译C.C语言程序只能在VC或TC环境下编译D.C语言程序只能在VC环境下编译5. C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(B )。
A.必须为字母B.必须为下划线或字母C.必须为下划线D.可以是字母,数字和下划线中任一字符6. 下面四个数字常量选项中,均正确的是(D )。
A.016 0x8f 018B.0312 7ff -087C.0xbc 0a7 0xaD.070 0xf1 0x197. 若有说明语句:char c=0x7f;则变量c( B )。
A.包含3个字符B.包含1个字符C.包含2个字符D.说明不合法,c的值不确定8. 设有int x=11;则表达式(++x*1/3)的值是(B )。
A.3B.4C.11D.129. 阅读下面程序段,输出结果为(C )。
#include "stdio.h"void main(){ char c;c=('z'-'a')/3+'A';putchar(c);}A.HB.JC.ID.K10. 若有定义和语句:int a=23,b=023; printf(“%x,%d \n”,a,b); 输出结果是( D )。
A. 17,15B.17,18C.18,19D. 17,1911. 已有定义语句:int x=3,y=4,z=5;则值为0的表达式是(D )。
A.y%z>=y-zB.x<=++yC.x!=y+z>y-zD.x>y++12. 有如下程序#include "stdio.h"void main(){float x=3.0,y;if(x<0.0) y=0.0;else if(x<10.0) y=1.0/x;else y=1.0;printf("%f\n",y);}该程序的输出结果是( A )。
A. 0.333333B.0.250000C. 0.000000D.1.00000013. 有以下程序#include <stdio.h>void main(){ int i=5;do{ if (i%3==1)if (i%5==2){ printf("*%d", i); break;}i++;} while(i!=0);printf("*%d\n",i);}程序的运行结果是( C )。
A.*2*6B.*3*5C.*7D.*514. 以下程序段的变量已正确定义for(i=0;i<4;i++,i++,i++)for(k=1;k<3;k++)printf("#");程序段的输出结果是( B )。
A.########B.####C.##D.#15. 有以下程序#include <stdio.h>void main(){ int s[12]={2,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d ",c[i]);printf("\n");}程序的运行结果是( A )。
A. 3 4 3 2B.2 3 4 4C. 1 2 3 4D.1 1 2 316. 有下列程序:#include <stdio.h>#include <string.h>void f(char p[ ][10],int n){ char t[10]; int i,j;for (i=0;i<n-1; i++)for (j=i+1; j<n; j++)if(strcmp(p[i], p[j])>0) {strcpy(t, p[i]); strcpy(p[i], p[j]); strcpy(p[j], t); }}void main( ){ char p[5][10]={"1ha", "abbdfg", "aabd", "dcdbe", "cd"};f(p, 5);printf("%d\n", strlen(p[0]));}程序运行后的输出结果是( D )。
A.2B.4C.6D.317. 有下列程序:#include <stdio.h>#include <string.h>void main(){ char p[20]={'a', 'b', 'c', 'd'}, q[]="ab", r[]="abcde"; strcpy(p+strlen(q), r); strcat(p, q);printf("%d %d\n", sizeof(p), strlen(p));}程序运行后的输出结果是( A )。
A.20 9B.9 9C.20 11D.11 1118. 以下正确的函数定义(函数的功能求两数之和)是(C )。
A.int fun(int x, int y) { z=x+y ; return z ; }B.fun (int x,int y) { double z ;z=x+y ; return z ; }C.int fun(int x,y) { int z ; return z ;}D.int fun (int x, int y) { double z ;return z ; }19. 以下func函数的调用中实参的个数是( B )。
func((exp1,exp2),(exp3,exp4,exp5));A.1B.2C.5D.320. 有以下程序:#include <stdio.h>int fun1(double a){return a*=a;}int fun2(double x,double y){double a=0,b=0;a=fun1(x); b=fun1(y); return (int)(a+b);}void main(){double w; w=fun2(2.2,2.0);……}程序执行后变量w中的值是( D )。
A.8.84B.5.0C.8D.8.021. 若有以下程序:#include<stdio.h>void f(int n);void main(){ void f(int n);f(5); }void f(int n){printf("%d\n",n); }则以下叙述中不正确的是(D )。
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB.函数f无返回值,所以可用void将其类型定义为无值型C.对于以上程序,编译时系统不会提示出错信息:提示对f函数重复说明D.若在主函数前对函数f进行说明,则在主函数和其他函数中都可以正确调用函数22. 以下叙述不正确的是( A )。
A.在函数内复合语句中定义的变量也可在本函数范围内有效B.函数中的形式参数是局部变量C.在函数内定义的变量只在本函数范围内有效D.在不同的函数中可以使用同名的变量23. 若有以下定义,则对a数组元素地址的正确引用是(C )。
int a[10],*p=a;A.p+10B.*a+1C.&a[9]D.&a+125.下面程序段的运行结果是(D )。
char *s="abcde";s+=3; printf("%d",s);A.cdeB.字符'c'C.无确定的输出结果D.字符'd'的地址26. 已定义以下函数fun(char *pa, char *pb){ while((*pb=*pa)!='\0'){pa++;pb++;}}函数的功能是( D )。
A.检查pa和pb两个指针所指字符串中是否有'\0'B.将pa所指字符串的地址赋给指针pbC.对pa和pb两个指针所指字符串进行比较D.将pa所指字符串复制到pb所指内存空间中27. 表达式y=(12>13?15:6>7?8:9)的值为(C )。
A.1B.8C.9D.1528. 下列能正确定义字符串的语句是( B )。
A.char str[ ]={'\x6f'};B.char str[ ]="\101\0";C.char str="k";D.char str=";29. 有下列程序:#include <stdio.h>#include<string.h>void main(){ char p[ ]={'a', 'b', 'c'},q[10]={ 'a', 'b', 'c'};printf("%d%d\n",strlen(p),strlen(q));}下列叙述中正确的是(D )。
A.在给p 和q 数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3B.由于q 数组中没有字符串结束符,长度不能确定,但p 数组中字符串长度为3C.由于p 和q 数组中都没有字符串结束符,故长度都不能确定D.由于p 数组中没有字符串结束符,长度不能确定,但q 数组中字符串长度为330. C语言程序由函数组成,它的( A )。