期中考试
注意事项:1. 考前请将密封线内填写清楚
          2. 所有答案请直接答在试卷上
          3.考试形式:闭卷
          4. 本试卷共 3大题,满分100分,    考试时间100分钟
题 号
总分
统分人
复核人
得 分
得  分
评卷人
复查人
一、 选择题。(将答案写在表格中,每题1.5分,共45分)
题号
1
2
3
4
5
6
7
8
9
10
答案
题号
11
12
13
14
15
16
17
18
19
编程scanf是什么意思20
答案
题号
21
22
23
24
25
26
27
28
29
30
答案
1. 若a为int型变量,则执行以下程序段后的a值是(    )。
a=5;
a*=a/=a++;
A.2          B.1          C.40          D.3
2.以下程序段的执行结果是(  )。
  Int x=-3;
  Do {printf(“%d\n”,x++);}  while(!x);
A.-3    B.-2    C.死循环    D.-3
-2
-1
3.若a、b、c均为int型变量,则执行以下程序段后的输出结果是(    )。
b=(a=10,a+5,c=10);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
c=(a=10,b=5,a+b);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
A.a=10, b=15, c=10        B.a=10, b=10, c=10
    a=10, b=5, c=10              a=10, b=5, c=10
C.a=10, b=10, c=10          D.a=10, b=10, c=10
      a=10, b=5, c=15              a=10, b=5, c=5
4.若a1,a2,a3,a4均为char类型变量,则执行以下程序段后的输出结果是(  )。
a1=’1’;a2=’2’;a3=’3’;a4=’4’;
printf(“%1c\n”,a1);
printf(“%2c\n”,a2);
printf(“%3c\n”,a3);
printf(“%4c\n”,a4);
A.1    B1      C.1      D.输出格式的描述符不正确
      2          2          02
      3          3        003
      4            4        0004
5.逻辑运算符两侧运算对象的数据(      )。
A.只能是0或1              B.只能是0或非0正数
C.只能是整型或字符型数据     D.可以是任何类型的数据
6.设i,j和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是(    )。
A.’i’ && ‘j’                B.i<=j
C.i || j + k && j - k          D.! ( (i<j) && !k || 1)
7.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是(      )。
A. num % 2 = = 1  B.! (num%2= =0)  C.!(num%2)  D.num%2
8.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与(  )。
A.缩排位置相同的if配对      B.其之前最近而且不带else的if配对
C.其之前最近的if配对        D.第一个if配对
9.语句while(!y);中的表达式!y等价于(      )。
A.y= =0    B.y!=1      C.y!=0        D.y= =1
10.设x、y均为int类型变量,而且x值为100,则关于以下for循环的正确判断是(    )。
For(y=100;x!=y;++x,y++)
Printf(“****\n”);
A.循环体只执行一次          B.是无限循环
C.循环体一次都不执行        D.for语句中存在语法错误
11.下列程序中是死循环的是(  )。
A.int n=1;                    B.int n=1;
      While(!n)                      do {n--;} while(n);
        n++;
C.int n=1;                  D.for(n=5;n<1;);
      Do {n++;} while(n);
12.以下程序段的执行结果是(  )。
Int a,b;
For(a=1;a<5;a+=2)
{ for(b=1;b<5;b++)
    printf(“%2d”,a*b);
  if (b= =5) printf(“\n”);
  }
A.1  2  3  4  B.1  2  3  4  C.2  3  4  6  9  12 D.2  3  4
3  6  9  12    6  9  12  15                          6  9  12
                                                          10  15  20
13.以下对一维数组a的正确说明是(  )。
A.char a(10);              B.int a[ ];
C.int k=5,a[k];              D.char a[ ]={‘a’,’b’,’b’};
14.若有说明语句:int a[2][4];,则对a数组元素的正确引用是(  )。
A.a[0][3]  B.a[0][4]   C.a[2][2]  D.a[2][2+1]
15.若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8};,则a数组的行数为(  )。
A.3          B.2          C.无确定值       D.1
16.判断字符串str1是否大于字符串str2,应当使用(  )。
A.if (str1>str2)            B.if (strcmp(str1,str2))
C.if (strcmp(str2,str1)>0)    D.if (strcmp(str1,str2)>0)
17.若有语句:char s1[10],s2[10]={“books”};,则能将字符串books赋给数组s1的正确语句是(  )。
A.s1={“books”};  B.strcpy(s1,s2); C.s1=s2;  D.strcpy(s2,s1);
18.若有以下程序段
for(m=1;m<=100;m++)
  { scanf(“%d”,&y);
    if (y<0) continue;
    printf(“%3d”,m);
}
正确的描述是(  )。
A.当y<0时整个循环结束    B.y>=0时什么也不输出
C.printf函数永远也不执行    D.最多允许输出100个非负整数
19.以下正确的函数说明是(  )。
A.int fun(int a,b)          B.float fun(int a ; int b)
C.double fun( )           D.int fun(char a[ ][ ])
20.以下正确的说法是(  )。
A.实参和与其对应的形参各占用独立的存贮单元
B.实参和与其对应的形参共用一个存贮单元
C.只有当实参和与其对应的形参同名时才共用存贮单元
D.形参是虚拟的,不占用存贮单元
21.C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是(  )。
A.float型      B.int型      C.long型      D.double型
22.以下正确的描述是(  )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和调用均不可以嵌套
D.函数的定义和调用均可以嵌套
23.数组元素a[i]是该数组中第( )个元素。
A.1      B.i    C.i+1      D.i-1
24.执行下面程序段后,x的值是(  )。
Int x;
Printf(“%d\n”,(x=3*5,x+5);
A.10        B.15        C.20        D.5
25.判断char型变量c1是否为大写字母的正确表达式是(  )。
A.’A’<=c1<=’Z’              B.(c1>=’A’) & (c1<=’Z’)
C.(c1>=’A’) && (c1<=’Z’)       D.(‘A’<=c1) AND (‘Z’>=c1)
26.表达式!(3>5)||(6<2)的值是(  )。
A.0         B.1        C.3        D.5
27.以下程序的输出结果是(  )。
Mian()
{ int x=2,y=-1,z=2;
  If(x<y)
    If(y<0)  z=0;
    Else    z+=1;
  Printf(%d\n,z);
}
A.3  B.2    C.1    D.0
28.设有说明:int a=1,b=0;则执行以下语句后的输出结果是(  )。
Switch(a)
  { case 1:
      switch(b)
        { case 0:printf(“**0**\n”);break;
        case 1:printf(“**1**\n”);break;
        }
    case 2: printf(“**2**\n”);break;
  }
A.**0**              B.**0**