青海大学昆仑学院C语言期末考试试卷带答案文档格式.doc
《青海大学昆仑学院C语言期末考试试卷带答案文档格式.doc》由会员分享,可在线阅读,更多相关《青海大学昆仑学院C语言期末考试试卷带答案文档格式.doc(4页珍藏版)》请在冰点文库上搜索。
a[0];
与p=&
a[0]等价的语句是p=a,*(p+1)的值是4,*(a+2)的值是6。
9.有结构体和共用体的变量定义如下:
structaa{inta;
charc;
floatx;
}b1;
unionbb{inta;
}b2;
则变量b1和b2占用的内存空间的字节数分别为7和4。
二.选择题(每小题2分,共计40分)
1.下列变量名合法的是(B)。
A.B.C.TOMB._testC.3a6bD.ab$
2.C语言中运算对象必须是整型的运算符是(B)。
A./B.%C.!
D.*
3.以下程序的输出结果是(D)。
A.a=%2,b=%5B.a=2,b=5C.a=%%d,b=%%dD.a=%d,b=%d
main()
{inta=4,b=9;
printf(“a=%%d,b=%%d\n”,a,b);
}
4.下列程序的输出结果是(C)。
A.18B.9C.-18D.-9
main(){inta=9;
a+=a-=a+a;
printf(“%d\n”,a);
}
5.为表示关系a≥b≥c,应使用的C语言表达式是(A)。
A.(a>
=b)&
&
(b>
=c)B.(a>
=b)AND(b>
=c)C.(a>
=b>
=c)D.(a>
=c)
6.字符型常量在内存中存放的是(B)。
A.BCD代码B.ASCII代码C.内部码D.十进制码
7.对下面程序段描述正确的是(D)。
A.while循环执行了10次B.循环是无限循环
C.循环体语句一次也不执行D.循环体语句只执行一次
{intx=10;
do{x=x-1;
}while(x==0);
8.下面选项中,与if(a)等价的是(D)。
A.if(a==0)B.if(a!
=0)C.if(a=0)D.if(a==1)
9.有程序段:
intn=1;
do{++n;
n=n*5;
}while(n=10);
(B)
A.执行一次B.执行2次C.不执行D.执行无限次
10.若有声明语句:
intb[2][4];
则对a数组元素的正确引用是(A)。
A.b[1][3]B.b[1][4]C.b[2][4]D.b[0][4]
11.欲将字符串“kunluncollege”赋给字符数组str,正确的语句是(D)。
A.str=“kunluncollege”;
B.str=“kunluncollege\n”;
C.strcpy(“kunluncollege”,str);
D.strcpy(str,“kunluncollege”);
12.语句printf(“%d\n”,strlen(“xining”));
的输出结果是(B)。
A.7B.6C.存在语法错误D.不定值
13.以下函数的类型是(C)。
A.与参数x的类型相同B.void类型C.int类型D.无法确定
ff(floatx)
{printf(“%d\n”,x*x);
14.若用数组名作为函数调用的实参,传递给形参的是( A)
A.数组的首地址 B.数组第一个元素的值
C.数组中全部元素的值 D.数组元素的个数
15.以下不正确的说法是(C)。
A.在C语言中允许函数递归调用
B.函数值类型与返回值类型出现矛盾时,以函数值类型为准
C.形参可以是常量、变量或表达式
D.C语言规定,实参变量对形参变量的数据传递是“值传递”
16.以下程序的输出结果是(D)。
A.15B.100C.10D.150
#defineMAX(x,y)(x)>
(y)?
(x):
(y)
{inti=10,j=15,k;
k=10*MAX(i,j);
printf(“%d\n”,k);
17.函数直接或间接地自己调用自己,被称为函数的(A)。
A.递归调用B.主函数调用C.自定义调用D.嵌套调用
18.下列说法中错误的是(D)。
A.枚举类型中的枚举元素是常量B.一个整数不能直接赋给一个枚举变量
C.枚举类型中枚举元素的值都是从0开始以1为步长递增
D.typedef可以用来定义新的数据类型
19.在C语言中,对文件的存取是以(A)为单位的。
A.字节B.函数C.记录D.模块
20.当fclose函数正确执行后,函数的返回值是(A )。
A.0B.-1C.1D.非零值
三.阅读下列程序,按题意填空(每空2分,共计16分)
1.有以下程序(求20以内的偶数和,包括20)。
请填空:
#include<
stdio.h>
main(){intn=0,sum=0;
do{n++;
if(①n%2==0);
sum+=n;
}while(②n<
=20);
printf(“%d\n”,sum);
}
2.以下程序判断输入的一个整数m是否既能被4又能被6整除,若能整除,输出“YES”,若不能整除,输出“NO”。
main(){intm;
printf(“Enteraintnumber:
”);
scanf(“%d”,③&
m);
if(④m%4==0&
m%6==0)printf(“YES\n”);
elseprintf(“NO\n”);
3.以下程序的功能是输出杨辉三角形。
main(){inta[10][10],inti,j;
for(i=0;
i<
10;
i++)a[i][0]=1;
for(i=1(或i=0);
i++)a[i][i]=1;
for(i=2;
i++)
for(j=1;
j<
i;
j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;
{for(j=0;
j<
=i;
j++)printf(“%4d”,a[i][j]);
printf(“\n”);
}}
四.程序阅读题(每题3分,共计9分)
1.#include<
输出结果:
8。
main(){intk=5,m=1;
switch(k){case1:
m++;
case5:
m*=4;
case9:
m+=4;
break;
default:
m+=3;
printf(“%d”,m);
}
2.#include<
输出结果:
12。
main()
{inti,j,a[3][3]={{1,3,5},{2,4,6},{9,8,7}};
intsum=0;
for(i=0;
=2;
i++)sum+=a[i][i];
printf(“%d\n”,sum);
3.inta=9,b=5;
输出结果:
3。
intmin(inta,intb)
{intc;
c=a<
b?
a:
b;
return(c);
main(){inta=3;
printf(“min=%d”,min(a,b));
五.编程题(共计20分)
1.(8分)利用循环求12+22+32+42+52。
{inti,sum=0;
for(i=1;
=5;
i++)
sum+=i*i;
printf(“%d\n”,sum);
2.(6分)从键盘输入8个任意整数,计算数组中所有的负数之和(用一维数组)。
#include<
{inti,j,a[8],sum=0;
printf(“Pleaseinput8numbers:
\n”);
for(i=0;
8;
scanf(“%d”,&
a[i]);
if(a[i]<
0)sum=sum+a[i];
printf(“%d\n”,sum);
3.(6分)利用函数编写求两数相乘的函数xc()。
floatxc(floatx,floaty)
{return(x*y);
{floata,b,c;
scanf(“%f,%f”,&
a,&
b);
c=xc(a,b);
printf(“c=%f\n”,c);
第4页共4页