1C语言A卷答案课案.docx
《1C语言A卷答案课案.docx》由会员分享,可在线阅读,更多相关《1C语言A卷答案课案.docx(13页珍藏版)》请在冰豆网上搜索。
1C语言A卷答案课案
A卷
2013—2014学年第1学期
《计算机程序设计C(2-1)》期末考试试卷
专业班级
姓名
学号
开课系室计算机应用技术系
考试日期2014年1月10日
题号
一
二
三
总分
得分
阅卷人
一、程序阅读题(每空2分,共20分)
1.若想通过以下输入语句给a赋值1,给b赋值2,则输入数据的形式应该是【1】。
scanf("%d,%d",&a,&b);
1,2
2.如果a和b的值分别为20和10,下列语句printf("%d+%d=%d",a,b,a+b);输出到屏幕上的结果是【2】。
20+10=30
3.下面程序的输出结果为【3】。
#include
intmain()
{
intx=10,y=3;
printf("%d\n",x/y);3
return0;
}
4.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【4】。
10
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
5.水仙花数是指一个三位数的各位数字的立方和是这个数本身,请阅读下面程序并完成填空。
#include
intfun(intn)
{
inti,j,k,m;
m=n;
【5】k=0;
while(m)
{
【6】j=m%10;
m=m/10;
k=k+j*j*j;
}
if(k==n)
return1【7】;
else
return0;
}
intmain()
{
inti;
for(i=100;i<1000;i++)
{
if(fun(i)【8】==1)
{
printf("%disok!
\n",i);
}
}
return0;
}
6.程序功能是:
从键盘输入一行字符,将其中的所有数字字符转换为按先后顺序排列的一个整数。
例如,输入的一行字符为“a2b0D04”,输入结果为整数2004,请补充完整程序。
#include
intmain()
{
intn=0;
charch;
ch=getchar();
while(ch!
='\n')
{
if(ch>=’0’&&ch<=’9’【9】)
{
n=n*10+ch-'0';
}
ch=getchar();
}
printf("value=%d\n",n);
return0;
}
7.有以下程序
#include
intsub(intn)
{
return(n/10+n%10);
}
intmain()
{
intx,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
return0;
}
若运行时输入:
1234<回车>,程序的输出结果是【10】10。
二、程序改错题(每处错误2分,共20分,请修改并且只能修改/************found************/的下一行)
1.下面这段代码是让计算机计算a和b的积。
#include
/**********found【1】**********/
intmian()intmain()
{
/**********found【2】**********/
inta,b,c;floata,b,c;
scanf("%f%f",&a,&b);
c=a*b;
/**********found【3】**********/
printf("%F\n",c);printf(“%f\n”,c);
return0;
}
2.下面这段代码求m和n的最大公约数。
#include
intmain()
{
intm,n,r;
/**********found【4】**********/
scanf("%d%d",m,n);scanf(“%d%d”,&m,&n);
do{
/**********found【5】**********/
r=m/n;r=m%n;
m=n;
n=r;
/**********found【6】**********/
}while(r==0);r!
=0
/**********found【7】**********/
printf("最大公约数是:
%d\n",r);printf("最大公约数是:
%d\n",n);
return0;
}
3.下面这段代码是用来求1+1/1+1/2+1/3+…+1/n。
#include
/**********found【8】**********/
intFun(intn)floatFun(intn)
{
inti;
/**********found【9】**********/
doublesum=0.0;floatsum=0.0;
for(i=1;i<=n;i++)
{
/**********found【10】**********/
sum=sum+1/i;sum=sum+1.0/i;
}
returnsum;
}
intmain()
{
intn;
scanf("%d",&n);
printf("1+1/1+1/2+1/3+...+1/n=%f\n",Fun(n));
return0;
}
三、程序设计题(每题10分,共60分)
1.小明A+B
小明今年3岁了,现在他已经能够认识100以内的非负整数,并且能够进行100以内的非负整数的加法计算。
对于大于等于100的整数,小明仅保留该数的最后两位进行计算。
如果计算结果大于等于100,那么小明也仅保留计算结果的最后两位。
例如,对于小明来说:
1)1234和34是相等的。
2)35+80=15。
现给定非负整数A和B,你的任务是代表小明计算出A+B的值。
输入
一行,包含两个非负整数A和B(A和B均在int类型可表示的范围内)。
输出
输出小明A+B的结果。
样例输入
3580
样例输出
15
#include
intmain()
{
inta,b;
scanf("%d%d",&a,&b);
printf("%d\n",(a+b)%100);
return0;
}
2.星期几
输入今天是星期几的序号(星期天的序号为0),输出明天是星期几的英文单词。
周日到周六的英文表示:
Sun,Mon,Tue,Wed,Thu,Fri,Sat
输入
一个整数(0-6)
输出
所表示的英文
样例输入
0
样例输出
Mon
#include
intmain()
{
inta;
scanf("%d",&a);
switch(a)
{
case0:
printf("Mon\n");
break;
case1:
printf("Tue\n");
break;
case2:
printf("Wed\n");
break;
case3:
printf("Thu\n");
break;
case4:
printf("Fri\n");
break;
case5:
printf("Sat\n");
break;
case6:
printf("Sun\n");
break;
}
return0;
}
3.ASCII
SinceallweknowtheASCIIcode,yourjobissimple:
inputnumbersandoutputcorrespondingmessages.
Input
ThefirstlinecontainsoneintegerT(1<=T<=1000).
TheinputwillcontainTpositiveintegersseparatedbywhitespaces.
Theintegerswillbenolessthan32.
Output
Outputthecorrespondingmessageinjustoneline.
Warning:
noextracharactersareallowed.
SampleInput
19
87101108991111091013211611132656777326710811798
SampleOutput
WelcometoACMClub
Hint
Character
ASCIIcode
A
65
a
97
Whitespace
32
#include
intmain()
{
inta,b,i;
scanf("%d",&a);
for(i=0;i{
scanf("%d",&b);
printf("%c",b);
}
return0;
}
4.数校庆纪念品
六十载弦歌不辍,一甲子薪火相传。
2013年10月,中国石油大学迎来了60周年华诞。
校庆期间对每位荣归母校的校友都将提供一份完全立方体包装的纪念品,志愿者将其堆放在墙角,具体堆放形状如下图所示:
因为纪念品堆得实在是太有规律了,你只要知道它的层数就可以计算所有纪念品的数量了。
输入
输入数据只有一个整数n,表示这堆纪念品的层数(1<=n<=100)。
输出
一个整数,表示这堆纪念品的总数量。
样例输入
5
样例输出
35
#include
intmain()
{
inti,n,t,sum;
scanf("%d",&n);
sum=0;
t=0;
for(i=1;i<=n;i++)
{
t=t+i;
sum=sum+t;
}
printf("%d\n",sum);
return0;
}
5.电梯
正在建设的工科楼E座将会成为校内最高建筑,假设该建筑内只有一个电梯。
现在有一个由N个正整数组成的请求列表,每个数字表明了电梯将依次停留的楼层顺序。
电梯每上行1层将花费6秒,下行1层将花费4秒。
电梯在每一层停留一次,将花费5秒。
对于一个给定的请求列表,请计算出按照顺序途径每一层楼所花费的总时间。
电梯一开始停留在第0层,并且在完成请求队列之后不需要返回地面(第0层)。
输入
输入共2行。
第一行为一个正整数N,表示请求队列中需要经过的楼层数目;第二行为N个正整数,表示电梯依次经过的楼层数,每个数都少于30。