湖北汽车工业学院《C语言程序设计》考试试卷3
     
   
   
   
一、 填空题(每小空1分,共20分)
1.C语言程序的三种基本结构是                               
2.一个C程序中必须有          函数,无论该函数在整个程序中的位置如何,C程序总是从该函数开始执行。
3.C语言中没有逻辑型数据,在给出逻辑运算结果时,以      代表“真”,以      代表“假”。
4.为了避免嵌套的条件语句if-else的二义性,C语言规定else与         
if配对。
5.数组名作为参数传递给函数,作为实参的数组名被处理为该数组的     
6.静态变量和外部变量的初始化是在      阶段完成的,而自动变量的初始化是在          时进行的。
7.C语言中构造类型数据有                             
8.void的用途有三个:①说明          的函数;②在函数的参数表中写void,表示函数        ;③说明void型指针,它是一个      指针,可被任何类型的指针赋值,也可以赋给任何类型的指针而不需强制转换。
9.C语言中可以用来实现循环的四种语句是                       
       
二、 阅读填空(每小空2分,共26分)
1. 已知i=5,写出下列语句执行后整型变量i和a的值。
①a=i++;(a=    )  ②i+=012;(i=    )  ③i*=i+1;(i=    )
④a=(i>5)?0:1;(a=    )  ⑤a= (a=i+1,a+2,a+3);(a=    )
2.执行下列语句后,*(p+2)的值是       
  char s[3]=“ab”,*p;p=s;
3. 下列程序的功能是将字符串“Turbo C”纵向显示在屏幕上,请填空。
main( )
{ char *p=“Turbo C”;
  for(;*p!=‘\0’;            )
  printf(“%c\n”,            );
}
4. 下列程序计算1到100的整数的累加和。
main()
{ int i,_______;
        for(__________________)  sum+=i
        printf(“sum=%d\n”,sum);
}
5. 下列程序中maxmin()的作用是求整型数组a的最大元素和最小元素。
main()
{ static x[3][3]={{1,2,3},{9,5,6},{-1,0,3}};
          int m1,m2;
          maxmin(                        );
printf(“max=%d,min=%d\n”,m1,m2);
}
maxmin(int n,int a[][3],int *max,int *min)printf函数返回值
{ int i,j;
          *max=*min=a[0][0];
          for(i=0;i<n;i++)
for(j=0;j<n;j++)
        if(                  ) *max=a[i][j];
        else if(                  ) *min=a[i][j];
}
三、 单项选择题(每小题2分,共36分)
1. 下列形式的常数中,C程序不允许出现的是_____。
A) ±123      B) .45      C) 25.6e-2        D) 4e3
2.下列运算符中,不属于关系运算符的是       
A) <        B) !      C) ==      D) >=
3.以下对C语言函数的有关描述中,正确的是       
A) 函数必须有返回值,否则不能使用函数
B) C函数既可以嵌套定义又可以递归调用
C) C,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
D) C程序中有调用关系的所有函数必须放在同一个源程序文件中
4.以下叙述中不正确的是       
A) 在不同的函数中可以使用相同名字的变量
B) 函数中的形式参数是局部变量
C) 在一个函数内定义的变量只在本函数范围内有效
D) 在一个函数内的复合语句中定义的变量在本函数范围内有效
    5.给出以下定义:
char x[ ]=abcdefg”;
char y[ ]={a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’}
则正确的叙述为        
A) 数组x和数组y的长度相同     B) 数组x的长度大于数组y的长度
C) 数组x和数组y等价          D) 数组x的长度小于数组y的长度
  6.两个指针变量不可以______。
        A)相减  B)比较    C)相加   D)指向同一地址
7.设有如下定义:
int (*ptr)( ) 则以下叙述中正确的是        
A) ptr是指向一维数组的指针变量
B) ptr是指向int型数据的指针变量
C) ptr是一个函数名,该函数的返回值是指向int型数据的指针
D) ptr是指向函数的指针,该函数返回一个int型数据
8.为了提高程序的运行速度,对于整型或指针可以使用        型的变量。
A) register      B) auto    C)static      D)extern
    9.具有相同类型的指针变量p与数组array,不能进行的操作是        
A) p=array    B) *p=array[0]  C) p=&array   D) p=&array[ 0 ]
    10.C语言中while与do-while语句的主要区别是       
A) while的循环条件比do-while的循环控制条件体严格
B) do-while允许从外部转到循环体内
C) do-while 的循环体不能是复合语句
D) do-while的循环体至少无条件执行一次
11.以下函数调用语句中含有      个实参。
      func((e1,e2),(e3,e4,e5));
A)2      B)3      C)5      D)语法错误
12.下列程序段中,功能与其它程序段不同的是       
A) for(i=1,p=1;i<=5;i++)  p*=i;
B) for(i=1;i<=5;)  { p=1;p*=i;i++;}
C) i=1;p=1;while(i<=5) { p*=i;i++;}
D) i=1;p=1;do { p*=i;i++;} while(i<=5);
13.设x和y均为int型变量,则语句x+=y;y=x-y;x-=y;的功能是     
A)把x和y按从大到小排列    B) 把x和y按从小到大排列
C) 无确定结果              D) 交换x和y中的值
    14.以下程序的运行结果为______。
    main( )
    { int n;
      for( n=1;n<10;n++) ;
        printf(“%d”,n);
    }
        A) 10    B) 123456789    C) 0123456789      D) 0
15.设有以下语句,则变量a       
  char  a=‘\72’;
A)包含3个字符  B) 包含1个字符  C) 包含2个字符  D)说明不合法语法
16.以下程序执行后,a=      ,b=       
      main( )
      { int a=10,b=20;  int *pa=&a,*pb=&b;
        *pa=*(pb-1)+5;  *(pa+1)=*pa-5;
      for( n=1;n<10;n++) ;
        printf(“a=%d,b=%d\n”,a,b);
    }
            A) 10    B)20        C)15        D) 25
17.若从键盘输入B,以下程序的运行结果为       
main( )
      { int grade;
        scanf(“%c”,&grade);
        switch(grade)
          { case ‘A’:printf(“>=85.”);
case ‘B’:printf(“>=60.”);
case ‘C’:printf(“<60.”);
default:  printf(“error.”);}
        }
A) >=85.    B) >=60. <60. error.  C) >=60.  D) error.
18.以下程序的运行结果为______。
    main( )
    { int a=1,b=2,c=3,d=4,e=5;
      printf(“%d”,func((a+b,b+c,c+a),(d,e)));
    }
int func(int x,int y)
{ return x+y;}
A) 15    B)5      C)9    D) 函数调用出错 
四、 写出下列程序的运行结果(每小题3分,共18分)
      1. #define GZ 30
main()
{ int  num,total,gz;
gz=40;num=10;total=num*GZ;
printf(“total=%d\n”,total); }
运行结果:
2. #include  <string.h>
main()
{ static char s1[50]={“some string*”};
  static char s2[ ]={“test*”};

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