C++实验答案.docx

上传人:b****1 文档编号:1278574 上传时间:2023-04-30 格式:DOCX 页数:30 大小:23.71KB
下载 相关 举报
C++实验答案.docx_第1页
第1页 / 共30页
C++实验答案.docx_第2页
第2页 / 共30页
C++实验答案.docx_第3页
第3页 / 共30页
C++实验答案.docx_第4页
第4页 / 共30页
C++实验答案.docx_第5页
第5页 / 共30页
C++实验答案.docx_第6页
第6页 / 共30页
C++实验答案.docx_第7页
第7页 / 共30页
C++实验答案.docx_第8页
第8页 / 共30页
C++实验答案.docx_第9页
第9页 / 共30页
C++实验答案.docx_第10页
第10页 / 共30页
C++实验答案.docx_第11页
第11页 / 共30页
C++实验答案.docx_第12页
第12页 / 共30页
C++实验答案.docx_第13页
第13页 / 共30页
C++实验答案.docx_第14页
第14页 / 共30页
C++实验答案.docx_第15页
第15页 / 共30页
C++实验答案.docx_第16页
第16页 / 共30页
C++实验答案.docx_第17页
第17页 / 共30页
C++实验答案.docx_第18页
第18页 / 共30页
C++实验答案.docx_第19页
第19页 / 共30页
C++实验答案.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++实验答案.docx

《C++实验答案.docx》由会员分享,可在线阅读,更多相关《C++实验答案.docx(30页珍藏版)》请在冰点文库上搜索。

C++实验答案.docx

C++实验答案

实验编程题答案

实验一

1、输入日期的年份和月份,求该月有多少天。

提示:

对于月份为1、3、5、7、8、10、12的月份天数为31,月份为4、6、9、11的月份天数为30,月份为2时要结合年份考虑闰年的情况。

#include

usingnamespacestd;

intmain()

{

inty,m;

cin>>y>>m;

if(1900<=y&&y<3000&&0

{

if(y%4==0&&y%100!

=0||y%400==0)

{

switch(m)

{

case1:

cout<<"31";break;

case2:

cout<<"29";break;

case3:

cout<<"31";break;

case4:

cout<<"30";break;

case5:

cout<<"31";break;

case6:

cout<<"30";break;

case7:

cout<<"31";break;

case8:

cout<<"31";break;

case9:

cout<<"30";break;

case10:

cout<<"31";break;

case11:

cout<<"30";break;

case12:

cout<<"31";break;

}

}

else

{

switch(m)

{

case1:

cout<<"31";break;

case2:

cout<<"28";break;

case3:

cout<<"31";break;

case4:

cout<<"30";break;

case5:

cout<<"31";break;

case6:

cout<<"30";break;

case7:

cout<<"31";break;

case8:

cout<<"31";break;

case9:

cout<<"30";break;

case10:

cout<<"31";break;

case11:

cout<<"30";break;

case12:

cout<<"31";break;

}

}

}

else

cout<<"Inputerror!

";

return0;

}

2、某高校录取研究生的要求是,新生的每门课成绩不低于60分,总成绩不低于340分,370分以下为自费。

编一程序实现输入一个学生的四门课成绩,试判断该生为该校录取的情况(“没有录取”、“自费”、“公费”三种情况)。

#include

usingnamespacestd;

intmain()

{

inta,b,c,d,s;

cin>>a>>b>>c>>d;

s=a+b+c+d;

if(a>=60&&b>=60&&c>=60&&d>=60&&s>=340)

{

if(s>=370)cout<<"公费"<

elsecout<<"自费"<

}

elsecout<<"没有录取"<

return0;

}

3、

在华农校园里,没有自行车,上课办事会很不方便。

但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。

假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。

请判断走不同的距离去办事,是骑车快还是走路快。

#include

usingnamespacestd;

intmain()

{

doubletb,tw,s;

cin>>s;

tb=s/3+50;

tw=s/1.2;

if(tb>tw)cout<<"Walk"<

else

if(tb

elsecout<<"All"<

return0;

}

4、

一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:

如果输入为3.6小时,则费用为5+(3.6-3)*2=6.2元。

最高收费为40元。

假设任何车辆的停车时间都不超过24小时。

编写程序,计算每辆车的停车费。

【提示】

要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式:

cout<

(2)<

按上面的形式控制输出格式时,需在源程序最开始加上一行:

#include

#include

#include

usingnamespacestd;

intmain()

{

doublet,cost;

cin>>t;

if(t<=3)cout<<"5.00"<

else

if(t<=20.5)

{

cost=(t-3)*2+5;

cout<

(2)<

}

elsecout<<"40.00"<

return0;

}

5、

模拟计算器的功能,能根据用户输入的两个运算数和运算符(’+’、‘-’、‘*’或‘/’),对两个数进行相应的运算,输出运算结果。

注意:

除法运算‘/’的除数不能为0。

#include

usingnamespacestd;

intmain()

{

doublea,b,n;

charc;

cin>>a>>b>>c;

if(c=='/'&&b==0)cout<<"除数为0!

"<

else

if(c!

='+'&&c!

='-'&&c!

='*'&&c!

='/')cout<<"运算符号错误!

";

else

if(c=='+')

{

n=a+b;

cout<

}

if(c=='-')

{

n=a-b;

cout<

}

if(c=='*')

{

n=a*b;

cout<

}

if(c=='/')

{

n=a/b;

cout<

}

return0;

}

实验二

1、

给定一个正整数a,以及另外的5个正整数,问题是:

这5个整数中,小于a的整数的和是多少?

#include

usingnamespacestd;

intmain()

{inta,b,c,d,e,f,x=0;

cin>>a>>b>>c>>d>>e>>f;

if(a<=100)

if(b

if(c

if(d

if(e

if(f

cout<

return0;

}

2

一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。

编程计算气球在第5次落地时,共经过多少米?

第5次反弹多高?

#include

usingnamespacestd;

intmain()

{

inth0;

doubles,h;

cin>>h0;

h=h0/32.0;

s=h0+2*(h0/2.0+h0/4.0+h0/8.0+h0/16.0);

cout<

return0;

}

3

有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,....求这个分数序列的前n项之和。

#include

#include

usingnamespacestd;

intmain()

{

doublei,n,x,y,z;

doubles;

cin>>n;

x=2;y=1;s=2;

for(i=1;i

{

z=x;x=y+z;y=z;s=s+x/y;

}

cout<

return0;

}

4

在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。

写一个程序,判断给定的多个点是否在这个正方形内。

#include

usingnamespacestd;

voidmain()

{

floatx,y;

for(;;)

{

cin>>x>>y;

if(x==0&&y==0)

{

cout<<"yes"<

break;

}

if(x<=1&&x>=-1&&y<=1&&y>=-1)

cout<<"yes"<

else

cout<<"no"<

}

}

5

一辆卡车违反交通规则,撞人后逃跑。

现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。

甲说:

牌照的前两位数字是相同的;乙说:

牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:

四位的车号所构成的数字正好等于某一个整数的平方。

请根据以上线索求出车号。

#include

usingnamespacestd;

#include

voidmain()

{inta,b,c,d,m,n;

for(a=0;a<10;a++)

{for(b=0;b<10;b++)

{for(c=0;c<10;c++)

{for(d=0;d<10;d++)

{if(a==b&&c==d)

{m=a*1000+b*100+c*10+d;

{for(n=32;n<100;n++)

if(n*n==m)

cout<

{

}

}

}

}

}

}

}

}

实验三

1

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。

苹果成熟的时候,陶陶就会跑去摘苹果。

陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。

假设她碰到苹果,苹果就会掉下来。

#include

usingnamespacestd;

intmain()

{

inta[100];

intm,sum=0;

for(inti=1;i<=10;i++)

cin>>a[i];

cin>>m;

for(i=1;i<=10;i++)

{

if(m>=a[i]||(m=a[i]))

sum=sum+1;

}

cout<

return0;

}

2

歌唱大赛选手成绩这样计算:

去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后得分。

现假设共有6位评委,都是按百分制打分,请编程计算选手的成绩。

提示:

将6个评分存入score数组中。

关键是求出其中的最大值max(即最高分)和最小值min(即最低分)。

#include

usingnamespacestd;

intmain()

{

doublescore[100];

doublem=0;

doubleg=0;

for(inti=1;i<=6;i++)

cin>>score[i];

doublebig=score[1];

doublesmall=score[1];

for(intj=1;j<=6;j++)

{

if(score[j]>big)

big=score[j];

}

for(intk=1;k<=6;k++)

{

if(score[k]

small=score[k];

}

for(intn=1;n<=6;n++)

g+=score[n];

m=(g-big-small)/4;

cout<

return0;

}

3

插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。

例如,对于明文:

China,在间隔为1的位置依次插入一个字母而形成密文:

Coheifnia。

因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。

请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。

提示:

定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。

解密过程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符(’\0’之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。

#include

usingnamespacestd;

intmain()

{

charci[100];

charpl[100];

intm=0;

cin.getline(ci,100);

for(inti=0;ci[i]!

='\0';i++)

{

if(i%2==0)

{

pl[m]=ci[i];

m=m+1;

}

}

pl[m]='\0';

cout<

return0;

}

4

输入一个长度小于20的不含空格的字符串,然后对该字符串做如下处理:

对字符串中的每个字符,如果是大写字母,将其转化为小写;如果是小写字母,将其转化为大写,最后将处理后的字符串输出。

要求用指针对字符串进行处理。

#include

usingnamespacestd;

intmain()

{

chars[21],*p;

cin>>s;

p=s;

while(*p)

{

if(*p>='a'&&*p<='z')

*p=*p-32;

else

if(*p>='A'&&*p<='Z')

*p=*p+32;

p++;

}

cout<

return0;

}

5

在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。

注意:

数组中的第一个数(下标为0)只要和第二个数(下标为1)不相等,第一个数(下标为0)就是极值点;同理,数组中的最后一个数只要和倒数第二个数不相等,最后一个数也是极值点。

#include

usingnamespacestd;

voidmain()

{

intn;

cin>>n;

cout<

int*p=newint[n];

intj=0;

for(inti=0;i

cin>>p[i];

while(j

{

if(n>=2&&j==0&&p[0]!

=p[1])

cout<<"0"<<''<

if(j!

=n-1&&j!

=0)

{

if((p[j]>p[j+1]&&p[j]>p[j-1])||(p[j]

cout<

}

if(j==n-1&&p[n-1]!

=p[n-2])

cout<

j++;

}

delete[]p;

}

实验四

1

判断正整数n是否为完数。

已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。

此程序要求编写函数boolwanshu(intn),判断n是否为完数,若n是,则函数返回true;否则返回false。

然后主函数通过该函数的返回值,在屏幕上输出判断结果。

#include

usingnamespacestd;

intnumber(int);

intmain()

{

intn;

cin>>n;

intresult=number(n);

if(result==-1)

cout<<"no"<

else

cout<<"yes"<

return0;

}

intnumber(inta)

{

inttotal=0,re=0;

for(inti=0;i

{

total+=i;

if(a==total)

{

re=a;

break;

}

else

re=-1;

}

returnre;

}

2

假定现在已是2012年,请编写程序,计算2012年伦敦奥运会倒计时的天数并输出。

已知伦敦奥运会的开幕日期是2012年7月27日。

用户输入日期的范围必须是2012年1月1日—2012年7月26日。

要求程序中编写函数intCountDown(intyear,intmonth,intday),来计算从用户输入的日期year-month-day到伦敦奥运会开幕日之间的倒数天数。

提示:

所求天数=month这个月的总天数-day+(month+1到6月所有这些月份天数之和)+27。

#include

usingnamespacestd;

intmain()

{

inty,m,d,x;

cin>>y>>m>>d;

if(y!

=2012||(m>7||m==0)||(m==7&&d>27))

cout<

";

elseif(m==7)

{

x=27-d;

cout<

";

}

else

{

switch(m)

{

case1:

x=31-d+29+31+30+31+30+27;break;

case2:

x=29-d+31+30+31+30+27;break;

case3:

x=31-d+30+31+30+27;break;

case4:

x=30-d+31+30+27;break;

case5:

x=31-d+30+27;break;

case6:

x=30-d+27;break;

}

cout<

";

}

return0;

}

3

许多英语单词无论是顺读还是倒读,其词形完全一样,都是同一个单词,如dad(爸爸)、noon(中午)、level(水平)等,这样的词称为回文词。

在最权威的《牛津英语大词典》里,最长的回文词是tattarrattat,是个象声词,表示敲门的声音。

英语的回文句更有趣味(忽略其中的标点符号)。

最著名的一句为:

“Madam,I’mAdam.”(小姐,我是亚当。

)据说,这是亚当在伊甸园里初见夏娃作自我介绍时说的话。

现要求编写一个函数boolhuiwen(char*p),判断输入的一个单词是否为回文词。

p是指向要输入的字符串的指针,如果是返回true,否则返回false。

#include

usingnamespacestd;

boolhuiwen(char*p)

{

char*q=p+strlen(p)-1;

for(inti=0;i

if(*p!

=*q)

returnfalse;

returntrue;

}

voidmain()

{

charch[100];

cin>>ch;

if(huiwen(ch))

cout<<"yes";

else

cout<<"no";

cin.get();

cin.get();

}

4

编写一个函数,用于生成一个由若干个指定字符构成的字符串,其原型为:

voidmystr(charc,intn,char*p);其中,参数c是构造字符串的字符,n是字符串中字符的个数,p是生成的字符串的首地址。

要求:

编写主函数,在主函数中进行字符和字符个数的输入,然后再调用mystr函数生成字符串,最后在主函数中将生成的字符串输出。

#include

usingnamespacestd;

voidmystr(charc,intn,char*p)

{

for(inti=1;i<=n;i++)

cout<

return;

}

intmain()

{

charc;

char*p;

p=&c;

intn;

cin>>c;

cin>>n;

mystr(c,n,p);

return0;

}

5

有一个有趣的古典数学问题:

有一对兔子,从出生后第3个月起每个月都生1对兔子,小兔子长到第3个月后每个月又生1对兔子。

假设所有兔子都不死,问每个月兔子的总对数为多少?

提示:

不满1个月的为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。

每对老兔子每个月会生1对小兔子。

因此,每个月的兔子总数依次为1,1,2,3,5,8,13,…。

这就是Fibonacci数列。

该数列的递归定义如下:

f(n)=1(n等于1或2);f(n)=f(n-1)+f(n-2)(n>2)

请编写递归函数intfib(intn),求出第n个月兔子的总对数。

#include

usingnamespacestd;

voidfib(ints)

{

intd=1,f=1,sum=0,n=1,t=0;

while(n

{

n++;

t=f;

f=d;

d+=t;

sum=d+f;

}

cout<<"第"<

}

intmain()

{

ints;

cin>>s;

if(s!

=1)

fib(s);

else

cout<<"第1个月兔子的总对数为1"<

return0;

}

实验五

1

仿照本次实验预习的程序填空题1,将以上Distance函数定义为类piont的友元函数,实现程序的功能。

并在主函数中增加输入两点

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2