北航C语言试题.docx
《北航C语言试题.docx》由会员分享,可在线阅读,更多相关《北航C语言试题.docx(11页珍藏版)》请在冰豆网上搜索。
北航C语言试题
北京航空航天大学
2011-2012学年第二学期期末
《C语言程序设计》
考试卷
班级______________学号_________
姓名______________成绩_________
2012年5月29日
班号学号姓名成绩
《C语言程序设计》期末考试卷
注意事项:
1、请将所有的答案和程序写在答题纸上,写在试卷纸上不得分!
2、考试时间120分钟
一、单项选择题(每题2分,共40分)
1、以下叙述不正确的是___
A)一个C源程序可由一个或多个函数组成
B)在C程序中,注释说明只能位于一条语句的后面
C)程序的基本组成单位是函数
D)一个C源程序必须包含一个main函数
2、以下叙述中正确的是
A)C程序中注释部分可以出现在程序中任意合适的地方
B)花括号“{”和“}”只能作为函数体的定界符
C)构成C程序的基本单位是函数,所有函数名都可以由用户命名
D)分号是C语句之间的分隔符,不是语句的一部分
3、以下表达式值为3的是________.
A)16-13%10B)2+3/2C)14/3-2D)(2+6)/(12-9)
4、已知各变量的类型说明如下:
intk,a,b;
unsignedlongw=5;
doublex=1.42;
则以下表达式不正确的是______.
A)x%(-3)B)w+=-2C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3)
5、有以下程序
voidmain()
{
doubled=3.2;
intx,y;
x=1.2;
y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
程序的输出结果是____
A)3B)3.2C)0D)3.07
6、以下程序的运行结果是________.
main()
{
intm=5,n=10;
printf(“%d,%d\n”,m++,--n);
}
A)5,9B)6,9C)5,10D)6,10
7、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假的表达式是______。
A)x>=1&&x<=10||x>=200&&x<=210
B)x>=1||x<=10||x>=200||x<=210
C)x>=1&&x<=10&&x>=200&&x<=210
D)x>=1||x<=10&&x>=200||x<=210
8、若w=5,x=2,y=3,z=4,则条件表达式ww:
yy:
z的值是_______。
A)4B)3C)2D)1
9、下面程序的输出结果是______。
voidmain()
{
inti,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<-3;j++)
{
if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A)x=2B)x=4C)x=6D)x=8
10、有以下程序段
intk=20;
while(k=0)k=k+3;
while循环执行的次数是()。
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
11、以下选项中,不能正确赋值的是()。
A)chars3[20]="Ctest";
B)chars2[]={'C','t','e','s','t'};
C)chars1[10];s1="Ctest";
D)char*s4="Ctest\n"
12、已知:
inta[]={1,2,3,4},y,*p=a;则执行语句
y=(*++p)-- ;之后,数组a各元素的值变为_____。
A)0,1,3,4B)1,1,3,4C)1,2,2,4D)1,2,3,3
13、已知intx=10,y=20,z=30;执行下列语句后x、y、z的值是_________。
if(x>y)
z=x;x=y;y=z;
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=30D)x=20,y=30,z=20
14、以下程序的输出是_________。
voidmain()
{intx=2,y=-1,z=2;
if(xif(y<0)z=0;
elsez+=1;
printf(“%d\n”,z);
}
A)3B)2C)1D)0
15、已有以下数组定义和func函数调用语句,则func函数原形的正确声明为_______。
voidmain()
{inta[3][4];
……
func(a);
……
}
A)func(intarray[][6]);B)func(intarray[3][]);
C)func(intarray[][4]);D)func(intarray[2][5]);
16.以下程序的输出结果是()。
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(5,2,a);
printf("%d",a);}
A)0B)29C)31D)无定值
17、若用数组名作为函数调用的实参,则传递给形参的是_________
A)数组的首地址
B)数组第一个元素的值
C)数组中全部元素的值
D)数组元素的个数
18、设有如下程序段()。
chars[20]="Beijing",*p;
p=s;
则执行p=s;语句后,以下叙述正确的是()。
A)可以用*p表示s[0]
B)s数组中元素的个数和p所指字符串长度相等
C)s和p都是指针变量
D)数组s中的内容和指针变量p中的内容相同
19、若有定义:
inta[]={2,4,6,8,10,12,14,16,18,20,22,24},q[4],k;则下面程序段的输出是:
for(k=0;k<4;k++)q[k]=a[k*3];printf("%d\n",q[3]);
A)18B)16C)20D)输出项不合法,结果不确定
20、以下程序执行结果错误,错误原因是________
voidmain()
{
int*p,i;char*q,ch;
p=&i;
q=&ch;
*p=40;
*p=*q;
...
}
A)p和q的类型不一致,不能执行语句*p=*q;
B)*p中存放的是地址值,因此不能执行语句*p=40;
C)q没有指向具体的存储单元,所以*q没有实际意义;
D)q虽然指向具体的存储单元,但该单元中没有确定的值,所以执行语句*p=*q错误。
二、填空题(前五题每题2分,后5题每题3分,共25分)
1、假定char类型变量占用一个字节,其有定义:
charx[]=”C_Language”;,则数组x在内存中所占字节数是______________。
2、设a.b均为int型变量且a=2,b=0,则表达式(x=a)||!
(y=b)&&0的值是_______.
3、下面程序的输出是_______。
main()
{intx=3,y=2,z=0;
if(x==y+z)printf("**");
elseprintf("##");
}
4、执行完下面的程序后,k的值是_____.
intk=1,n=263;
do
{
k*=n%10;
n/=10;
}while(n);
5、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。
请填空_________.
intx,y;
for(x=0;x<=30;x++)
{y=30-x;
if(___________)printf(“鸡有%d只,兔有%d只\n”,x,y);
}
6、下面程序的运行结果是__________。
voidmain()
{inti=5;
do{
switch(i%2)
{case4:
i--;break;
case6:
i--;continue;
}
i--;i--;
printf(“%d”,i);
}while(i>0);
}
7、下面程序的功能是输出两个字符串中对应相等的字符。
请填空。
#include
charx[]="programming";
chary[]="Fortran";
main()
{
inti=0;
while(x[i]!
='\0'&&y[i]!
='\0')
if(x[i]==y[i])
printf("%c",____________);
elsei++;
}
8、已有函数pow1,现要求取消变量i后pow1函数的功能不变(不得增加变量),请填空。
修改前的pow1函数:
intpow1(intx,inty)
{inti,j=1;
for(i=1;i<=y;++i)j=j*x;
return(j);
}
修改后的pow1函数:
intpow1(intx,inty)
{intj;
for(_____;______;_____;)j=j*x;
return(j);
}
9、以下程序的运行结果是_____________。
voidfun(int*n)
{
while((*n)--);
printf(”\n%d”,*n);
}
main()
{inta=10;
fun(&a);
}
10.下面程序的运行结果是_____.
#include
main()
{inta,s,n,count;
a=2;s=0;n=1;count=1;
while(count<=4)
{
n=n*a;
s=s+n;
++count;
}
printf("s=%d",s);
}
三、程序编写题(见答题纸)
答题纸
班号学号姓名成绩
一、单项选择题(共40分)
题号
1
2
3
4
5
6
7
8
9
10
答案
题号
11
12
13
14
15
16
17
18
19
20
答案
二、填空题(共25分)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
三、程序编写题(第一题20分,第二题15分,共35分)
1、编写程序实现:
从计算机屏幕输入一个任意正整数,判断它能否分别被3、5整除,并输出以下信息之一:
(1)能被3、5整除;
(2)能被3、5其中1个整除;
(3)不能被3、5整除;
2.在主函数中定义一个一维数组,内存10个学生成绩如下:
87,85,76,90,77,78,82,93,82,70。
写一个子函数,主函数调用此子函数,能够求出最高分,最低分和平均分,返回主函数后输出结果(使用全局变量以及子函数中输出结果不得分)。