C语言期末复习题
- 格式:doc
- 大小:79.50 KB
- 文档页数:19
《C程序设计》复习题 一、单项选择题(请从4个备选答案中选择最适合的一项,每小题1分,共20分) 1.算法具有5个特性,以下选项中不属于算法特性的是( )。 A) 有穷性 B) 简洁性 C) 有效性 D) 确定性 2.设有定义:float a=2,b=4,h=3;,其中a为梯形的上底,b为梯形的下底,h为梯形的高,以下C语言表达式不能计算出梯形面积的( ) A) (a+b)*h/2 B) (1/2)*(a+b)*h C) (a+b)*h*1/2 D) h/2*(a+b) 3.经int a=7; float x=, y=;说明后,表达式 x+a%3*(int)(x+y)%2/4 的值是( )。 A) B) C) D)
4.若t为double类型,表达式t=1,t+5, ++t的值是 A)1 B)
C) D) 5. 若有以下定义和语句: int u=010,v=0x10,w=10; printf(“%d,%d,%d\n”,u,v,w); 则输出结果是
A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,10 6. 以下选项中不合法的用户标识符是
A)_12 B)abc7 C)a-2 D)AS_88_mj 7. 若有以下定义和语句 char c1='b',c2='e'; printf("%d,%c\n",c2-c1,c2-'a'+"A"); 则输出结果是
A)2,M B)3,E C)2,E D)输出项与对应的格式控制不一致,输出结果不确定 8. 若有以下定义: char s[20]="programming",*ps=s; 则不能代表字符o的表达式是
A)ps+2 B)s[2] C)ps[2] D)ps+=2,*ps 9.设变量a为int,f为float,i为double,则表达式10+‘a’+i*f 的数据类型是( )。 A) int型 B) float 型 C) double型 D) 不确定 10.设a为int, 不能正确表达数学关系: 10A) 10 B) a==11 || a==12 || a==13 || a==14
C) a>10 && a<15 D) !(a<=10) && !(a>=15) 11.语句for(x=0,y=0;(y!=123)&&(x<4);x++);循环( )。 A) 是无限循环 B) 循环次数不定 C) 执行4次 D) 执行3次 12. 下面的程序 main( ) { int a,b,s; scanf("%d%d",&a,&b); s=a; if(s s=s*s; printf("%d\n",s); } 运行时,若从键盘输入3和2,则输出( )。 A) 14 B) 16 C) 18 D) 9 13. 若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i--) for(j=0;j<4;j++){...}
A)20 B)25
C)24 D)30 14. 若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A)1 B)2
C) D) 15. 在C语言中,不合法的字符常量是 A)\014 B)\xab C)’D’ D)”e”
16. C语言中用于结构化程序设计的三种基本结构是 A) if、switch、while B) for、while、do-while
C) if、while、continue D) 顺序结构、选择结构、
循环结构 17.已知a=1,b=2,c=3,d=4,则表达式 aA)4 B)3
C) 1 D)2
18.若执行下面程序时,从键盘输入"3,4",则输出是( )。 main() { int a,b,s; scanf("%d,%d",&a,&b); s=a; if (a else s=s*s; printf("%d\n",s);} A) 4 B) 16 C) 18 D) 20
19.若函数的类型和return语句中的表达式的类型不一致,则( )。 A) 编译时出错 B) 运行时出现不正确的结果 C) 不会出错,且返回值的类型以return语句中表达式的类型为准 D) 不会出错,且返回值的类型以函数类型为准
20.在C语言程序中,以下叙述正确的是 ( )。 A) 函数的定义和函数的调用均可以嵌套 B) 函数的定义可以嵌套,但函数的调用不能嵌套 C) 函数的定义和函数的调用均不能嵌套 D) 函数的定义不能嵌套,但函数的调用可以嵌套
21.若用数组名作为函数调用的实参,则传递给形参的是 ( )。 A) 数组的首地址 B) 数组的第一个元素的值
C) 数组中全部元素的值 D) 数组元素的个数 22. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。 A) 外部(extern) B) 寄存器(register) C) 自动(atuo) D) 静态(static) 23.在下面一组运算符中,优先级最高的运算符是 A) <= B) =
C) % D) && 24. 有如下函数调用语句 func(rec1,rec2+rec3,rec4); 该函数调用语句中,含有的实参个数是
A)3 B)4 C)5 D)有语法错
25. 表示关系X<=Y<=Z的c语言表达式为 A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z)
C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z) 26. C语言中,若未说明函数的类型,则系统默认该函数的类型是( )。 A) float型 B) int型 C) long型 D) double型 27.若定义数组int a[3][4];,并以f(a)语句调用函数f,则在定义f函数时,对形参数组array 错误的定义方式为( )。 A) f(int array[][6]) B) f(int array[3][]) C) f(int array[][4]) D) f(int array[2][5]) 28.下列一维数组初始化语句中,正确的是( )。 A) int a[5]={0,2,0,3,5}; B) int a[5]=0;
C) int a[5]={5*2}; D) int a[]=(0,2,0,3,7); 29.现要定义一个二维字符型数组 c[M][N] 来存放字符串 "China", "Tianjin"和"Education", 则常量M和N的合理取值应为( )。 A) 3和9 B) 2和10 C) 4和9 D) 3和10 30.若有说明 char c[]={'N','a','n','K','a','i'}; 则对其元素的非法引用是( )。 A) c[0] B) c[9-6] C) c[2*2] D) c[7] 31. 在C语言中,运算对象必须是整型的运算符是
A) * B) % C) / D) ! 32. 设有以下宏定义: #define N 3 #define Y(n) ( (N+1)*n) 则执行语句:z=2 * (N+Y(5+1));后,z的值为
A)出错 B) 42 C) 48 D)54 33. 以下结构体变量的字节数是 struct student { int num; char name[8]; double score; union { int class; char position[10]; }category; }stu;
A) 18 B) 30 C) 28 D) 32
34. 若有代数式bcae,则错误的表达式是 A) a/b/c*e B) a*e/c/b C) a*e/b/c D) a*e/b*c 35.要将字符串str2连接到字符串str1后,应使用的函数是( )。 A) strcpy(str1,str2); B) strcat(str2,str1); C) strcat(str1,str2); D) strcmp(str2,str1);
36.若定义 int a=8,b,*p=&b;则赋值语句p=&a执行后,结果为 ( )。 A) p同时指向a和b B) p指向a,而不再指向b C) p指向b,而b取a的值 D) p指向a,a取b的值 37.定义以下结构体类型 struct s { int a; float f; }m[3]; 语句printf("%d",sizeof(m))的输出结果为( )。 A) 4 B) 12 C) 18 D) 6 38. 下面程序的输出是 main() { int x=32; printf("%d\n",x=x<<1); }
A) 100 B) 160 C) 120 D) 64 39. 不正确的转义字符是 A) “\018” B) “\’ ” C) “\xaa” D) “\\” 40. 以下程序执行后sum的值是 void main() { int i , sum; for(i=1;i<6;i++) sum+=i; printf("%d\n",sum); }
A)15 B)14 C) 不确定 D)0