C语言测试题十
一、 选择题(40分)
1.  以下叙述正确的是( 
A、可以把defineif定义为用户标识符
B、可以把define定义为用户标识符,但不能把if定义为用户标识符
C、可以把if定义为用户标识符,但不能把define定义不用户标识符
Ddefineif都不能定义为用户标识符
2.  若变量已正确说明为float类型,要通过语句scanf("%f %f %f "&a&b&c)
a赋于10.0b赋予22.0c赋予33.0,不正确的输入形式是:( 
A10<回车>22<回车>    33<回车>        B10.022.033.0<回车>
C10.0<回车>22.0 33.0<回车>        D10 22<回车> 33<回车>
3.  若有定义: float wint ab;则合法的switch语句是(       
Aswitch(w)                      Bswitch(a)
{ case 1.0printf("*\n");      { case 1 printf("*\n")
case 2.0printf("**\n")       case 2 printf("**\n")
}                       }
Cswitch(b)                       Dswitch(a+b)
{ case 1printf("*\n")       { case 1printf("*\n")
defaultprintf("\n");      case 2printf("**\n");     
case 2-1printf("**\n");     defaultprintf("\n")
}                    }
4.    有如下程序
main( )
{ float x=2.0y
if(x<0.0) y=0.0
else if(x<10.0) y=1.0/x
else y=1.0
printf("%f\n"y)}
该程序的输出结果是(   
A0.000000        B0.250000            C0.500000        D1.000000
5.   i为整型变量,则以下循环执行次数是( )
for( i = 2; i!= 0; )  printf(%d, i-- );
A. 无限次   B. 0    C. 1次   D. 2
6.  以下程序的运行结果是(  )
main( )
{  int  y = 10 ;
  do { y-- ; }  while( --y ) ;
  printf(%d\n, y-- );  }
A. -1    B. 1    C. 8    D. 0 
7.    设有程序段:
int  k = 10 ;
While( k = 0 )  k = k – 1 ;
则下面描述中正确的是( 
A. while循环执行10          B. 循环是无限循环   
C. 循环体语句一次也不执行        D. 循环体语句执行一次
8.   以下不是无限循环的语句是( 
A. for( y = 0,x = 1; x > ++y; x = i++ ) i = x ;    B. for( ;  ; x ++ = i );   
C. while(1)  { x ++ ; }                          D. for( i = 10;  ; i-- ) sum+=i;
9.    若有说明: int a[10] ;则对数组元素的正确引用是( 
A. a[10]      B. a[3.5]      C. a(5)        D. a[10-10]
10.    若有说明:int a[ ][3] = {1,2,3,4,5,6,7};a数组第一维的大小是(    
A. 2            B. 4                C. 3            D.不确定
11.   已知:char  str1[8], str2[8] = { “good” }; 则在程序中不能将字符数组str2赋值给str1的语句(  )
A. str1 = str2 ;                B. strcpy(str1, str2);
C. strncpy(str1, str2, 6)      D. memcpy(str1, str2, 5);
12.    以下不能进行字符串赋初值的语句是(  )
A. char  str[5] = good!;        B. char  str[ ] = good!;       
C. char  str[8] = good!;        D. char  str[5] = {‘g’,’o’,’o’,’d’};
13.    以下不正确的说法是(     
A. 实参可以是常量,变量或表达式            B. 形参可以是常量,    变量或表达式   
C. 实参可以为任何类型                    D.形参应与其对应的实参类型一致
14.    以下正确的函数定义形式是( 
A. double  fun( int x, int y )          B. double  fun( int x; int y )
C. double  fun( int x, int y );        D. double  fun( int x,  y );
15.    凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(   
strcmp比较数组
A. 自动(auto)    B.静态(static    C. 外部(extern)      D. 寄存器(register)
16.   C语句规定,简单变量做实参时,它和对应形参之间的数据传递方式是( 
A. 地址传递                                B. 单向值传递       
C. 由实参传给形参,再由形参传回给实参    D. 由用户指定的传递方式
17.   下面能正确进行字符串赋值操作的是( 
A. char  s[5]= {ABCDE};      B. char  s[5]= {‘A’,’B’,’C’,’D’,’E’}
C. char  *s; s= ABCDE ;  D. char  *s ; scanf(%s,s) ;
18.   下面说明不正确的是( 
A.char  a[10]= china ;            B.char  a[10], *p= a; p= china ;
C.char  *a; a= china ;             D.char  a[10], *p; p= a=china ;
19.   变量的指针,其含义是指该变量的(   
A.       B. 地址         C.         D. 一个标志
20.    已有定义int  k = 2; int *ptr1, *ptr2;ptr1ptr2均已指向变量k ,下面不能正确执行的赋值语句是( 
A. k = *ptr1 + *ptr2 ;    B. ptr2 = k ;  C. ptr1 = ptr2 ;    D. k = *ptr1*(*ptr2);
二、 填空题(30分)
1.      程序中经常使用到常数6.6678,使用RUN表示,其宏定义格式为             
2.      4/5*6的值是     
3.      调用带参数的函数时,实参列表中的实参必须与函数定义时的形参      相同、
      相符。
4.      二维数组a[2][3]={ {1, 2,6},  {3,0,5}}中元素a[0][2]的值是__________
5.      从函数定义的角度看,函数可分为        函数和        函数两种。
6.      若有定义int  a[ ]={ 2,4,6,8,10,12 },*p = a ;*p+ 3)的值是       
*a + 4)的值是       
7.      对于有返回值的函数来说,通常函数体内包含有        语句,其格式为       
用于将返回值带给调用函数。
8.   对带有参数的函数进行调用时,参数的传递方式主要有      调用和      调用两种方式。
9.  C语言程序中,函数不允许嵌套        ,但允许嵌套       
10. aint 型变量时,则表达式: (a = 4*5, a*2), a+6的值是       
11. 当循环体内遇到                        语句时,将退出循环。
12. do-while语句和while语句的区别在于                                 
13. break语句在循环体中的作用是        continue语句在循环体中的作用是   
                     
14. goto语句可与        语句配合使用,构成循环。
15. 变量的作用域和生存期是从                的角度来体现变量的特性。
三、 程序填空题(20分)
1.下面程序的功能是将键盘输入的字符串str中的所有‘c’字符用‘C’替换。请补充程序。
#include<stdio.h>
#incluce<string.h>
main(  )
{  int  i ;
    Char  str[80] ;
    gets(        ) ;
  for( i = 0 ;            ; i++ )
    { if( str[i] != ‘c’)                ;
                  ;
    }
  printf(“%s\n , ”, str ) ;  }
2. 函数sstrcmp(  )的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于是t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp( ) ),请填空。

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