全国高校计算机等级考试(广西考区)二级C语言试题卷
2006年7月1日 闭卷考试 考试时间:120分钟
考生注意: ①本试卷包括第一卷和第二卷,考试时间共120分钟。②第一卷全部为选择题,每题下都有四个备选答案, 但只有一个是正确的或是最佳的答案。第一卷答案必须填涂在标准化答题卡上,标记在试题卷上的答案一律无效。每题只能填涂一个答案,多涂本题无效。本次考试类别为[8],请考生务必将答题卡上的考试类别栏中的[8]方格涂黑, 试卷种类栏不需填涂。考生答第一卷的题目时务必使用2B铅笔按正确的填涂方法在答题卡上相应题号的答案的方格涂黑,如果改动答案,可用橡皮擦擦干净后再另涂新的答案。③第二卷均为填空题,在阅读和理解原题程序的基础上,在第二卷答题卡相应题号的空栏处填入适当的字符、语句。考生答第二卷的题目时,要用钢笔或圆珠笔书写,用铅笔答题无效。在试题卷上直接答题者无效。④请考生在标准化答题卡和第二卷答题卡上准确填涂或填写准考证号码。⑤ 请考生遵照上述要求,否则将会影响正确成绩。
第一卷
本卷共70分,其中第1~26题每题2分,第27~32题每题3分。
第一部分:基础知识
1. 每个C程序必须有一个 。
A.子函数 B. 子过程 C. main函数 D. 空函数
2.下列数据中,哪个是C语言的十六进制整数。
A.18.5 B.‘F’ C.0123 D.0x24
3. C语言编译系统在给出逻辑运算结果时,以 代表“假”。
A.0 B. 1 C. F D. 非0值
4.用数组名作为函数调用时的参实际上传递给函数的是 。
A.数组全部元素的值; B. 数组第一个元素的值;
C. 数组首地址(指向数组的指针); D. 数组元素的个数。
5. 当int类型长度为2字节时,则类型unsigned int的值域范围为 。
A. 0到255 B. 0到65535 C. -32768到32767 D. -256到255
6. 下列运算符中,优先级最高的是 。
A.! B.&& C.<= D.>
7. 判断字符型变量ch的值是否为大写字母的最简单且正确的表达式为 。 A. ’a’<=ch<=’z’ B. (ch>=’a’)&&(ch<=’z’)
C. (ch>=’A’)&&(ch<=’Z’) D. 'A'<=ch<='Z'
8. 在函数中未定义存储类型的变量,其隐含的存储类型为 。
A. 静态类型 B. 自动类型 C. 外部类型 D. 寄存器类型
9. 设有语句 char a='\65';,则变量a 。
A. 包含2个字符 B. 包含3个字符 C. 说明不合法 D. 包含1个字符
10. 在一个源文件中定义的全局变量的作用域为: 。
A.本文件的全部范围 B.从定义该变量的位置开始至本文件结束
C.本程序的全部范围 D.本函数的全部范围
11. 若x、y均为int型变量,且x=10,则关于循环语句:
for (y=10;x!=y; x, y)
printf(″------″);
正确的说法是 。
A. 输出 ------ B. 执行10次循环体
C. 循环体一次也不执行 D. 循环体只执行一次
12.定义如下数组 int f[30]={12,20,8,10};
则f定义了 个元素。
A.30 B.4 C.12 D.20
13.执行完下面的C程序段后,变量b的值为 。
int x=16,y=15;
char z='A';
int b;
b = ((x % y) && ( z > 'a'));
供选择的答案为:
A.TRUE B. FALSE C. 1 D. 0
14. 以下正确的函数说明是 。
A. int fun(int a,b) B.float fun(int a;int b)
C. int fun( ) D.int fun(char a[][])
15. 有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a,b;
b = p[5];
b的值是 。
A. 1 B. 4 C. 5 D. 6
16. 为了避免嵌套的条件语句if-else的二义性,C语言规定:else与 匹配。
A. 它前面最近的if B. 缩排位置相同的if
C. 它后面最近的if D. 同一行上的if
17. 若有定义:int x[20], *p=x; 则*(p 5)表示 。
A.数组元素x[5]的地址 B.数组元素 x[5]的值
C.数组元素x[6]的地址 D.数组元素 x[6]的值
18.以下正确的实型常量是 。
A. 2 B. 3.12e0.8 C. e8 D. 5.6E-2
19. C语言程序的三种基本结构是 。
A.顺序结构、选择结构、循环结构 B. 递归结构、循环结构、转移结构
C. 嵌套结构、递归结构、顺序结构 D. 循环结构、转移结构、顺序结构
20. 当定义一个结构体变量时,系统分配给它的内存是 。
A.结构中第一个成员所需的内存量 B. 结构中最后一个成员所需的内存量
C. 结构体中各成员所需内存量的总和 D. 结构体成员中占内存量最大者所需的容量
第二部分:简单程序
21.下列程序
main()
{ float a,b,t;
a=16.3,b=9.6;
if(a>b)
{t=a;a=b;b=t;}
printf(“%5.2f,%5.2f”,a,b);
}
执行后的输出结果是 。
A.16.3, 9.6 B.16.30, 9.60 C. 9.6, 16.3 D. 9.60, 16.30
22. 下列程序
main()
{ int x=6,y=3,z=5;
y*=x;
z =y ;
printf(“%d”, z);
}
执行后的输出结果是 。
A. 23 B. 24 C. 8 D. 9
23.当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为 。
if ( a < b )
if ( c < d )
x = 1 ;
else if ( a < c )
if ( b < d )
x = 2 ;
else
x = 3 ;
else
x = 6 ;
else x = 7 ;
供选择的答案是:
A. 1 B. 2 C. 3 D. 6
24. 以下程序
main()
{ int i,sum=0;
for(i=1;i<10;i=i 2)
if(i%3==0)
sum =i;
printf(“%d”,sum);
}
执行后输出结果是 。
A.25 B.30 C.12 D.3
25. 以下程序:
main()
{ int x,y,z;
x=4,y=-6,z=8;
x = y;
z =x;
printf(“%d\n”,z);
}
执行后输出结果是 。
A.12 B.6 C.8 D.7
26 以下程序:
struct fat
{ int n;
char ch;
};
func(struct fat mt2)
{ mt2.n=mt2.n 8;
mt2.ch=mt2.ch-1;
printf("%d,%c\n",mt2.n,mt2.ch);
}
main()
{ struct fat mt1={8,'9'};
func(mt1);}
执行后的输出结果是 。
A.16,8 B.16,9 C.8,8 D.8,9
27. 有以下程序
main()
{ char m[30]={“hello”},n[20]={“how are you!”};
int t;
t=strlen(strcat(m,n));
printf(“%d\n”,t);
}
执行后的输出结果是 。
A.6 B.15 C.17 D.hello how are you!
28.以下程序的输出结果是 。
main ()
{ int x=20;
if (x>=20)
{ x ;
printf ("%d\n", x);
}
else
{ x--;
printf ("%d\n", x);
}
}
供选择的答案是:
A. 18 B. 19 C. 20 D. 21
29.下列程序:
union
{ unsigned int n;
unsigned char c;
}ul;
main()
{ ul.c = 'E';
printf("%c\n",ul.n);
}
执行后输出结果是 。
A. 69 B. E C.随机值 D.产生语法错
30. 以下程序:
fun(int x,int *y)
{ int z;
x-=4, (*y) ;
z=x%(*y);
return z;
}
main()
{ int m=30,n=8,k=3;
k=fun(m,&n);
printf("%d,%d,%d",m,n,k);
}
执行后输出结果是 。
A. 30,9,8 B. 30,8,3 C. 26,9,8 D. 26,8,3
31.在执行以下程序时,如果从键盘上输入ABCdef ,则输出结果为 。
# include "stdio.h"
main ()
{ char ch ;
while ((ch=getchar()) != '\n' )
{ if ( ch >='A' && ch <= 'Z' )
ch = ch 32 ;
else if ( ch >='a' && ch <= 'z' )
ch = ch - 32 ;
printf ("%c", ch);
}
printf ("\n");
}
供选择的答案是:
A. ABCdef B. abcDEF C. abc D. DEF
32.以下程序:
main()
{ char str1[20]=”test”,str2[20]=”pass”;
char *p1,*p2;
p1=str1;p2=str2;
puts(strcpy(p1,p2));
}
执行后输出结果是 。
A.pass B.test C.passtes D.p1p2
第二卷
说明:(1)第二卷均为填空题,在阅读和理解原题程序的基础上,在第二卷答题卡上编号对应的栏目中填入适当的字符、语句,以构成一个正确的C语言程序。
(2)每空栏3分,10个空栏共30分。
试题一 以下程序,主函数调用了MyMax函数,实现在N行M列的二维数组中,找出数据的最大值。
#define N 3
#define M 4
void MyMax(int x[N][M])
{ int i,j,max;
max=x[0][0];
for (i=0;i<N;i )
for (j=0;j<M;j )
if ( 1 < x[i][j])
2 ;
printf("The max value is %d\n",max);
}
main()
{ int x[N][M]={{1,5,7,4},{2,6,-4,3},{8,2,-3,1}};
3 ;
}
试题二 以下程序是将两个字符串str1和str2连接起来。
void conj(char str1[ ],char str2[ ])
{ int i=0,j=0;
while(str1[i]!= 4 )
i ;
while(str2[j]!= 5 )
str1[i ]=str2[j ];
6 =’\0’;
}
main()
{ char str1[40]={“hello!”};
char str2[20]={“how are you”};
conj( 7 );
puts(str1);
}
试题三 下列程序将两个数从大到小输出。
#include<stdio.h>
main()
{ float a,b,temp;
scanf( 8 ,&a,&b);
if( 9 )
{
temp=a;
10 ;
b=temp;
}
printf(“%f,%f”,a,b);
}