当前位置:文档之家› C语言期末复习卷习题教程文件

C语言期末复习卷习题教程文件

期末总复习(基础知识+程序设计部分)一.填空1.已知char ch=’A’; 则下列表达式的值是: aCh=(ch>=’A’ && ch<=’Z’)? (ch+32):ch;2. 若x=1,y=2,z=3, 则表达式z+=++x+y++之值是73.若x=2,y=3,则x%=y+3之值为 24.. 若有定义int y=3; float z=5.2, x=4.8; 则表达式y+=(int)x+x+z的值为175. 设x,y,z为int型变量,且x=3,y=-4,z=5,请写出下列各表达式的值1)(x&&y)==(x||z) 12)!(x>y)+(y!=z)||(x+y)&&(y-z) 03)x++-y+(++z) 136. 设x,y,z为int型变量,请用C语言表达式描述下列命题1)x和y中有一个小于z (x<z&&y>z||x>z&&y<z )==12) x,y和z中有两个为负数(x<0&&y<0&&z>=0||z<0&&y<0&&x>=0||y<0&&x<0&&z>=0)==13)y是奇数y%2 !=07. 下面for循环语句最多可执行 4 次For (x=0,y=0 ;(y !=99)&&(x<4) ;x++)8. 设i,j,k均为int型变量,则执行以下for语句后,k的值是10for (i=0,j=10 ;i<=j ;i++,j--)k=i+j ;9.若已知x,y,z,m,n均为int 型变量,则执行下面语句后,x的值为7 y的值为9z的值为7m=10 ; n=5;x=(--m==n++)? --m : ++n;y=m++;z=n;10. 若有说明语句:w=1,x=2,y=3,z=4; 则表达式w>x? w:z>y? z:x值是 411. 若定义的函数没有返回值时,则应该在该函数定义时加上类型说明符void12. 凡在函数中未指定存储类型的变量,其隐含的存储类别为动态存储13. 在C语言中,一个函数直接或间接地调用自身,编构成函数的递归14. 如果被调用的自定义函数和调用函数不再同一个文件中,则在应以函数的文件中应将该文件的存储类型定义成型,在调用函数的文件中将该函数说明为型。

15. 对于所定义的二维数组a[2][3],元素a[1][2]是数组的第 6 个元素。

N*j+m+116.若有定义:char *str=”I am a student.”; 则字符串在存储单元中占16 个字节。

17. 在执行int a[][3]={{1,2},{3,4}};语句后,a[1][2]的值是0 。

18. 调用strlen(“abc\0ef\0g”)的返回值是 3 。

\0为停止符19. 设有定义:char s[12]=“string”; 则printf(“%d\n”,strlen(s));的输出值是 620. 执行下列程序段后,*p等于 3int a[5]={1,3,5,7,9}; *p=a;p++;二.判断(true or false)1.调用函数时,实参的类型、个数和顺序与函数定义时形参的类型、个数和顺序完全一致。

T2.函数可以嵌套定义F3.函数必须有返回值,否则不能正确作用F4.C程序中有调用关系的所有函数必须放在同一源程序文件中。

F5.全局变量与函数体内定义的局部变量重名时,局部变量不起作用。

F6.函数定义时可以不制定形参的类型,函数调用时由实参的类型决定形参的类型F7.当函数定义放在main()函数前面时,可以缺省函数声明。

T8.C语言中允许函数嵌套调用T9.局部静态变量是在编译时赋初值的,即只赋一次初值。

T10.外部变量必须定义在文件的开头部分F11.字符’\0’是字符串的结束标记,其ASCII码为0.T12.若有说明 :int a[3][4]={0};则数组a中每个元素的初值都为0.T13.若有说明 :int a[2][4]={0,0};则只有a[0][0]和a[0][1]的初值为0,其余元素的初值均不为0. F14.若有说明 :int a[3][4];则数组a中各元素可在程序的编译阶段达到初值0.F15.若用数组名作为函数调用时的实参,则实际上传递给形参的是数组的第一个元素值。

F16.在两个字符串的比较中,字符个数多的字符串比字符少的字符串大。

F17.当需要接受用户从键盘上输入的含有空格的字符串时,应使用gets()函数。

T18.在C语言中,二维数组元素在内存中的存放顺序可以随意调整变化。

F19.&b指的是变量b的地址处所存放的值;F20.指针变量可用于保存同类型变量的地址值;F21.存放地址的变量同其他类型的变量一样,可以存放任何类型的数据;F22.指向同一数组的两指针p1,p2相减的结果与所指元素的下标相减的结果是相同的。

F23.如果定义函数时参数是指针变量,那么,调用函数时的参数就可以是同类型的指针变量,数组名或简单变量的地址T24.char *name[5]定义了一个一维指针数组,它有5个元素,每个元素都是指向字符数据的指针型数据。

F25.语句y=*p++;和y=(*p)++;是等价的。

F26.函数指针指向的是函数的入口地址。

T27. int *p;定义了一个指针变量,其值是整型的。

F28.用指针作为函数参数时,采用的是“地址传送”方式.T三、选择题1.下列变量名中哪些是合法的?π 2a a# C$ t3 _var θ int2.语言中用________表示逻辑值“真”。

A) true B) 整型值0C) 非零整数值D) T3.下列合法的字符常量为________。

A) "a" B) '\n' C) 'china' D) a4. 设有语句char c='\72'; 则变量c________。

A) 包含1个字符 B)包含2个字符 C) 包含3个字符 D) 不合法5. 字符串"\t\"Name\\Address\n"的长度为________。

A) 19 B) 15 C) 18 D) 不合法6. 设a,b,c 为 int 型变量,且a = 3 ,b = 4 , c = 5,下面表达式值为0的是________。

A) 'a' && 'b' B) a <= bC) a || b+c && b-c D) !((a<b) && !c || 1)7. 若有以下定义:char a ; int b ; float c ; double d ;则表达式 a * b + d – c 的值的类型为_____________ A) float B) int C) charD) double 8. 设有语句int a = 3; 执行了语句a += a -= a * a; 后,变量a 的值是________。

A) 3 B) 0 C) 9 D) -129. 设有语句int a = 3; 执行了语句printf("%d", -a ++); 后,输出的结果是__C______,变量a 的值是__D_____。

A) 3 B) 4 C) -3 D) -210. 将下列数学表达式表示为合法的C 语言表达式。

(1) cb a 222+ (2) 2))((+++d c b a (3) 2/))sin((ln y x + (4) r π2 (5) x111+ (6) xxy y e ++22)30sin(ο 12. 下列可作为C 语言赋值语句的是:_____________。

A) x = 3, y = 5 B) a = b = c C) i -- ; D) y = int ( x ) ;13. 以下程序的输出结果为:_____________。

main(){int a = 2, c = 5;printf("a = %%d, b = %%d\n", a, c); }A) a = %2, b = %5 B) a = 2, b = 5 C) a=%%d, b=%%d D) a=%d, b=%d14. 在下面的条件语句中,只有一个在功能上与其它三个语句不等价(其中s1和s2表示它是C 语句),这个不等价的语句是: 。

A) if (a) s1; else s2;B) if (!a) s2; else s1;C) if (a != 0) s1; else s2;D) if (a == 0) s1; else s2;15. 设有声明语句:int a=1,b=0;则执行以下语句后输出为: 。

switch (a){case 1:switch (b){case 0: printf("**0**");break;case 1: printf("**1**");break;}case 2: printf("**2**");break;}A)**0** B) **0****2** C)**0****1****2** D)有语法错误16.在while (x)语句中的x与下面条件表达式等价的是:。

A) x == 0 B) x == 1 C) x != 1 D) x != 017. 若int x;且有下面的程序片断,则输出结果为:。

for (x=3; x<6; x++){printf((x%2)==0? "**%d" : "##%d\n", x);}A) **3B) ##3C) ##3D) **3##4##4 **4 **4##5 **5**5 ##518. 以下能对外部的一维数组a(含有10个元素)进行正确初始化的语句是:。

A) int a[10] = (0,0,0,0,0);B) int a[10] = {};C) int a[] = {0};D) int a[10] = {10*1};19. 以下能对外部的二维数组a进行正确初始化的语句是:。

A) int a[2][] = {{1,0,1},{5,2,3}};B) int a[][3] = {{1,2,1},{5,2,3}};C)2 int a[2][4] = {{1,2,1},{5,2},{6}};D) int a[][3] = {{1,0,2},{},{2,3}};20. 若二维数组a有m列,则在a[i][j]之前的元素个数为:。

相关主题