浙江理工大学C语言期末试题含答案.docx
《浙江理工大学C语言期末试题含答案.docx》由会员分享,可在线阅读,更多相关《浙江理工大学C语言期末试题含答案.docx(14页珍藏版)》请在冰点文库上搜索。
浙江理工大学C语言期末试题含答案
C程序设计试卷
一、单选题(本题共20分,每小题2分)
(1)
以下C语言常量中,表达错误的是___
(1)___。
[A]0xFF[B]3.2e0.5[C]5.6[D]‘\n’
(2)
C程序的基本结构有___
(2)___。
[A]选择、重复和模块[B]顺序、选择和模块
[C]顺序、选择和循环[D]逻辑、物理和程序
(3)
在C语言程序中,关于字符串的描述正确的是___(3)___。
[A]可定义一个字符串变量来存储字符串;
[B]可定义一个字符变量来存储任意字符串;
[C]可定义一个字符数组来存储字符串;
[D]可定义一个字符指针来存储字符串;
(4)
在C语言中,用关键字___(4)___定义双精度类型变量。
[A]single[B]double[C]float[D]int
(5)
下面叙述中不正确的是___(5)___。
[A]不同函数中可以使用相同名字的变量
[B]形式参数是局部变量
[C]在一个函数内部的复合语句中定义的变量在本函数范围内有效
[D]在一个函数内部定义的变量只能在本函数范围内有效
(6)
下面程序段的输出结果是___(6)___。
inti=100;
while(i>120)
i=i+1;
printf(″%d″,i);
[A]100[B]101[C]120[D]121
(7)
以下定义语句中正确的是___(7)___。
[A]chara='A'b='B';
[B]floata=b=10.0;
[C]inta=10,*b=&a;
[D]float*a,b=&a;
(8)
已有定义:
inti,a[10],*p;,则合法的赋值语句是___(8)___。
[A]p=100;[B]p=a[5];[C]p=a[2]+2;[D]p=a+2;
(9)
设有定义:
inta,*p1=&a;以下scanf语句中能正确为变量a读入数据的是___(9)___。
[A]scanf(“%d”,p1);
[B]scanf(“%d”,a);
[C]scanf(“%d”,&p1);
[D]scanf(“%d”,*p1);
(10)
以下程序段中与语句k=a>b?
(b>c?
1:
0):
0;功能等价的是___(10)___。
[A]if((a>b)&&(b>c))k=1elsek=0;
[B]if((a>b)||(b>c))k=1elsek=0;
[C]if(a<=b)k=0;
[D]if(a>b)k=1;
二、程序填空题(本题共30分,每小题2分)
阅读下列程序说明和程序代码,在每小题提供的若干可选项中,挑选一个最佳的选项。
(1)【程序说明】
输入整数n,输出共有n层的金字塔图形。
例如:
【程序代码】
#include
voidmain(){
inti,j,n;
charc='*';
printf("输入层数:
");
scanf("%d",&n);
for(i=1;(11);i++){
for(j=1;j<=n-i;(12))
printf("");
for(j=1;(13);j++){
printf((14),c);
}
printf("\n");//换行,在内嵌循环结束后执行
(15)
}
【选项】
(11)
[A]i<=n+1[B]i<=n[C]i(12)
[A]i++[B]j=i+1[C]j++[D]i=j+1
(13)
[A]j>=2*i-1[B]j<=2*i-1[C]j<=2*n-1[D]j<=n
(14)
[A]"%d"[B]"%s"[C]"%c"[D]"%f"
(15)
[A]}[B])[C]};[D]以上选项都不正确
(2)【程序说明】输入年份判断是否闰年。
【程序代码】
#include
main(){
intyear,leap;
scanf("%d",(16));
if(year%4==0){
if(year%100==0)
{
if(year%400==0)
leap=1;
(17)
leap=0;
}
else
leap=1;
}
else
(18);
if((19))
printf("%dis",(20));
else
printf("%disnot",year);
printf("aleapyear.\n");
}
【选项】
(16)
[A]year[B]&year[C]&n[D]&leap
(17)
[A]elseif[B]else;[C]else[D]elseif(leap==1)
(18)
[A]leap=0[B]leap=1[C]year=0[D]year=1
(19)
[A]year=1[B]leap[C]leap=0[D]以上选项都不正确
(20)
[A]leap[B]&leap[C]year[D]&year
(3)【程序说明】输入十个整数并保存在一维数组中,使数组中每个元素都增加10。
【程序代码】
#include
main(){
inta[10],i;
(21)
p=a;
for(i=0;i<10;i++){
scanf("%d",(22));
(23);
}
for(p=a;p<(a+10);p++)
(24)
printf("\n");
(25);
for(;p<(a+10);p++)
printf("%d",*p);
}
【选项】
(21)
[A]intp[10][B]int*p;[C]intp;[D]inta;
(22)
[A]a++[B]a[p][C]*p[D]p
(23)
[A]p++[B]a++[C]*p++[D]*a++
(24)
[A]*a=*a+10;[B]*p=*(p+10);[C]*p=*p+10;[D]*a=*(a+i);
(25)
[A]p=a[0][B]p=*a[C]p=a[D]*p=&a
三、程序阅读题(本题共20分,每小题2分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确的答案。
(1)【程序说明】运行程序并回答问题。
【程序代码】
#include
#include
voidmain()
{intn,s=0;
scanf("%d",&n);
n=fabs(n);
while(n>1){
s=s+n%10;
n=n/10;
}
printf("%d\n",s);
}
【选项】
(26)
程序运行时输入312,输出___(26)__。
[A]213[B]6[C]312[D]3为。
(27)
程序运行时输入-5104,输出___(27)__。
[A]-5104[B]–4015[C]10[D]51.04
(2)【程序说明】运行程序并回答问题。
【程序代码】
#include
voidmain(){
inta,b,c,temp;
a=5;b=12;c=6;
printf("a=%d,b=%d,c=%d\n",a,b,c);
if(a
if(aprintf("a=%d,b=%d,c=%d\n",a,b,c);
if(bprintf("a=%d,b=%d,c=%d\n",a,b,c);
}
voidswap(int*x,int*y){
inttemp;
temp=*x;
*x=*y;
*y=temp;
}
【选项】
(28)
程序运行时,第1行输出___(28)__。
[A]a=5,b=12,c=6[B]a=%d,b=%d,c=%d
[C]a=5.0,b=12.0,c=6.0[D]a=12,b=5,c=6
(29)
程序运行时,第2行输出___(28)__。
[A]a=5,b=12,c=6[B]a=6,b=12,c=5
[C]a=12,b=5,c=6[D]a=12,b=6,c=5
(30)
程序运行时,第3行输出___(30)__。
[A]a=5,b=12,c=6[B]a=6,b=12,c=5
[C]a=12,b=5,c=6[D]a=12,b=6,c=5
(3)【程序说明】运行程序并回答问题。
【程序代码】
#include
voidmain()
{
chars1[40];
inti=0;
printf("\nInputastring:
");
scanf("%s",s1);
while(s1[i]!
='\0'){
if(s1[i]>='A'&&s1[i]<='Z')
s1[i]=s1[i]+32;
i++;}
printf("\n%s\n",s1);
}
【选项】
(31)
程序运行时,输入abc30DCA,输出___(31)__。
[A]62[B]abc30dca[C]abc[D]DCA
(32)
程序运行时,输入Face,输出___(32)__。
[A]Face32[B]FACE[C]face[D]f
(4)【程序说明】运行程序并回答问题。
【程序代码】
#include
voidmain(){
FILE*fp;
inti,j,k,x,y;
scanf("%d%d",&i,&j);
fp=fopen("t.dat","w");
fprintf(fp,"%d\n",i);
if(ik=j;
elseif(i>j)
k=i;
else
k=i+j;
fprintf(fp,"%d\n",k);
fclose(fp);
fp=fopen("t.dat","r");
fscanf(fp,"%d%d",&x,&y);
printf("x=%d,y=%d\n",x,y);
fclose(fp);
}
【选项】
(33)
程序运行时,输入2012输出___(33)__。
[A]x=20,y=20[B]x=20,y=12[C]x=12,y=20[D]x=12,y=12
(34)
程序运行时,输入1035输出___(34)__。
[A]x=45,y=45[B]x=10,y=10[C]x=10,y=35[D]x=35,y=35
(35)
程序运行时,输入1212输出___(35)__。
[A]x=24,y=24[B]x=12,y=12[C]x=24,y=12[D]x=12,y=24
四、
程序设计题(本题共30分,每小题10分)
(1)编写程序,要求从键盘上输入一个数给x,计算并输出分段函数y的值。
x+10100≤x≤10
5x-3x<0
提示:
平方根函数为:
sqrt(),指数函数为:
exp(),正切函数为:
tan(),正弦函数为:
sin(),所有这些函数在math.h头文件中。
(2)从键盘输入一个正整数n,编写程序计算1/1!
+1/2!
+1/3!
+……+1/n!
的值并输出结果,要求定义和调用函数fact(n)计算n的阶乘。
(3)随机产生20个大于等于1小于等于100的数,并按从大到小排序。
请输出排序后的数,要求每行输出5个数。
浙江理工大学2005/2006下学期期末考试---C程序设计试题
参考答案与评分标准
一、单选题(本题共20分,每小题2分)
题号
1
2
3
4
5
6
7
8
9
10
答案
B
C
C
B
C
A
C
D
A
A
二、程序填空题(本题共30分,每小题2分)
题号
11
12
13
14
15
16
17
18
19
20
答案
B
C
B
C
A
B
C
A
B
C
题号
21
22
23
24
25
答案
B
D
A
C
C
三、程序阅读题(本题共20分,每小题2分)
题号
26
27
28
29
30
31
32
33
34
35
答案
B
C
A
C
D
B
C
A
C
D
四、编程题(本题共30分,每小题10分)
1、
#include
#include
voidmain(){
floatx,y;
scanf("%f",&x);
if(x>10)y=x+10;
elseif(x>=0)y=(sqrt(5*x)+exp(x))/(x+1);
elsey=tan(x)*sin(x);
printf("y=%f\n",y);
}
2、
#include
floatfact(intn){
floatt=1.0;inti=1;
while(i<=n)
t=t*i++;
return(t);
}
voidmain(){
intn,i;floatsum=1.0;
scanf("%d",&n);
for(i=2;i<=n;i++)
sum=sum+1.0/fact(i);
printf("%f\n",sum);
}
3、
#include
#include
voidmain(){
inti,j,n=0,temp,x[20];
srand(time(NULL));
printf("原始数据:
\n");
for(i=0;i<=19;i++){
x[i]=rand()%100+1;//产生20个随机数
if(i%5==0)printf("\n");
printf("%-6d",x[i]);
}
printf("\n");
for(i=0;i<19;i++){//从大到小排序
for(j=0;j<19-i;j++)
if(x[j]temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
printf("排序后数据:
\n");
for(i=0;i<20;i++){
if(i%5==0)printf("\n");
printf("%-6d",x[i]);
}
printf("\n");
}