注意事项:1、本试卷共 13 页,满分为 100 分,考试时间为 110 分钟。
2、标准答题卡使用2B铅笔涂写;文字题答题时请使用蓝、黑钢笔或圆珠笔,
不得使用红颜色墨水笔。
题 目 得 分 阅卷人
一 二 三 四 总 分 分数核对 二、阅读程序题答题处: (每空3分,共30分) 1题【41】 4题【44】 6题【46】 8题【48】
三、程序改错题答题处:(每空2分,共12分) 1题 【51】 【52】 【53】 2题 【54】 【55】 【56】 四、完善程序填空题答题处:(每空2分,共18分) 1题 【57】 【58】 【59】 2题 【60】 【61】 【62】 第 1 页 共 14 页 2题【42】 5题【45】 7题【47】 9题【49】 3题【43】 10题【50】 3题 【63】 【64】 【65】
一、单项单选题:(每题 1 分,共 40 分)
(说明:请将正确答案按照题干上【】内的序号涂写“标准答题卡”) 1.以下4组标识符中,能作为变量名使用的是 【1】 。
A) age, struct, s1 B) 2A, b_3, main C) ELSE, a[2], m123 D) _abc, INT, abcd
2.已知小写字母a的ASCII码值是97,大写字母A的ASCII码值是65,下列语句中不能输出大写字母B的是 【2】 。
A) putchar('A'+1); B) putchar('b'-32); C) putchar(98-32); D) putchar(B); 3.能正确表示
?b?b?4ac2a2的C语言表达式是 【3】 。
A) (-b+sqrt(b*b-4*a*c))/(2*a) B) -b+sqrt(b*b-4*a*c)/(2*a) C) (-b+sqrt(b*b-4*a*c))/2*a D) -b+sqrt(b*b-4*a*c)/2*a
4.下列程序段的输出结果是 【4】 。
float x;
x=1+1%3*5/2;
printf(\
A) 3.000000 B) 3 C) 3.500000 D) 8 5.下列程序段的输出结果是 【5】 。
int m=027;
printf(\A) 27
B) 26
C) 23
D) 22
6.已知变量a=4,b=5,c=6,则表达式 c && a | b的值是 【6】 。
A) 7 B) 1 C) 0 D) 6
7.设 int x=10; x+=x%= (-6)+4; 则x= 【7】 。
A) 0
B) 16 C) 18 D) 10
8.设int a=1,b=2,c=3,d=4,z;则表达式 (a>b)? (z=c) : (z=d) 的值是 【8】 。 A) 3
B) 0
C) 4
D) 1
9.下列程序段的输出结果是 【9】 。
第 2 页 共 14 页
int a=5;
if( a++ > 5 ) printf(\else printf(\
A) 7
B) 6
C) 5
D) 4
10.运行下列程序段,输入AaBbDd并以回车键结束输入,则输出结果是 【10】 。
char ch; int s=0;
while((ch=getchar())!='\\n') switch(ch) { case 'A': s++; case 'B': s++; break; case 'D': s++; default: s++; }
printf(\
A) 6 B) 8
C) 10
D) 12
11.下列程序段的输出结果是 【11】 。
int i,s=0;
for(i=1;i<=10;i++) { if (i%2) continue; s+=i; } printf(\
A) 30
B) 25
C) 0
D) 1
12.下列程序段的输出结果是 【12】 。
int i=26;
do { printf(\ } while ( i = i/8 ); A) 死循环 B) 3 C) 23 D) 32
13.已知:int k=10; 则下面的while 循环 【13】 。
while (k=0) k--;
A) 执行10次 B) 是死循环 C) 一次也不执行
14.以下对二维数组a的正确定义是 【14】 。 A) int a[3][]
;
B) int a[][4]; C) #define N 3 D) int N=3;
int a[N][N+1];
int a[N][N+1];
15.已知如下数组定义:
第 3 页 共 14 页
D) 执行一次
char str[]=\
则函数strlen(str)的返回值是 【15】 。
B) 5
C) 11
D) 7
A) 6
16.使用如下语句定义一个char型二维数组str,用来存放字符串\、\、\,
char str[M][N];
则M和N最合理取值应该是 【16】 。 A) 3和7
17.下列程序段的输出结果是 【17】 。
int a[]={1,2,3,4},s=0,i;
for(i=3;i>=0;i-=2) s=s*10+a[i];
printf(\
A) 4321 B) 42 18.设有如下数组定义:
char str[6];
则下列程序段中,不能正确的为str数组赋值的是 【18】 。
B) gets(str);
C) 1234
D) 13
B) 2和7
C) 2和6
D) 3和6
A) strcpy(str,\
C) for(i=0;i<6;i++) scanf(\ D) scanf(\
19.下列程序段的输出结果是 【19】 。
int i=0;
char s1[10]=\strcat(s1,s2);
while(s2[i++]!='\\0') s2[i]=s1[i]; puts(s2);
A) 123
20.下面程序段的输出结果是 【20】 。 int a[]={1,2,3,4,5,6,7},*p; p=a;
*(p+3)+=2;
printf (\ %d\\n\
B) 1 5
C) 1 6
D) 1 4
B) 123 567
C) 5234567
D) 523
A) 6 7
21.能为指针变量p正确赋值的是 【21】 。 A) int a,*p=a; B) int a,*p=&a;
第 4 页 共 14 页

