第一单元  程序设计和C语言
一、选择题
1.C语言的基本构成单位是:  A 
A. 函数            B. 函数和过程        C. 超文本过程        D. 子程序
2.一个C语言程序总是从   B  开始执行。
A. 主过程    B. 主函数    C. 子程序  D.主程序 
3.C语言的程序一行写不下时,可以    D     
A. 用逗号换行    B. 用分号换行    C. 在任意一空格处换行    D. 用回车符换行
4.以下叙述不正确的是:  C 
A. 在C程序中,语句之间必须要用分号";"分隔
B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数
C. 在C程序中,无论是整数还是实数都能正确无误地表示
D. 在C程序中,%是只能用于整数运算的运算符
5.以下不正确的C语言标识符是  D   
A. ABC              B. abc              C. a_bc        D. ab.c
6.下列字符串是标识符的是:      。                              ?
A. _HJ                B. 9_student            C. long            D. LINE 1
7.以下说法中正确的是:    C   
A. C语言程序总是从第一个定义的函数开始执行
B. 在C语言程序中,要调用的函数必须放在main()函数中定义
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
8.不合法的常量是:    B   
A. ‘\2’            B. "    "        C. ‘3’            D. ‘\483’
9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:   
int k,a,b;
unsigned long w=5;
double x=1.422;
A. x%(-3)    B. W += -2        C. k=(a=2,b=3,a+b)        D. a+=a=+(b=4)*(a=3)
10.在C语言中,字符型数据在内存中以  D  形式存放。
A. 原码    B. BCD码    C. 反码      D. ASCII码
11.若有定义:int a=7; float x=2.5; y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值是:  A 
A. 2.500000        B. 2.750000        C. 3.500000        D. 0.000000
12.设有说明:char w; int x; float y; double z;
则表达式w*x+z-y值的数据类型为:  D   
A. float            B. char            C. int            D. double
13.以下    D    是不正确的转义字符。
    A.  '\\'        B. '\'          C. '081'        D. '\0'
14.xint型变量,则执行以下语句后,x的值为    B   
            x=6; x+=x-=x*x;
    A. 36          B. -60         C. 60      D. -24
15.字符串"\\\"ABC\"\\"的长度是    D   
A. 11      B. 7          C. 5      D. 3
二、填空题
1.一个函数由两部分组成,它们是  语句               
2.一个C源程序至少包含一个  主函数      ,即  main()     
3.设int a=12; 则表达式a/=a+a的值是    0       
4.表达式x=(a=3,6*a)和表达式x=a=3,6*a分别是        表达式和        表达式,两个表达式执行完的结果分别是    18          18        ,x值分别是    18        3 
5.在C语言中,实数有两种表示形式,即    float          double     
6.在C语言中,运算符的优先级最小的是      ,      运算符。
第二单元  顺序程序设计
一、选择题
1.mfloat型变量,则执行以下语句后的输出为  C   
            m=1234.123;
            printf("%-8.3f\n",m);
            printf("%10.3f\n",m);
    A.  1234.123    B.  1234.123    C. 1234.123    D. -1234.123
        1234.123      1234.123          1234.123      001234.123
2.x,y,z均为int型变量,则执行以下语句后的输出为    A   
            x=(y=(z=10)+5)-5;      10,15,10
            printf("x=%d,y=%d,z=%d\n",x,y,z);
            y=(z=x=0,x+10);        0,10,0
            printf("x=%d,y=%d,z=%d\n",x,y,z);
    A. X=10,Y=15,Z=10                    B. X=10,Y=10,Z=10
      X=0,Y=10,Z=0                          X=0,Y=10,Z=10
    C. X=10,Y=15,Z=10                    D. X=10,Y=10,Z=10
X=10,Y=10,Z=0                          X=0,Y=10,Z=0
3.xint型变量,yfloat型变量,所用的scanf调用语句格式为:
    scanf("x=%d,y=%f",&x,&y);
    则为了将数据1066.6分别赋给xy,正确的输入应是:  A   
    A. x=10,y=66.6<回车>      B. 10 66.6<回车>
C. 10<回车>66.6<回车>    D. x=10<回车>y=66.6<回车>
4.已知有变量定义:int a;char c;用scanf(%d%c,&a,&c);语句给a和c输入数据,使30存入a,字符‘b存入c,则正确的输入是:    B   
A. 30b’<回车>      B. 30  b<回车>
C. 30<回车>b<回车>    D. 30b<回车>
5.已知有变量定义:double x;long a; 要给a和x输入数据,正确的输入语句是                               
  。若要输出a和x的值,正确的输出语句      C   
          A. float型scanf(%d%f,&a,&x);      B. scanf(%ld%f,&a,&x);
            printf(%d,%f,a,x);        printf(%ld,%f,a,x);   
C. scanf(%ld%lf,&a,&x);    D. scanf(%ld%lf,&a,&x);
  printf(%ld,%lf,a,x);      printf(%ld,%f,a,x);
6.若有定义double x=1,y;则以下的语句执行的结果是    C     
y=x+3/2; printf(%f,y);
A.2.500000      B.2.5      C.2.000000        D.2 
7.若a为整型变量,则以下语句    C   
a=-2L;  printf("%d\n",a);
A. 赋值不合法    B. 输出为不确定的值        C. 输出值为-2    D. 输出值为2
二、读程序写结果
1.    main()
            { int x,y;
              scanf("%2d%*2d%ld",&x,&y);
              printf("%d\n",x+y);
              }
执行时输入:1234567
2.    main()
{ int x=4,y=0,z;
  x*=3+2;
printf("%d",x);
x*=y=z=4;
printf("%d",x);
}
3.  main()