全国高校计算机等级考试(广西考区)二级C语言试题卷
2007年1月6日 闭卷考试 考试时间:120分钟
考生注意: ①本试卷包括第一卷和第二卷,考试时间共120分钟。②第一卷全部为选择题,每题下都有四个备选答案, 但只有一个是正确的或是最佳的答案。第一卷答案必须填涂在标准化答题卡上,标记在试题卷上的答案一律无效。每题只能填涂一个答案,多涂本题无效。本次考试类别为[8],请考生务必将答题卡上的考试类别栏中的[8]方格涂黑, 试卷种类栏不需填涂。考生答第一卷的题目时务必使用2B铅笔按正确的填涂方法在答题卡上相应题号的答案的方格涂黑,如果改动答案,可用橡皮擦擦干净后再另涂新的答案。③第二卷均为填空题,在阅读和理解原题程序的基础上,在第二卷答题卡相应题号的空栏处填入适当的字符、语句。考生答第二卷的题目时,要用钢笔或圆珠笔书写,用铅笔答题无效。在试题卷上直接答题者无效。④请考生在标准化答题卡和第二卷答题卡上准确填涂或填写准考证号码。⑤ 请考生遵照上述要求,否则将会影响正确成绩。
第一卷
本卷共70分,其中第1~26题每题2分,第27~32题每题3分。
第一部分:基础知识
1.一个C语言源程序中, 。
A.可以有多个主函数 B. 必须有一个主函数
C. 必须有主函数和其他函数 D. 可以没有主函数
2.下列语句中正确的是 。
A. char: a,b,c; B. char a;b;c;
C. int x,y; D. int x y z;
3. 设x、y、z都是int型变量,且x=3,y=5,z=9;则以下的表达式中,值为10的表达式是 。
A. (x y,z 1) B. (x y)/z C. x y z D. x*y/z
4.下列选项中,哪一个是C语言中合法的常量 。
A.1.341e B. 2/5 C. "x" 'q' D. "12345"
5.对于下面的for循环语句,可以断定它 。
for (x=2;x<=8;x )
printf(″------″);
供选择的答案是:
A. 共执行7次循环 B. 循环次数不定
C. 共执行6次循环 D. 共执行8次循环
6. 下列字符序列中,不可用作C语言标识符的是 。
A.m12 B. _xyz C. no.1 D. t_2
7.在说明语句:int (*mt)[10];中,标识符mt代表的是 。
A. 一个用于指向函数的指针变量 B. 一个返回值为指针型的函数名
C. 一个用于指向整型数据的指针变量 D. 一个用于指向一维数组的指针变量
8.以下程序:
main()
{ int x=2,y=4,z=7,m;
m=(x&&y z);
printf("%d",m);
}
执行后输出结果是 。
A. 8 B. 1 C. 0 D. 12
9.在C语言的函数中, 。
A.必须有形参 B. 可以有也可以没有形参
C. 形参必须是变量名 D. 数组名不能作形参
10.以下程序的输出结果是 。
main ()
{ int x=3,y=9;
x*=y;y =x;
printf("%d %d\n",x,y);
}
供选择的答案是:
A. 27 36 B. 3 9 C. 27 27 D. 36 36
11.对于C语言程序中的函数,下列叙述中正确的是 。
A. 函数的定义可嵌套,但函数的调用不能嵌套
B. 函数的定义和调用均不能嵌套
C. 函数的定义和调用均可嵌套
D. 函数的定义不能嵌套,但函数调用可以嵌套
12.以下正确的实型常量是 。
A. e3 B. E10 C. 1.23e-5 D. 12e1.23
13. 下列说法不正确的是 。
A.主函数main中定义的变量在整个文件或程序中有效
B.不同函数中,可以使用相同名字的变量
C.形式参数是局部变量
D.在函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
14.下列关于C语言数据文件的叙述中正确的是 。
A.C语言只能读写文本文件 B.C语言只能读写二进制文件
C. 文件由字符序列组成,可按数据的存放形式分为二进制文件和文本文件
D. 文件由二进制数据序列组成
15.在C语言中,变量的缺省存储类型是 。
A. extern B. auto C. static D. register
16. 以下程序:
main()
{ int x=5,y=4,z=3;
if(x<y z) printf("* * * *");
else printf("# # # #");
}
执行后输出结果是 。
A. * * * * B. 无输出结果 C. # # # # D. 存在语法错误
17. 设x为int型变量,y为float型变量,则下面语句中错误的是 。
A. x ; B. x=y=0; C. y=(float)x; D. x=y%3;
18.以下程序:
main()
{ char st[30]="I am a student";
printf("%d \n",strlen(st));
}
执行后输出结果是 。
A. 14 B. 30 C. 11 D. 16
19. 设x、y、z和k都是int型变量,则执行下列语句后,变量x的值为 。
x = (y=5,z=20,k=50);
供选择的答案是:
A. 5 B. 50 C. 20 D. 75
20. 变量的指针,其含义是指该变量的 。
A.值 B. 名 C. 地址 D. 一个标志
第二部分:简单程序
21.下列程序:
main()
{ int x[5]={1,3,5,7,9};
int k,sum=0;
for(k=0;k<5;k )
{
if(k%2==0)
sum =x[k];
}
printf("%d\n",sum);
}
执行后输出结果是 。
A. 26 B. 15 C. 1 D. 10
22.在执行以下程序时:
# include "stdio.h"
main ()
{ char ch,i=0 ;
while ((ch=getchar()) != '\n' )
{ if ( ch >='A' && ch <= 'Z ' )
{ ch = ch 32 ;
i ;
}
printf ("%c", ch);
}
printf (" %d\n",i);
}
如果从键盘上输入:ABCDefgh ,则输出结果为 。
A. ABCDefgh 8 B. ABCDefgh 4 C. abcdEFGH 8 D. abcdefgh 4
23.以下程序:
main()
{ int x,y,z;
x=10,y=-15,z=3;
if(x y>z)
x=x*2;
else
x=x*5;
printf("%d\n",x);
}
执行后输出结果是 。
A.50 B.20 C.10 D.15
24.以下程序:
main()
{ static int a[]={5,10,7,2,8,6,4};
int sum=0;
int *p;
for(p=a;p<a 7;p=p 2)
sum =*p;
printf("%d\n",sum);
}
执行后输出结果是 。
A. 18 B. 42 C. 35 D. 24
25.以下程序:
void fun(int b[],int n)
{ int i,temp;
for(i=0;i<n/2;i )
{ temp=b[i];
b[i]=b[n-1-i];
b[n-1-i]=temp;
}
}
main( )
{ int i,a[5]={1,3,5,7,9};
fun(a,5);
for(i=0;i<5;i )
printf("%d ",a[i]);
}
执行后输出结果是 。
A. 1 3 5 7 9 B. 9 7 5 3 1 C. 5 7 9 3 1 D. 1 3 9 7 5
26.以下程序,执行后输出结果是 。
main()
{
static char m[]="C program";
char *ptr;
ptr=m;
for(ptr=ptr 2;*ptr!= '\0';ptr )
printf("%c",*ptr);
}
A.C program B."C program" C."program" D.program
27.以下程序:
main ()
{ int x=4,y=5,z,m;
z=x&y;
m=x|y;
printf("%d %d\n",z,m);
}
执行后输出结果是 。
A. 0 1 B. 9 9 C. 4 5 D. 5 4
28.以下程序:
struct tem
{ int n;
char ch;
};
func(struct tem at)
{ at.n=at.n 10;
at.ch=at.ch 2;
printf("%d,%c\n",at.n,at.ch);
}
main()
{ struct tem mt={15,'A'};
func(mt);
}
执行后的输出结果是 。
A.25,C B.15,C C.25,A D.15,C
29.以下程序:
main()
{ char str1[30]="Hello",*str2="how are you!";
int x;
strcat(str1,str2);
x=strlen(str1);
printf("%d\n",x);
}
执行后输出结果是 。
A.30 B.5 C.17 D.15
30.以下程序:
int *f(int *x, int *y)
{ if (*x>= *y)
return x;
else
return y;
}
main()
{ int a=5,b=10,*p,*q,*r;
p = &a;
q = &b;
r = f(p, q);
printf("%d,%d,%d\n",*p,*q,*r);
}
执行后输出结果是 。
A. 5,10,20, B. 10,10,5 C. 5,5,10 D. 5,10,10
31.从键盘输入B,以下程序的运行结果为 :
main()
{ char grade;
scanf("%c",&grade);
switch(grade)
{ case 'A':printf(">=90");
case 'B':
case 'C':printf(">=60");break;
case 'D':printf("<60");
default: printf("error");
}
}
A. >=60<60error B. >=60 C. <60 D. error
32. 下面程序运行后,变量c的值为 。
int fun(int x)
{ int z;
z=x*2;
return z; }
main()
{ int i,c=0;
for(i=1;i<4;i )
c=fun(i);
printf("%d ",c);
}
A. 12 B. 8 C. 6 D. 2 4 6
第二卷
说明:(1)第二卷均为填空题,在阅读和理解原题程序的基础上,在第二卷答题卡上编号对应的栏目中填入适当的字符、语句,以构成一个正确的C语言程序。
(2)每空栏3分,10个空栏共30分。
试题一 以下程序用两种方法输出字符串
#include<stdio.h>
main()
{
int i;
char string[]="I love China! ";
printf(" 1 ",string);
printf("------------------\n");
2 ;
while(string[i])
{
printf("%c",string[i]);
3 ;
}
printf("\n");
}
试题二 下列程序统计一行语句中的单词数
#include<stdio.h>
main()
{
int i,c,num=0,word=0;
char string[81];
gets( 4 );
for(i=0;(c=string[i])!= '\0';i )
if(c==32) 5 ;
else if(word==0)
{
word=1;
6 ;
}
printf("There are %d words in the line\n",num);
}
试题三 以下程序用于求给定数据序列的最小值
int minfun(int n,int array[])
{
int i,min;
min= 7 ;
for(I=0;i<n;i )
if(min 8 array[i]) 9 ;
return 10 ;
}
main()
{
int m[8]={4,-5,16,90,-51,21,8,10};
int min;
min=minfun(8,m);
printf("min=%d\n",min);
}