第一篇:c语言复习题
C 语言复习题(2013 版)
一、选择题
请把答案填写在下面的横线上,否则不能得分。
1.B 2.D 3.C 4.D 5.A 6.B 7.A 8.D 9.C 10.D 11.C 12.B 13.D 14.B 15.D 16.C 17.D 18.D 19.A 20.C 21.A 22.D 23.B 24.C 25.C 26.B 27.B 28.A 29.D 30.A 31.C 32.A 33.B 34.A 35.C 36.D 37.B 38.D 39.A 40.C 41.B 42.D 43.C 44.C 45.D 46.D 47.D 48.C 49.D 50.C 51.A 52.B 53.B 54.A 55.C 56.A 57.B 58.A 59.B 60.C 61.D 62.C 63.C 64.A 65.B 66.C 1.下列关于C 程序的说法错误的是()。
A)一个程序必须有一个main 函数B)函数首部后面必须有分号
C)可以使用“/* */”来注释一段代码D)每个语句的末尾必须有分号 2.下列关于C 程序的说法错误的是()。
A)stdio.h 是输入输出头文件B)一个C 语句必须以分号结束
C)VC6.0 中可以使用“//”来注释一行D)#define 命令不是预处理命令 3.下列选项中,不能作为C 语言标识符的是()。A)_total B)p405 C)$123 D)abc 4.若有“float x=123.41;printf(“%4.2f”,x);”,则执行后的输出结果为()。A)12.3 B)12.34 C)123.4 D)123.41 5.下列选项中,不能正确表示分式 4 的C 语言表达式是()。
A)4/3 B)4/3.0 C)1.0*4/3 D)4/(float)3 6.若有定义“int x,y;”,则表达式“x=1,y=x+3/2”的值为()。A)1 B)2 C)2.0 D)2.5 7.下列关于C 程序的说法错误的是()。
A)C 语言程序的基本组成单位是语句B)C 语言程序中一行可以写多条语句 C)每条语句必须以分号结束D)一个语句可以写在多行上 8.以下关于标识符的说法错误的是()。
A)标识符由字母、数字和下划线组成B)标识符不能与系统的关键字同名 C)首字符必须是字母或下划线D)不区分大小写,s 和S 是同一个变量 9.表达式7%4+7/2 的值是()。A)4 B)4.5 C)6 D)6.5 10.已知变量a 和b 是int 型,若有语句“scanf(“a=%d,b=%d”,&a,&b);”,使a 的值是5,b 的值是8,则正确的输入是()。
A)5 8↙ B)5,8↙ C)a=5 b=8↙ D)a=5,b=8↙ 11.若有定义“int a;float b;”,执行“scanf(“%3d%f”,&a,&b);”语句时,从键盘输入: 1234 567.8↙,则a 和b 的值分别是()。A)1234 和567.800000 B)123 和567.800000 C)123 和4.000000 D)234 和567.800000 12.执行“printf(“%f%%”,1.0/3);” 语句后,正确的输出结果是()。
A)0.3 B)0.333333% C)0.3% D)0.003% 13.若要定义符号常量PI 代表3.14,正确的预处理命令是()。A)#define PI 3.14;B)#define PI=3.14 C)define PI 3.14 D)#define PI 3.14 14.以下变量定义及初始化语句中正确的是()。A)double a=0.5;b=1.5;B)char a=97,b='b';C)int a=b=0;D)float a=1,b=&a;15.以下关于算法的描述中不正确的是()。A)算法中每一个步骤的含义都应该是确定的 B)算法中每一个步骤都应该能有效执行 C)正确的算法应在有限步骤内结束 D)正确的算法都必须有输入和输出
16.当一个关系表达式成立时,该表达式的值为()。A)-1 B)0 C)1 D)不确定的非0 值 17.关于if 语句的说法正确的是()。A)双分支语句中有可能两个分支都不执行 B)if 多分支语句中不能没有最后的else C)if 语句中可以使用continue 语句
D)else 总是与前面最近的、没有与其它else 配对的if 配对
18.要判断x 是否满足表达式“-1≤x≤1”,正确的C 语言表达式是()。A)-1<=x<=1 B)-1≤x≤1 C)x>=-1||x<=1 D)x>=-1&&x<=1 19.若有程序段“int x=10;while(x!=0)x=x-1;”,执行完该程序段后x 的值是()。A)0 B)-1 C)10 D)9 20.若有定义“float x,*p=&x;”,能正确输入一个值给x 的语句是()。
A)scanf(“%f”,x);B)scanf(“%lf”,&x);C)scanf(“%f”,p);D)scanf(“%lf”,&p);21.以下选项中,对变量的定义和初始化正确的是()。
A)int a,*p=&a;B)int a,*p=*a;C)int a,p=&a;D)int a,*p=a;22.逻辑运算符两侧运算对象的数据类型为()。A)只能是0 或者1 B)只能是0 或非0 正数
C)只能是整型或字符型数据D)可以是任何类型的数据
23.在c 语言中,执行完语句“for(i=1;i<=10;i++);”后,i 的值是()。A)10 B)11 C)1 D)不确定
24.定义了指向某个变量的指针,其含义是指针变量里存放的是该变量的()。A)值B)名C)地址D)一个标志
25.若有语句“int *pt, a=4;pt=&a;”,则下面均代表地址的一组选项是()A)a,pt B)&a,*pt C)&a,pt D)*pt,&pt 26.若有语句“float *p,m=3.14;”,想要建立如下图所示的存储结构,则正确的赋值语句是
()。p m A)p=m;B)p=&m;C)*p=m;D)*p=&m;27.有语句“int a=3, b=5, *p, *q;p=&a;q=&b;”,若要实现下图中所示的存储结构,则可以
使用的赋值语句是()。3.14
A)*p=*q;B)p=q;C)p=*q;D)*p=q;28.以下程序段中有个语句是错误的,则下列说法正确的是()。int *p, i;char *q, ch;p=&i;q=&ch;*p=4;p=q;A)p 和q 的类型不一致,不能执行语句p=q B)*p 中应该存放地址值,因此不能执行*p=4 C)q 虽然指向了具体的存储单元,但是该单元中没有具体的值,所以不能执行p=q D)q 没有指向具体的存储单元,所以不能执行p=q 29.若输入字符串:abcde<回车>,则以下while 循环体将执行()次。while((ch=getchar())=='e')printf(“*”);A)5 B)4 C)6 D)1 30.若i,j 已______定义为int 类型,则以下循环嵌套程序段中循环体一共要执行的次数是()。
for(i=5;i>0;i--)for(j=0;j<4;j++){...} A)20 B)25 C)24 D)30 31.关于函数的说法不正确的是()。
A)C 语言用函数实现模块的功能B)可根据需要自己来编写函数 C)可以在一个函数内定义另一个函数D)一个函数可以没有参数
32.C 程序中,若对函数类型未加显式说明,则函数类型默认为()。A)int B)void C)double D)int * 33.在函数内部定义的局部变量,若不对其存储类型进行说明,则默认为()。A)static B)auto C)extern D)以上均不对
34.若函数fun 被调用3 次,则最后一次的输出结果为()。void fun(){ int a=1;a+=2;printf(“a=%dn”,a);} A)a=3 B)a=5 C)a=7 D)a=9 35.若函数fun 被调用3 次,则最后一次的输出结果为()。void fun(){ static int a=1;q 5 b p 3 a
a+=2;printf(“a=%dn”,a);} A)a=3 B)a=5 C)a=7 D)a=9 36.如果在一个函数中的复合语句中定义了一个变量,则该变量()。A)在该函数中有效B)为非法变量
C)在本程序范围内均有效D)只在该复合语句中有效 37.C 语言规定,函数返回值的类型是由()。
A)调用该函数时系统临时决定B)在定义该函数时所指定的类型决定 C)return 语句中的表达式类型决定D)调用该函数时主调函数类型决定 38.putchar 函数可以向终端输出一个()。A)整型变量表达式值B)实型变量值 C)字符串D)字符或字符型变量值
39.执行以下程序段的输出结果是()。void fun(int x, int y){ x=10;y=20;} void main(){ int a=1, b=2;fun(a, b);printf(“%d, %dn”, a,b);} A)1,2 B)10,20 C)10,2 D)1,20 40.执行函数调用“fun('5')”得到的返回值为()。int fun(char ch){ return(ch>='0'&&ch<='9');} A)-1 B)0 C)1 D)2 41.关于局部变量的说法正确的是()。
A)有效范围是从定义开始到程序结束的所有函数 B)有效范围是从定义开始到函数结束 C)形参不是局部变量,而是全局变量 D)复合语句中不能定义局部变量
42.关于变量属性的说法错误的是()。
A)动态变量是在函数开始执行时分配内存单元,函数执行完毕后立即释放
B)静态变量是在函数的执行过程中始终占用同一内存单元,程序执行结束时才释放 C)全局变量都是静态变量,只有局部变量才有动态变量 D)动态变量若不赋初值,系统会自动赋值为0 43.若有变量定义“int x=5,*p=&x;”,则执行函数调用“fun(p);”时,传递给fun 函数的是()。
A)指针变量p 的地址B)指针变量*p 的值 C)变量x 的地址D)变量x 的值
44.以下数组的定义形式正确的是()。
A)int k=5,a[k];B)int a[ ];C)char c[]={'a'};D)char a(10);45.以下一维数组的定义及初始化中,错误的是()。A)int a[3]={0};B)int a[3]={1,1,1};
C)static int a[3];D)int n=3,a[n]={0};46.若有定义“int a[ ][3]={0,1,2,3,4,5,6,7};”,则元素a[1][2]的值为()。A)1 B)2 C)4 D)5 47.若有说明语句“int a[2][4]={{1},{2,3}};”,则数组元素a[1][1]的值为()。A)0 B)1 C)2 D)3 48.若有定义“char s1[20],s2[ ]=“China”;”,为使s1 的值与s2 相同,下列选项中正确的是()。
A)s1=s2;B)strcmp(s1,s2);C)strcpy(s1,s2);D)strcpy(s2,s1);49.为了比较字符串s 是否大于t,条件表达式应该写成()。A)s>t B)strcmp(s,t)<0 C)strcmp(s,t)==0 D)strcmp(s,t)>0 50.若有语句“int a[10],*p=&a[2];”,则执行语句“p=p+4;”后,p 指向的数组元素是()。
A)a[4] B)a[5] C)a[6] D)a[7] 51.执行以下程序段的输出结果是()。char s[ ]=“Program”,*ptr;for(ptr=s;*ptr!='g';ptr++)printf(“%c”,*ptr);A)Pro B)Prog C)Proram D)程序有错误 52.对以下说明语句的正确理解是()。int a[10]={6,7,8,9,10};A)将5 个初值依次赋给a[1]至a[5] B)将5 个初值依次赋给a[0]至a[4] C)将5 个初值依次赋给a[6]至a[10] D)因为数组长度与初值的个数不相同,所以此语句不正确 53.以下给字符数组str 定义和赋值正确的是()。
A)char str[10];str={“China!”};B)char str[ ]={“China!”};C)char str[10];strcpy(str, “abcdefghijkl”);D)char str[10]={“abcdefghijkl”};54.当接受用户输入的含有空格的字符串时,应使用()函数。A)gets B)getchar C)scanf D)printf 55.执行以下程序段的输出结果是()。int a[ ]={1,8,2,8,3,8,4,8,5,8};printf(“%d,%dn”,a[4]+3,a[4+3]);A)6,6 B)8,8 C)6,8 D)8,6 56.以下说法正确的是()。
A)p[i]等价于*(p+i)B)&p[i]等价于*(p+i)C)p[i]等价于p+i D)p[i]等价于*p+i 57.设有定义“double a[10], *s=a”,以下能够代表数组元素a[2]的是()。A)(*s)[2] B)*(s+2)C)*s[2] D)*s+2 58.执行下面程序段的输出结果是()。char s[ ]=“Prog”;char *p;for(p=s;p
用不正确的是()。
A)scanf(“%s”,stu.name);B)printf(“%d,%s,%dn”,stu);C)p->score=98;D)strcpy((*p).name,“LiMing”);60.已知如下定义,则下面叙述不正确的是()。struct stu{ int a;float b;}stutype;A)struct 是结构体类型的关键字
B)struct stu 是用户定义的结构体类型 C)stutype 是用户定义的结构体类型名 D)a 和b 都是结构体成员名
61.当定义一个结构体变量时,系统为它分配的内存空间是()。A)结构体中一个成员所需的内存容量 B)结构体中
10.C 语言中求字节的运算符是____________。
11.若有C 语言语句“scanf(“%d,%d”,&a,&b);”,如果要给变量a 输入5,变量b 输入6,则
在程序执行时,应该输入____________,然后回车。12.C 语言中表示换行的转义字符是____________。13.C 语言程序书写格式自由,一行可以写几个语句,一个语句也可以写在多行上。每条语 句的最后必须有一个____________符号表示语句的结束。
14.若有定义“int a=2,b=3,x;x=a>b?a:b;”,则x 的值为____________。
15.switch 语句中,为了在其它条件都不满足时执行某个操作,应该使用____________子句。
16.如果循环体不需要执行任何操作,此时应使用____________语句作为循环体。17.若要提前终止循环语句的执行,应该使用____________语句。
18.若有定义“int a,*p=&a;”,要通过指针变量p 来输入a 的值,请填空。scanf(“%d”,____________);19.若有定义“int x,*p;”,为了让p 指向x,应该执行的操作是____________。20.判断闰年的逻辑表达式为y%4==0&&y%100!=0______y%400______0。21.关系表达式的值是一个逻辑值,只有____________种取值。22.设“a=1,b=2,c=3,d=4,m=n=1”,执行完“(m=a>b)&&(n=c>d)”后,n 的值为____________。23.C 语言提供了3 种基本循环结构:while 循环、do-while 循环和____________循环。24.for 语句中有3 个表达式,各表达式间用____________分隔。25.除了给指针变量赋地址值外,还可以给指针变量赋空值,给指针变量p 赋空值的语句是 ____________。