程序设计C作业三有答案.docx
- 文档编号:15263916
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:25
- 大小:50.45KB
程序设计C作业三有答案.docx
《程序设计C作业三有答案.docx》由会员分享,可在线阅读,更多相关《程序设计C作业三有答案.docx(25页珍藏版)》请在冰点文库上搜索。
程序设计C作业三有答案
第3次作业答案(红字为答案)
1.下列叙述中错误的是()
A.对于double类型数组,不可直接用数组名对数组进行整体输入或输出
B.数组名代表数组所占存储区的首地址,其值不可变
C.在程序执行过程中,当数组元素下标超出定义的下标范围时,系统将给出“下标”越界的错误提示
D.可以通过赋初值的方式确定数组元素个数
提示:
请从数组下标的合法取值范围来考虑。
2.已有定义chara[]=“xyz”,b[]={‘x’,‘y’,‘z’},以下叙述正确的是()
A.数组a和b的长度相同B.数组a的长度小于数组b的长度
C.数组a的长度大于数组b的长度D.上述说法均不正确
提示:
此题考察字符数组长度和字符串长度之间的关系。
3.以下能正确定义一维数组的选项是()
A.intnum[];B.#defineN100intnum[N]
C.intnum[0..100];D.intN=100;intnum[N];
提示:
此题考察一维数组的维数界定问题。
4.下列程序的输出结果是()
#include
voidmain()
{
chara[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘\0’};
inti,j;
i=sizeof(a);j=strlen(a);
printf(“%d,%d\n”,i,j);
}
A.9,9B.8,9C.1,8D.9,8
提示:
此题考察字符数组长度和字符串长度之间的关系。
5.以下不能正确定义二维数组的选项是()
A.inta[2][]={{1,2},{3,4}};B.inta[][2]={1,2,3,4};
C.inta[2][2]={{1},{2}};D.inta[2][2]={{1},2,3};
提示:
此题考察二维数组初始化的规定。
6、C语言规定,若未对函数返回类型加以说明,则函数的隐含类型为()
A.voidB.doubleC.intD.char
分析:
教材中有答案,但我们不推荐大家在编程时省略函数返回类型。
7、若已定义的函数有返回值,则以下关于该函数调用的叙述错误的是()
A.函数调用可以作为独立语句存在
B.函数调用可以作为一个函数的实参
C.函数调用可以出现在表达式中
D.函数调用可以作为左值而被赋值
分析:
基本概念题,可查书或上机验证。
8、下列说法中错误的是()
A.在不同的函数中可以使用相同名字的变量
B.函数中的形参是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数的复合语句中定义的变量只在本函数范围内有效
分析:
基本概念题。
考察变量的作用域和生命期。
9、下列说法中正确的是()
A.定义函数时,形参的类型说明可以放在函数体内
B.return后面的值不能为表达式
C.如果函数值类型与return后的返回值类型不一致,则以函数值类型为准
D.如果形参与实参的类型不一致,则以实参类型为准
分析:
基本概念题,可查书或上机验证。
10、阅读下列程序段,其执行结果为()
#include
voidfun(inta)
{
intx=5;
x+=a++;
printf(“%d,”,x);
}
voidmain()
{
inta=3,x=1;
fun(a);
x+=a++;
printf(“%d\n”,x);
}
A.8,2B.8,3C.8,4D.8,5
分析:
考察大家对传值调用和传址调用的理解。
11、阅读下列程序段,其执行结果为()
#include
voidmain()
{
inta=4,b=6,c=7;
doubled;
doublefun(int,int,int);
printf(“d=%lf\n”,fun(a,b,c));
}
doublefun(inta,intb,intc)
{
returna%b*c;
}
A.27B.27.000000C.28
分析:
可上机验证,留意一下函数声明的方式,以及输出语句中对函数返回值的处理。
12、下列说法中不正确的是()
A.C语言规定,不能在一个函数的内部再定义函数
B.在没有声明函数返回值类型的情况下,默认函数返回值类型为int型
C.函数的类型可以是整型、实型、字符型,但不能是指针类型
D.函数可以没有形参,但函数名后的括号不能省略
分析:
基本概念题。
13、一个变量的指针就是()
A.变量的名称B.变量的地址C.变量的类型D.变量的值
分析:
基本概念题。
14.两个指针变量不能()
A.相加B.相减C.比较D.指向同一地址
分析:
基本概念题。
查书或上机验证。
15.在C语言中,对变量的访问方式是()
A.能直接访问,也能间接访问B.能直接访问,不能间接访问
C.不能直接访问,能间接访问D.直接、间接均不能
分析:
基本概念题。
16.C语句:
int(*pa)[5];中,pa表示的是一个()
A.指针数组的名称
B.指向整型变量的指针
C.指向包含5个整型元素的一维数组的指针
D.指向函数的指针
分析:
基本概念题。
17.C语句int*func();中,func表示的是()
A.返回值为指针的函数名称
B.指向整型变量的指针
C.指向数组的指针
D.指向函数的指针
分析:
基本概念题。
18.给定下列程序,假定从键盘输入数据1、2,则执行结果为()
#include
voidswap(int*p1,intp2)
{
*p1=*p1+p2;
p2=p2+*p1;
}
voidmain()
{
inta,b,*p1;
scanf("%d,%d",&a,&b);
p1=&a;
swap(p1,b);
printf("a=%d,b=%d\n",a,b);
}
A.3,5B.a=3,b=5C.3,2D.a=3,b=2
分析:
考察传值与传址的区别。
19.给定下列程序,则运行结果为()
#include
voidfun(intx,inty,int*z)
{
*z=x–y;
}
voidmain()
{
inta,b,c;
fun(11,5,&a);
fun(8,a,&b);
fun(a,b,&c);
printf(“%d,%d,%d\n”,a,b,c);
}
A.2,4,6B.2,6,4C.6,2,4D.6,4,2
分析:
传址与传值。
20.给定下列程序,则其运行结果为()
#include
voidmain()
{
staticintarray[][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
int(*p)[4],i,j,sum[3];
p=array;
for(i=0;i<3;i++)
{
sum[i]=0;
for(j=0;j<4;j++)
sum[i]+=*(*(p+i)+j);
printf(“%d,”,sum[i]);
}
}
A.16,48,80B.164880C.144D.80
分析:
考察用指针变量遍历二维数组的方法。
重点在理解,否则考试时不可能有机会上机验证。
《计算机程序设计C》
期末考试样卷
专业班级
姓名
学号
开课系室计算机应用技术系
考试日期年月日
题号
一
二
三
总分
得分
阅卷人
一、程序阅读题(每空2分,共20分)
1.若想通过以下输入语句给a赋值1,给b赋值2,则输入数据的形式应该是1,2。
scanf("%d,%d",&a,&b);
a和b的值分别为20和10,下列语句printf("%d+%d=%d",a,b,a+b);输出到屏幕上的结果是20+10=30。
程序的输出结果为3。
#include
intmain()
{
intx=10,y=3;
printf("%d\n",x/y);
return0;
}
4.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为10。
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
5.水仙花数是指一个三位数的各位数字的立方和是这个数本身,请阅读下面程序并完成填空。
#include
intfun(intn)
{
inti,j,k,m;
m=n;
k=0;
while(m)
{
j=m%10;
m=m/10;
k=k+j*j*j;
}
if(k==n)
return
(1);
else
return0;
}
intmain()
{
inti;
for(i=100;i<1000;i++)
{
if(fun(i)==1)
{
printf("%disok!
\n",i);
}
}
return0;
}
6.程序功能是:
从键盘输入一行字符,将其中的所有数字字符转换为按先后顺序排列的一个整数。
例如,输入的一行字符为“a2b0D04”,输入结果为整数2004,请补充完整程序。
#include
intmain()
{
intn=0;
charch;
ch=getchar();
while(ch!
='\n')
{
if(ch<=’10’&&ch>=’1’)
{
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。
二、程序改错题(每处错误2分,共20分,请修改并且只能修改/************found************/的下一行)
1.下面这段代码是让计算机计算a和b的积。
#include
/**********found【1】**********/
intmian()改intmain()
{
/**********found【2】**********/
inta,b,c;改doublea,b,c;
scanf("%lf%lf",&a,&b);
/**********found【3】**********/
printf("%F\n",c);改printf("%lf\n",c);
return0;
}
这段代码求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);改}while(r!
=0);
/**********found【7】**********/
printf("最大公约数是:
%d\n",r);改printf("最大公约数是:
%d\n",m);
return0;
}
3.下面这段代码是用来求1+1/1+1/2+1/3+…+1/n。
#include
/**********found【8】**********/
intFun(intn)改doubleFun(intn)
{
inti;
/**********found【9】**********/
doublesum=;改doublesum=;
for(i=1;i<=n;i++)
{
/**********found【10】**********/
sum=sum+1/(double)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
intmain()
{
inta,b;
scanf(“%d%d”,&a,&b);
a=a%100;
b=b%100;
c=(a+b)%100;
printf(“%d\n”,c);
return0;
}
2.星期几
输入今天是星期几的序号(星期天的序号为0),输出明天是星期几的英文单词。
周日到周六的英文表示:
Sun,Mon,Tue,Wed,Thu,Fri,Sat
输入
一个整数(0-6)
输出
所表示的英文
样例输入
0
样例输出
Mon
intmain()
{
intday;
scanf("%d",&day);
switch(day)
{
case0:
printf("Mon\n");
break;
case1:
printf("Tue\n");
break;
case2:
printf("Wed\n");
break;
case3:
printf("Tur\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
intmain()
{
intn,i,a;
charch;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
ch=a;
printf("%c",ch);
}
printf("\n");
}
4.数校庆纪念品
六十载弦歌不辍,一甲子薪火相传。
2013年10月,中国石油大学迎来了60周年华诞。
校庆期间对每位荣归母校的校友都将提供一份完全立方体包装的纪念品,志愿者将其堆放在墙角,具体堆放形状如下图所示:
因为纪念品堆得实在是太有规律了,你只要知道它的层数就可以计算所有纪念品的数量了。
输入
输入数据只有一个整数n,表示这堆纪念品的层数(1<=n<=100)。
输出
一个整数,表示这堆纪念品的总数量。
样例输入
5
样例输出
35
#include
main()
{
inti,n,p=0,q=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=p+i;
q=q+p;
}
printf("%d\n",q);
return0;
}
5.电梯
正在建设的工科楼E座将会成为校内最高建筑,假设该建筑内只有一个电梯。
现在有一个由N个正整数组成的请求列表,每个数字表明了电梯将依次停留的楼层顺序。
电梯每上行1层将花费6秒,下行1层将花费4秒。
电梯在每一层停留一次,将花费5秒。
对于一个给定的请求列表,请计算出按照顺序途径每一层楼所花费的总时间。
电梯一开始停留在第0层,并且在完成请求队列之后不需要返回地面(第0层)。
输入
输入共2行。
第一行为一个正整数N,表示请求队列中需要经过的楼层数目;第二行为N个正整数,表示电梯依次经过的楼层数,每个数都少于30。
输出
花费的总时间
样例输入
3
231
样例输出
41
#include
intmain()
{
inti,m,n,p=0,q=0;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d",&n);
if(n>p)
q=q+6*(n-p)+5;
else
q=q+4*(p-n)+5;
p=n;
}
printf("%d\n",q);
return0;
}
6.吃巧克力
2013年12月8日,ACM俱乐部的小武代表学校参加了在吉林大学举办的第38届ACM国际大学生程序设计竞赛现场赛,返校时带了一盒好吃又精美的巧克力给滨滨(盒内共有N块巧克力,20>N>0)。
小武告诉滨滨每天可以吃一块或者两块巧克力。
假设滨滨每天都吃巧克力,问滨滨共有多少种不同的吃完巧克力的方案。
例如:
如果N=1,则滨滨第1天就吃掉它,共有1种方案;
如果N=2,则滨滨可以第1天吃1块,第2天吃1块;也可以第1天吃2块,共有2种方案;
如果N=3,则滨滨第1天可以吃1块,剩2块;也可以第1天吃2块剩1块,共有2+1=3种方案;
如果N=4,则滨滨可以第1天吃1块,剩3块;也可以第1天吃2块,剩2块,共有3+2=5种方案。
输入
一个正整数N。
输出
滨滨吃巧克力的方案数目。
样例输入
4
样例输出
5
#include
/*在下面完成Func函数,答题纸上只需要写Func函数即可*/
intmain()
{
intn;
scanf("%d",&n);
printf("总共有%d种方案\n",Func(n));
return0;
}
#include
intFunc(intn)
{
if(n==1)return1;
elseif(n==2)return2;
elsereturn(Func(n-1)+Func(n-2));
}
答题页
得分
一、程序阅读题(每空2分,共20分)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
得分
二、程序改错题(每处2分,共20分)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
得分
三、程序设计题(每处10分,共60分)
1.2.
3.4.
5.6.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 作业 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)