C语言 试 题
题号 分数 班号 姓名 附加题 一 二 三 四 五 六 七 八 九 十 总分
一、选择题:(20分,每题2分)
1.以下不正确的C语言标识符是( )。 A. ABC B. abc C. a_bc D. ab.c 2.C程序是由 构成的。 A. 主程序与子程序 B. 主函数与若干子函数
C. 一个主函数与一个其它函数 D. 主函数与子函数
3.以下说法中正确的是: 。
A. 在C语言中,实参与其对应的形参各占独立的存储单元; B. 在C语言中,实参与其对应的形参共占同一个存储单元; C. 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;
D. 在C语言中,形参是虚拟的,不占存储单元。 4.设n=3;则n++的结果是( )。 A. 2 B. 3 C. 4 D. 5 5.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是( )。 A. 0 B. 1 C. 2 D. 3
6.凡是函数中未指定存储类别的局部变量其隐含的存储类别是( )。
A. 自动(auto) B. 静态(static) C. 外部(extern) D. 寄存器(register) 7.在while(x)语句中的x与下面条件表达式等价的是: 。 A. x= =0 B. x= =1 C. x!=1 D. x!=0 8.若有以下说明和语句: struct worker {
int no;
第1页(共6页) 班级: 学号: 姓名: char *name; }work, *p=&work;
则以下引用方法不正确的是( )。
A. work.no B. (*p).no C. p->no D. work->no 9.以下对二维数组进行正确初始化的是( )。 A. int a[2][3]={{1,2},{3,4},{5,6}}; B. int a[][3]={1,2,3,4,5,6}; C. int a[2][]={1,2,3,4,5,6}; D. int a[2][]={{1,2},{3,4}}; 10.二维数组a有m列,则在a[i][j]之前的元素个数为: 。
A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+1
二、给出下列程序的运行结果:(20分,前四题每题3分,后两题每题4分)
1.#include
int i=16,j,x=6; j=i+++1; x*=i=j;
printf(“%d,%d\\n”,j,x); }
运行结果是:
2.#include
int a=1,b=4,c=2; float x=10.5,y=4.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x; printf(“%f\\n”,z); }
2 班级: 学号: 姓名: 运行结果是:
3.#include
int a,b,c,d; a=c=0; b=1; d=20;
if(a) d=d-10; else if(!b)
if(!c) d=25; else d=15; printf(“d=%d\\n”,d); }
运行结果:
4.main()
{
int i=10; switch(i){
case 9: i+=1; case 10: i+=1; case 11: i+=1; default : i+=1; } printf(“%d”,i); }
运行结果:
5.#include
main() {
int a[]={1,2,3,4},i,j,s=0; j=1;
for(i=3;i>=0;i--) { s=s+a[i]*j;
3 班级: 学号: 姓名:
j=j*10; }
printf(\}
运行结果:
6.func(int x)
{ x=20; } main() {
int x=10; func(x);
printf(“%d”,x); }
运行结果:
三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(20分,每空2分)
1.已知能被4整除而不能被100整除的或者能被400整除的年份
是润年,则判断某一年是否是润年的程序如下: main() {
int year,leap;
scanf(“%d”,&year);
if( ) leap=1; else leap=0;
if( ) printf(“是润年”); else printf(“不是润年”); }
2.将100至200间不能被3整除的数输出:
main() {
int n;
4 班级: 学号: 姓名: for(n=100;n<=200;n++) {
if(n%3==0) ;
printf(“%d ”,n);
}
}
3.判断m是否是素数
#include
int m,i,k;
scanf(“%d”,&m); k=sqrt(m); for(i=2;i<=k;i++)
if(m%i==0) ;
if(i>=k+1) printf(“%d is a prime number\\n”,m); else printf(“%d is not a prime number\\n”,m); }
4.给定一3*4的矩阵,求出其中值最大的元素的值,及所在的行列号。
main() {
int i,j,row=0,colum=0,max;
static int a[3][4]={{1,2,3,4}{9,8,7,6}{10,-10,-4,4}}; ;
for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {
max=a[i][j]; ; ; }
printf(“max=%d,row=%d,colum=%d\\n”,max,row,colum); }
5.下面函数的功能是将两个字符串s和t连接起来。 char *conj(char *s, char *t) {
5