C++实验答案.doc_第1页
C++实验答案.doc_第2页
C++实验答案.doc_第3页
C++实验答案.doc_第4页
C++实验答案.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验编程题答案实验一1、 输入日期的年份和月份,求该月有多少天。提示:对于月份为1、3、5、7、8、10、12的月份天数为31,月份为4、6、9、11的月份天数为30,月份为2时要结合年份考虑闰年的情况。 #includeusing namespace std;int main()int y,m;cinym; if(1900=y&y3000&0m&m13) if(y%4=0&y%100!=0|y%400=0) switch(m)case 1:cout31;break;case 2:cout29;break;case 3:cout31;break;case 4:cout30;break;case 5:cout31;break;case 6:cout30;break;case 7:cout31;break;case 8:cout31;break;case 9:cout30;break;case 10:cout31;break;case 11:cout30;break;case 12:cout31;break;elseswitch(m)case 1:cout31;break;case 2:cout28;break;case 3:cout31;break;case 4:cout30;break;case 5:cout31;break;case 6:cout30;break;case 7:cout31;break;case 8:cout31;break;case 9:cout30;break;case 10:cout31;break;case 11:cout30;break;case 12:cout31;break; else coutInput error!;return 0;2、某高校录取研究生的要求是,新生的每门课成绩不低于60分,总成绩不低于340分,370分以下为自费。编一程序实现输入一个学生的四门课成绩,试判断该生为该校录取的情况(“没有录取”、“自费”、“公费”三种情况)。 #includeusing namespace std;int main()int a,b,c,d,s;cinabcd;s=a+b+c+d;if(a=60&b=60&c=60&d=60&s=340)if(s=370) cout公费endl;else cout自费endl;else cout没有录取endl;return 0;3、在华农校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。 #includeusing namespace std;int main()double tb,tw,s;cins;tb=s/3+50;tw=s/1.2;if(tbtw) coutWalkendl;elseif(tbtw) coutBikeendl;else coutAllendl;return 0;4、一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:如果输入为3.6小时,则费用为5 + (3.6-3)*2 = 6.2 元。最高收费为40元。假设任何车辆的停车时间都不超过24小时。编写程序,计算每辆车的停车费。【提示】 要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式:coutfixedsetprecision(2)costendl;按上面的形式控制输出格式时,需在源程序最开始加上一行:#include。 #include#includeusing namespace std;int main()double t,cost;cint;if(t=3) cout5.00endl;elseif(t=20.5)cost=(t-3)*2+5;coutfixedsetprecision(2)costendl;else cout40.00endl;return 0;5、模拟计算器的功能,能根据用户输入的两个运算数和运算符(+、 -、 * 或/ ),对两个数进行相应的运算,输出运算结果。注意:除法运算/ 的除数不能为0。 #includeusing namespace std;int main()double a,b,n;char c;cinabc;if(c=/&b=0) cout除数为0!endl;elseif(c!=+&c!=-&c!=*&c!=/) cout运算符号错误!; elseif(c=+)n=a+b;coutnendl; if(c=-) n=a-b; coutnendl; if(c=*) n=a*b; coutnendl; if(c=/) n=a/b; coutnendl;return 0;实验二1、给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少? #includeusing namespace std;int main() int a,b,c,d,e,f,x=0; cinabcdef; if(a=100) if(ba) x=x+b; if(ca) x=x+c; if(da) x=x+d; if(ea) x=x+e; if(fa) x=x+f; coutendlxendl; return 0;2一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第5次落地时,共经过多少米? 第5次反弹多高? #includeusing namespace std;int main() int h0; double s,h; cinh0;h=h0/32.0;s=h0+2*(h0/2.0+h0/4.0+h0/8.0+h0/16.0);couts hendl;return 0;3有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,. 求这个分数序列的前n项之和。 #include#includeusing namespace std;int main()double i,n,x,y,z;double s;cinn;x=2;y=1;s=2;for(i=1;in;i=i+)z=x;x=y+z;y=z;s=s+x/y;coutfixedsetprecision(4)sendl;return 0;4在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断给定的多个点是否在这个正方形内。#includeusing namespace std;void main() float x,y; for( ; ; ) cinxy; if(x=0&y=0) coutyesendl; break; if(x=-1&y=-1) coutyesendl; else coutnoendl; 5一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号所构成的数字正好等于某一个整数的平方。请根据以上线索求出车号。 #include using namespace std;#include void main()int a,b,c,d,m,n;for(a=0;a10;a+)for(b=0;b10;b+)for(c=0;c10;c+)for(d=0;d10;d+)if(a=b&c=d)m=a*1000+b*100+c*10+d;for(n=32;n100;n+)if(n*n=m)coutmendl;实验三1陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 #include using namespace std; int main() int a100; int m,sum=0; for(int i=1;iai; cinm; for(i=1;i=ai|(m=ai) sum=sum+1;coutsumendl;return 0;2歌唱大赛选手成绩这样计算:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后得分。现假设共有6位评委,都是按百分制打分,请编程计算选手的成绩。 提示:将6个评分存入score数组中。关键是求出其中的最大值max(即最高分)和最小值min(即最低分)。 #include using namespace std; int main() double score100; double m=0; double g=0; for(int i=1;iscorei; double big=score1; double small=score1; for(int j=1;jbig) big=scorej; for(int k=1;k=6;k+) if(scoreksmall) small=scorek; for(int n=1;n=6;n+) g+=scoren; m=(g-big-small)/4; coutmendl; return 0; 3插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。例如,对于明文:China,在间隔为1的位置依次插入一个字母而形成密文:Coheifnia。因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。提示:定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。解密过程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符(0之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。 #include using namespace std; int main() char ci100; char pl100; int m=0; cin.getline(ci,100); for(int i=0;cii!=0;i+) if(i%2=0) plm=cii; m=m+1; plm=0; coutplendl; return 0;4输入一个长度小于20的不含空格的字符串,然后对该字符串做如下处理:对字符串中的每个字符,如果是大写字母,将其转化为小写;如果是小写字母,将其转化为大写,最后将处理后的字符串输出。 要求用指针对字符串进行处理。 #includeusing namespace std;int main()char s21,*p;cins;p=s;while(*p)if(*p=a&*p=A&*p=Z) *p=*p+32;p+;coutsendl;return 0;5在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。注意:数组中的第一个数(下标为0)只要和第二个数(下标为1)不相等,第一个数(下标为0)就是极值点;同理,数组中的最后一个数只要和倒数第二个数不相等,最后一个数也是极值点。 #includeusing namespace std;void main() int n; cinn; coutendl; int*p=new intn; int j=0; for(int i=0;ipi; while(j=2&j=0&p0!=p1) cout0 pj+1&pjpj-1)|(pjpj+1&pjpj-1) coutj endl; if(j=n-1&pn-1!=pn-2) coutn-1 endl; j+; delete p; 实验四1判断正整数n是否为完数。已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。此程序要求编写函数bool wanshu(int n),判断n是否为完数,若n是,则函数返回true;否则返回false。然后主函数通过该函数的返回值,在屏幕上输出判断结果。 #include using namespace std;int number (int);int main() int n; cinn; int result=number(n); if(result=-1) coutnoendl; else coutyesendl; return 0;int number (int a) int total=0,re=0; for(int i=0;ia;i+) total+=i; if(a=total) re=a; break; else re=-1; return re;2假定现在已是2012年,请编写程序,计算2012年伦敦奥运会倒计时的天数并输出。已知伦敦奥运会的开幕日期是2012年7月27日。用户输入日期的范围必须是2012年1月1日 2012年7月26日。要求程序中编写函数int CountDown(int year,int month,int day),来计算从用户输入的日期year-month-day到伦敦奥运会开幕日之间的倒数天数。 提示:所求天数= month这个月的总天数day+(month+1到6月所有这些月份天数之和)+27。 #includeusing namespace std;int main()int y,m,d,x;cinymd;if(y!=2012|(m7|m=0)|(m=7&d27)coutendlERROR!;else if(m=7)x=27-d;coutendl距离2012伦敦奥运会还有x天。;else switch(m)case 1:x=31-d+29+31+30+31+30+27;break;case 2:x=29-d+31+30+31+30+27;break;case 3:x=31-d+30+31+30+27;break;case 4:x=30-d+31+30+27;break;case 5:x=31-d+30+27;break;case 6:x=30-d+27;break;coutendl距离2012伦敦奥运会还有x天。;return 0;3许多英语单词无论是顺读还是倒读,其词形完全一样,都是同一个单词,如dad(爸爸)、noon(中午)、level(水平)等,这样的词称为回文词。在最权威的牛津英语大词典里,最长的回文词是tattarrattat,是个象声词,表示敲门的声音。英语的回文句更有趣味(忽略其中的标点符号)。最著名的一句为:“Madam,Im Adam.”(小姐,我是亚当。)据说,这是亚当在伊甸园里初见夏娃作自我介绍时说的话。现要求编写一个函数bool huiwen(char *p),判断输入的一个单词是否为回文词。p是指向要输入的字符串的指针,如果是返回true,否则返回false。 #includeusing namespace std;bool huiwen(char *p)char *q=p+strlen(p)-1;for(int i=0;ich;if(huiwen(ch)coutyes;elsecoutno;cin.get();cin.get(); 4编写一个函数,用于生成一个由若干个指定字符构成的字符串,其原型为:void mystr(char c,int n, char *p);其中,参数c是构造字符串的字符,n是字符串中字符的个数,p是生成的字符串的首地址。要求:编写主函数,在主函数中进行字符和字符个数的输入,然后再调用mystr函数生成字符串,最后在主函数中将生成的字符串输出。 #includeusing namespace std;void mystr(char c,int n,char *p)for(int i=1;i=n;i+)coutcc;cinn; mystr(c,n,p);return 0;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) (n2)请编写递归函数int fib(int n),求出第n个月兔子的总对数。 #include using namespace std;void fib(int s) int d=1,f=1,sum=0,n=1,t=0; while(ns) n+;t=f; f=d; d+=t; sum=d+f; cout第s个月兔子的总对数为sum-ds; if(s!=1)fib(s);elsecout第1个月兔子的总对数为1endl;return 0; 实验五1仿照本次实验预习的程序填空题1,将以上Distance函数定义为类piont的友元函数,实现程序的功能。并在主函数中增加输入两点作为友元函数的实参。#include#includeusing namespace std;class pointpublic: point(float a,float b) x=a; y=b; friend float Distance(point p1,point p2) float dx=p1.x-p2.x; float dy=p1.y-p2.y; return (float)sqrt(dx*dx+dy*dy);private: float x,y;int main() float p1_x,p1_y,p2_x,p2_y;/输入四个点cinp1_xp1_yp2_xp2_y;point p1(p1_x,p1_y),p2(p2_x,p2_y);coutDistance(p1,p2)endl; return 0;2根据以下主函数的功能来设计日期类CDateInfo,使其能正确运行。类CDateInfo中应该具有描述年、月、日的三个数据成员和相应的成员函数。 #include using namespace std;class CDateInfo int year,month,day; public:CDateInfo(); CDateInfo(int y,int m,int d) year=y,month=m,day=d; void SetDate(int y,int m,int d); void GetDate();void CDateInfo:SetDate(int y=2011,int m=10,int d=10)year=y;month=m;day=d;void CDateInfo:GetDate()coutyear- month- dayymd; /输入年月日值data1.SetDate(y,m,d); /设置data1的年月日为y,m,ddata1.GetDate(); /按year-month-day的格式显示data1的年月日data2.GetDate(); /按year-month-day的格式显示data2的年月日return 0;3根据以下主函数的功能来设计日期类Student,使其能正确运行。类Student中应该具有描述学生姓名、性别、年龄的三个数据成员和相应的成员函数。 #include#includeusing namespace std;class Studentchar chOne100;int iSex;int iOld;public: void SetName(char *name); void SetGender(int sex); void SetAge(int age) iOld=age; int GetAge()return iOld; int GetGender()return iSex; void GetName(char *name);void Student:SetName(char *name)strcpy(chOne,name);void Student:SetGender(int sex) iSex=sex;void Student:GetName(char *name) strcpy(chOne,name);int main()Student Zhang_San; /创建Student类对象Zhang_Sanchar*chOne;int iSex;unsigned iOld;chOne=new char11; /创建动态字符数组用来存放姓名,指针chOne指向该数组cinchOne; /输入姓名,存放在chOne所指向的动态字符数组中ciniSex; /输入性别,输入1表示性别为“男”,输入0表示性别为“女”ciniOld; /输入年龄Zhang_San.SetName(chOne); /用输入的姓名设置对象Zhang_San用来表示姓名的数据成员Zhang_San.SetGender(iSex); /设置对象Zhang_San用来表示性别的数据成员Zhang_San.SetAge(iOld); /设置对象Zhang_San用来表示年龄的数据成员coutendl;Zhang_San.GetName(chOne); /调用GetName(char *)成员函数将对象Zhang_San表示姓名的数据成员值/存放到chOne所指向的动态字符数组中coutZhang_Sans name is chOneendl; /显示姓名coutZhang_Sans gender is Zhang_San.GetGender()endl; /显示性别:1(男),0(女)coutZhang_Sans age is Zhang_San.GetAge()endl; /显示年龄delete chOne;return 0;4根据以下主函数的功能来设计计算器类Calculator,使其能正确运行。类Calculator中应该具有描述运算数的a和b及其表示a和b运算结果的三个数据成员和相应计算并显示结果的成员函数。 #includeusing namespace st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论