期末总复习(基础知识+程序设计部分)
一. 填空
1.已知char ch=A; 则下列表达式的值是:      a   
  Ch=(ch>=A && ch<=Z) (ch+32):ch;
2. 若x=1,y=2,z=3, 则表达式z+=++x+y++之值是  7     
3. 若x=2,y=3,则x%=y+3之值为    2   
4.. 若有定义int y=3; float z=5.2, x=4.8; 则表达式y+=(int)x+x+z的值为   17   
5. 设x,y,z为int型变量,且x=3,y=-4,z=5,请写出下列各表达式的值
  1)(x&&y)==(x||z)          1         
  2) !(x>y)+(y!=z)||(x+y)&&(y-z)     0     
  3)x++-y+(++z)        13             
6.  设x,y,z为int型变量,请用C语言表达式描述下列命题
  1)x和y中有一个小于z  (x<z&&y>z||x>z&&y<z )==1               
  2) x,y和z中有两个为负数    (x<0&&y<0&&z>=0||z<0&&y<0&&x>=0||y<0&&x<0&&z>=0)==1             
  3)y是奇数y%2?!=0
7. 下面for循环语句最多可执行      4     
  For (x=0,y=0?;(y?!=99)&&(x<4)?;x++)
8. 设i,j,k均为int型变量,则执行以下for语句后,k的值是  10   
      for (i=0,j=10?;i<=j?;i++,j--)
        k=i+j?;
9.若已知x,y,z,m,n均为int 型变量,则执行下面语句后,x的值为      7      c语言用递归函数求n的阶乘y的值为      9   
    z的值为  7         
      m=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值是      4     
11. 若定义的函数没有返回值时,则应该在该函数定义时加上类型说明符  void         
12. 凡在函数中未指定存储类型的变量,其隐含的存储类别为      动态存储       
13. 在C语言中,一个函数直接或间接地调用自身,编构成函数的    递归         
14. 如果被调用的自定义函数和调用函数不再同一个文件中,则在应以函数的文件中应将该文件的存储类型定义成                          型,在调用函数的文件中将该函数说明为               
        型。
15. 对于所定义的二维数组a[2][3],元素a[1][2]是数组的第      6    个元素。N*j+m+1
16.若有定义: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));的输出值是    6     
20. 执行下列程序段后,*p等于    3           
int a[5]={1,3,5,7,9}; *p=a;p++;
二. 判断(true or false)
1. 调用函数时,实参的类型、个数和顺序与函数定义时形参的类型、个数和顺序完全一致。T
2. 函数可以嵌套定义F
3. 函数必须有返回值,否则不能正确作用F
4. C程序中有调用关系的所有函数必须放在同一源程序文件中。F
5. 全局变量与函数体内定义的局部变量重名时,局部变量不起作用。F
6. 函数定义时可以不制定形参的类型,函数调用时由实参的类型决定形参的类型F
7. 当函数定义放在main()函数前面时,可以缺省函数声明。T
8. C语言中允许函数嵌套调用T
9. 局部静态变量是在编译时赋初值的,即只赋一次初值。T
10. 外部变量必须定义在文件的开头部分F
11. 字符\0是字符串的结束标记,其ASCII码为0.T
12. 若有说明?:int a[3][4]={0};则数组a中每个元素的初值都为0.T
13. 若有说明?:int a[2][4]={0,0};则只有a[0][0]和a[0][1]的初值为0, 其余元素的初值均不为0. F
14. 若有说明?:int a[3][4];则数组a中各元素可在程序的编译阶段达到初值0.F
15. 若用数组名作为函数调用时的实参,则实际上传递给形参的是数组的第一个元素值。F
16. 在两个字符串的比较中,字符个数多的字符串比字符少的字符串大。F
17. 当需要接受用户从键盘上输入的含有空格的字符串时,应使用gets()函数。T
18. 在C语言中,二维数组元素在内存中的存放顺序可以随意调整变化。F
19. &b指的是变量b的地址处所存放的值;F
20. 指针变量可用于保存同类型变量的地址值;F
21. 存放地址的变量同其他类型的变量一样,可以存放任何类型的数据;F
22. 指向同一数组的两指针p1,p2相减的结果与所指元素的下标相减的结果是相同的。F
23. 如果定义函数时参数是指针变量,那么,调用函数时的参数就可以是同类型的指针变量,数组名或简单变量的地址T
24. char *name[5]定义了一个一维指针数组,它有5个元素,每个元素都是指向字符数据的指针型数据。F
25. 语句y=*p++;和y=(*p)++;是等价的。F
26. 函数指针指向的是函数的入口地址。T
27. int *p;定义了一个指针变量,其值是整型的。F
28. 用指针作为函数参数时,采用的是“地址传送”方式.T
三、 选择题
1下列变量名中哪些是合法的?
?  2a  a#  C$    t3    _var    ?    int
2.语言中用________表示逻辑值“真”
A) true            B) 整型值0            C) 非零整数值            D) T
3.下列合法的字符常量为________。
    A) "a"          B) '\n'          C) 'china'             D) a
4. 设有语句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 <=
C) 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) char            D) double
8. 设有语句int a = 3; 执行了语句a += a -= a * a; 后,变量a的值是________。
A)  3              B)  0              C)  9                D)  -12
9. 设有语句int a = 3; 执行了语句printf("%d", -a ++); 后,输出的结果是__C______,变量a的值是__D_____。
A)  3              B)  4              C)  -3                D)  -2
10. 将下列数学表达式表示为合法的C语言表达式。
(1)        (2)        (3) 
(4)              (5)                    (6)
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=%d
14. 在下面的条件语句中,只有一个在功能上与其它三个语句不等价(其中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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。