(30) 以下程序的输出结果是 。 union myun { struct
{ int x, y, z; } u; int k; } a; main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf(“%d\\n”,a.u.x); } A) 4 B) 5 C) 6 (31) 下列程序执行后的输出结果是 。 void func1(int i); void func2(int i);
char st[]=\ void func1(int i) { printf(\
if(i<3){i+=2;func2(i);} }
void func2(int i) { printf(\
if(i<3){i+=2;func1(i);} }
main()
{ int i=0; func1(i); printf(\
A) hello B) hel C) hlo (32) 下列程序执行后的输出结果是 。 #include
int a[]={0,1,2,3,4,5,6,7,8,9}; float f(int n) {
if(n==1)
return a[0];
else
return((float)(n*f(n-1)+a[n])/n+1);
}
main() {
int n=9;
printf(“f(%d)=%f\\n”,n+1,f(n)); } A)14 B) 15 C)1 6
5
D) 0 D) hlm D) 13
第二卷
说明:(1)第二卷含二大题,均属填空题,每题各有5个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。 (2)每空栏填对得3分,两大题10个空栏,全填对得30分。
试题一
下面的程序是求二维数组中的最大值及其所在的行下标并输出。其中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。 #define N 3 #define M 3
select(int a[N][M],int *n) { int i,j,row=0,colum=0; for(i=0;i for(j=0; ① ;j++) if( ② ){row=i;colum=j;} *n= ③ ; return ④ ; } main() {int a[N][M]={9,11,23,6,1,15,9,17,20},max,n; max= ⑤ ; printf(\} 试题二 以下程序的功能是将n个字符按输入顺序的逆序排列。其中,函数sort实现n个字符的逆置。 sort(char *p, int m) { int i; char temp,*p1,*p2; for(i=0; ⑥ ;i++) { p1= ⑦ ; p2= ⑧ ; temp=*p1; ⑨ ; *p2=temp; } } main() { int i,n; char *p, num[20]; printf(“input n:”); scanf(“%d”,&n); 6 printf(“please input these numbers:\\n”); for(i=0;i scanf(“ %c”,&num[i]);//%c之前要留有空格,否则不能从键盘正确读取。 p= ⑩ ; sort(p,n); printf(“now,the sequence is:\\n”); for(i=0;i printf(“%c”,num[i]); } 7 全国高校联合计算机等级考试广西考区 非计算机专业学生计算机水平考试(二级C语言)模拟试卷2 (本试卷包括第一卷和第二卷,答卷时间总共120分钟) 第一卷 说明:(1)第一卷全部为选择题,每题可供选择的答案中,只有一个正确答案。 (2)答本卷的题目时,要在标准答题纸上编号对应的栏目中,用铅笔将正确答 案涂黑。在试题上直接勾划者步得分。 (3)本卷共70分,其中第1~26题每题2分,第27~32每题3分。 第一部分:基础知识(20题,共40分) (1) 以下叙述中正确的是 。 A) C语言的源程序不必通过编译就可以直接运行 B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C) C源程序经编译形成的二进制代码可以直接运行 D) C语言中的函数不可以单独进行编译 (2) 以下选项中不正确的实型常量是 。 A) 2.6E-1 B) 0.8324e C) -78.8745 D) 456e-2 (3) 若以下选项中的变量x1、x2、x3、x4已正确定义,则正确的赋值语句是 。 A) x1=26.8%3 B) 1+2=x2 C) x3=0x12 D) x4=1+2=3; (4) 有定义语句:int x, y;,若值11,变量y得到数值12,下面四组输入要通过scanf(\语句使变量x得到数形式中,错误的是 。 A)11 12<回车> B)11, 12<回车> C)11,12<回车> D)11 ,<回车> 12<回车> (5) 设有以下定义 int a=0; double b=1.25; char c=?A?; #define d 2 则下面语句中错误的是 。 A)a++; B)b++ C)c++; D)d++; (6) 有以下程序 main( ) { int x=102,y=012; printf(\} 执行后输出结果是 。 A)10,01 B)002,12 C)102,10 D)02,10 (7) 设有如下程序段: int x=2002, y=2003; printf(\ 8 则以下叙述中正确的是 。 A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为2002 D)输出值为2003 //逗号表达式 (8) 设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是() A)scanf(\ B)scanf(\C)scanf(\D)scanf(\ (9) 以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是 。 A)if((a>b)&&(b>c)) k=1; B) if((a>b)||(b>c)) k=1 else k=0; else k=0; C)if(a<=b) k=0; D)if(a>b) k=1; else if(b<=c) k=1; else if(b>c) k=1; else k=0; (10) 有以下程序 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(\} 程序执行后的输出结果是 。 A)自然数1~9的累加和 B)自然数1~10的累加和 C)自然数1~9中的奇数之和 D)自然数1~10中的偶数之和 (11) 若程序中定义了以下函数 double myadd(double a,double b) { return (a+b);} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是 。 A)double myadd(double a,b); B)double myadd(double,double); C)double myadd(double b,double a); D)double myadd(double x,double y); (12) 有以下函数定义 : void fun(int n, double x) { …… } 若以下选项中的变量都 已正确定义并赋值,则对函数fun的正确调用语句是 。 A)fun(int y,double m); B)k=fun(10,12.5); C)fun(x,n); D)void fun(n,x); (13) 有以下程序段 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; b中的值是 。 A)5 B)6 C)8 D)9 (14) 有以下程序 main( ) { char a[]=\ printf(\%d\\n\} 9