2009 季学期          专业
C语言程序设计》
期末试卷(B卷)
卷面总分:100        答题时间:120分钟
专业        年级    班级    姓名          学号         
珠海大学
题号
总分
得分
一、单项选择题(本题共15 个小题,每小题2分,共30分,请将答案代号填涂到机读卡上,在试卷上所写答案,视为0分)
1.下列变量名中合法的是(  )。 
A) int                                  B) 3abc
C)_ab                                D) a.bc
2.在int a[6]={1,3,5,8},数组元素a[5]的值是(  )。
A) 3                                  B) C
C) 5                                  D) 8
3.结构化程序设计中,程序的三种基本控制结构是(  )。
A)过程  函数  子程序                B)递归  递推  循环
C)调用  返回  转移                  D) 顺序  选择  循环
4.C语言中,可以用(  )三种形式表示整型常量。   
AASCII码﹑BCD码﹑内部码               
B)十进制﹑八进制﹑二进制   
C) 十进制﹑八进制﹑十六进制
D) 原码﹑外部码﹑内部码
5.、判断字符串s1是否等于字符串s2,应当使用(  )。
A)if (s1=s2)                            B)if (strcmp(s1,s2)=0)
C)if (s1= =s2)                        D) if (strcmp(s1,s2)= =0)
6.下列各运算符中,操作数不能是符点型的是(  )。   
A) +                                  B) *
C) &&                                D)  %
7.下列叙述中错误的是(  )   
  A) 主函数中定义的变量在整个程序中都是有效的
  B) 在其他函数中定义的变量在主函数中不能使用
  C) 形式参数也是局部变量
  D) 复合语句中定义的变量只能在该复合语句中有效
8.若函数的形参为一维数组,则下列说法中正确的是(  )
  A) 调用函数时的对应实参必为数组名
  B)  形参数组可以不指定大小   
  C) 形参数组的元素个数必须等于实参数组的元素个数
  D) 形参数组的元素个数必须多于实参数组的元素个数
9.有如下程序段:
  static char a[]={abcded};
  char*p=a;
  *(p+2)+=3;
  printf(%c,%c\n,*p,*(p+2));
  则此程序的输出是(  )   
    A) d,f                                  B) c,e       
C) a,f                                  D) f,e
10.以下定义语句中正确的是(  )
    A) char a='A'b='B';                        B) float a=b=10.0;
C) int a=10,*b=&a;                        D. float *a,b=&a;
11.已定义以下函数
fun (int *p)
{  return  *p;}
该函数的返回值是(  )
A) 不确定的值                          B) 形参p中存放的值
C)形参p所指存储单元中的值            D) 形参p的地址值
12.下列关于switch和break语句的结论中,只有(  )是正确的
A) break语句是switch中的一部分
B) 在switch语句中必须使用break语句
C) 在switch语句中可以根据需要使用或不使用break语句
D) 以上三个结论中有两个是正确的
13.以下对结构体类型变量td的定义中,错误的是(  )
Atypedef struct aa   
{ int n;  float m; }AA;
AA td;
B) struct aa
{ int n;  float m; }td;
struct aa td;
C) struct
{int n;    float m; }aa;
struct aa td;
Dstruct
{int n;    float m; }td;
14.以下程序段的输出结果是(  )
int x=23;
do   
{ printf(%d,x--); } while(!x);
A) 输出321                            B) 输出23   
C)不输出任何内容                      D)死循环
15.运行下列程序后的输出结果是( 
#include <stdio.h>
void main()
    { int a[2]={0},i,j,k=2;
      for(i=0;i<k;i++)
        for(j=0;j<k;j++)
          a[j]=a[i]+1;
      printf(%d\n,a[k]);
    } 
A) 不确定的值                          B) 3   
  C) 2                                  D) 1   
二﹑判断题(本大题共 10 小题,每小题 2 分,共 20 分,请将“正确”用“A”表示,“错误”用“B 表示,填涂到机读卡上,在试卷上所写答案,视为0分)
1.(B)指针变量只能做函数的形参不可以是函数的实参。
2.BC语言中,字母的大小写不被区分。
3.(B只有if语句能够实现选择结构。
4.(Bab是同类型变量,执行语句a=b;b=a;a,b的值将互换
5.(Bwhile语句的循环体至少执行一次。
6.(B算法和程序没有任何区别。
7.(B数组名字是一个变量,代表数组的首地址。
8.(Ba为整型变量,则表达式a++++a的值相同。
9.(B)被调函数在任何情况下都不能省略声明部分。
10.B结构体不可以嵌套定义。
三﹑填空题(本大题共 4 小题,每小题 4 分,共 16 分,请将答案填写到下面表格内,不得修改原题和原程序,修改者视为0分,未将答案填写在表格内,视为0分)
(1)—(4)
point=&a
&a
a
*point=8;
(5)—(8)
array
字符型
9
0
(9)—(12)
用户自定义
库函数
有返回值
无返回值
(13)—(16)
define
i++
&a[i]
t
1、 有这样的定义:
int a=7;
  int * point;
  让指针point指向a的语句是__(1)__,当point指向a后,__(2)__point等价,__(3)__与*point等价,__(4)__与语句a=8;等价。
2、若有定义char array[10];则数组的名字是__(5)__,数组的类型是__(6)__,数组元素下标的上限是__(7)__,下限是___(8)___
3、从用户的角度看,C语言中的函数有两种,__(9)____(10)__;根据返回值分类,函数分为__(11)____(12)__
4﹑下面程序的功能是:用简单选择法将5个整数从小到大排序,请将程序补充完全。
#include <stdio.h>
#__(13)__  N  5
main( )
{ int a[N];
int i,j,t;
for (i=0; i<N; __(14)__)
    scanf("%d",__(15)__);
  printf("\n");
for (j=0; j<N-1; j++)
    for(i=j+1; i<N; i++)
      if (a[j]>a[i])
        { t=a[j];a[j]=a[i];a[i]= __(16)__; }
printf("The sorted numbers: \n");
  for(i=0;i<N;i++)
    printf("%4d",a[i]);
}
四﹑读程序写结果(本大题共 5 小题,每小题 2 分,共 10 分,请将答案填写到下面表格内未填写在表格内,视为0分)
1
y=1  x=0
2
a=2  b=2
3
2,3
4
2,1
5
Today:2009 6 25
1、写出该程序运行结果
    x=y=0;
      do
        { y++;
          x*=x;
        } while((x>0)&&(y>5));
      printf(“y=%d  x=%d\n”,y,x);
  则此程序的输出是___
2、写出该程序运行结果
#include<stdio.h>
main()
    { int x=1,a=1,b=1,c=1;
      if(x)
{
a++;b++;
      }
      else  c=a+b;
      printf(“a=%d  b=%d \n”,a,b);
}
则此程序的输出是___
3、写出该程序运行结果
#include "stdio.h"
int mm(int m,int n)
{  static  s=1;
  s++;
  return(s*(m+n));
}
main()
{  int a=0,b=1;
  int mm(int m,int n);
  printf(%d,,mm(a,b));
  printf(%d,mm(a,b));
  return(1);