《C++课程设计》word版.doc_第1页
《C++课程设计》word版.doc_第2页
《C++课程设计》word版.doc_第3页
《C++课程设计》word版.doc_第4页
《C++课程设计》word版.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

编程题:1. 编程求出下列分段函数值,其中x的值从键盘输入。x10分析:开始x5输入xx=10y=sqrt(2*x*x+1)y=exp(x)-2y=x-10输出y结束这是一个分段函数,属于多分支问题,可以用if的嵌套语句解决。流程图:YNYN源程序:#include#includeusing namespace std;int main()double x,y;coutx;if(x=-5)y=sqrt(2*x*x+1);elseif(x=10)y=exp(x)-2;else y=x-10coutf(x)=y2sum+sum+=daysum=0sum=31sum=334breakbreakbreak输入错误default1112month开始breakyear%400=0|(year%4=0&year%100!=0)i=1i=0流程图:源程序:#includeusing namespace std;int main()coutyear;coutmonth;coutday;switch(month) case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:cout输入错误2)sum+;cout这是这一年的第sum天endl;return 0;运行结果:3、运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下: s250km 没有折扣 250s500 2折扣 500s1000 5折扣 1000s2000 8折扣 2000s3000 10折扣3000s 15折扣用switch结构实现。分析:设每公里每吨货物的基本运费为p(price的缩写),货物重为w(wright的缩写),距离为,折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为 f = p * w * s * (1 - d)算法设计要点: 为使用switch语句,必须将距离s与折扣d的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是250的整数倍,如果将距离s整除250,则当:s250km 对应0; 250s500 对应1; 500s1000 对应2,3; 1000s2000 对应4,5,6,7; 2000s3000 对应8,9,10,11;3000s 对应12流程图:开始输入p,w,sswitch(s/250)case 0d=0breakcase 1d=0.02breakcase 11d=0.10breakdefaultd=0.15break输出df=p*w*s*(1-d)输出f结束源程序:#includeusing namespace std;int main()int s;double f,p,w,d;coutp;coutw;couts;switch(s/250)case 0:d=0;break; case 1:d=0.02;break;case 2:d=0.05;break;case 3:d=0.05;break;case 4:d=0.08;break;case 5:d=0.08;break;case 6:d=0.08;break;case 7:d=0.08;break;case 8:d=0.10;break; case 9:d=0.10;break; case 10:d=0.10;break;case 11:d=0.10;break;default:d=0.15;break; f=p*w*s*(1-d);cout总运费为:fendl;return 0;运行结果: 4.有一数列:2/1, 4/3, 6/7, 8/13, 10/21 ,12/31,编写程序,求出这个数列的前500项之和。分析:观察这个数列得出,每项的分母是前一项的分子分母的和,分子式这一项的分母加前一项的分子。由此,可以确定该数列的完成可以用for语句构成的循环体。sum结束a=f2/f1;sum+=a;f1+=f2;f2+=f1;开始int i,f1=1,f2=2;double a,sum=0;for(i=0;i=500;i+)流程图:源程序:#includeusing namespace std;int main()int i,f1=1,f2=2;double a,sum=0;for(i=1;i=500;i+)a=f2/f1;sum+=a;f1+=f2;f2+=f1;cout数列的前500项之和为:sumendl;return 0;运行结果5.输入一个正整数n,求分析:该题是求一个数列的和,项数由n控制,根据每项的结构,可以用for语句来达成该数列求和的运算。流程图:开始int i,n,a,sumfor(i=1;i=n;i+)a=pow(i,i);sum+=a;sum=?结束源程序:#include#includeusing namespace std;int main()int n,i,a,sum=0;coutn;for(i=1;i=n;i+)a=pow(i,i);sum+=a;coutsum=sumendl;return 0;运行结果6.输入一个长整数,从高位开始逐位分割并输出。例如输入123456,逐位输出1,2,3,4,5,6.分析:该题是要单个输出一个长整数中每一位上的数字,并在中间加逗号隔开,其关键在于,先要使用swith循环语句逐步用10对输入的数字求余,然后达到输出每一位数的效果,在最后输出的时候用输出控制符,显示出逗号。num10p*=10;/=10;p=1d=num/p;num=num%p;p/=10;d结束流程图:FTfalseturnfalseturn源程序:#includeusing namespace std;int main()int d;long num,t,p;coutnum;if(num10)p*=10;t/=10;while(p=1)d=num/p;num=num%p;p/=10; coutd,; coutnendl;return 0;运行结果:7.编写计算下列表达式的程序:s=2+(2+4)+(2+4+6)+(2+4+6+8)+(2+4+6+n) 这里设n=20。算法分析:整体是一求和计算,运用累加法。其中n为整型偶数。先是一个单个的等差数列即a=2+(n-1)*2,对其求和得到一个新的数列,再对新的数列求和得到s;经过推断可以确定用for语句来到达题目的要求。流程图:开始s=0;sum=0;i=1n=2*i;sum+=n;s+=sum;s=?i=1;i=10;i+结束源程序:#include using namespace std; int main() int i,s=0,sum=0,n; for(i=1;i=10;i+)n=2*i;sum+=n;s+=sum; couts=sendl; return 0; 运行结果:总结: 在写程序是需要理清楚每个变量之间的函数关系,特别注意在循环体中i是小于等于10的。8.从键盘输入10个整数,然后根据提示选择输入A或者D,如果输入为A,将这10个数按从小到大的顺序输出;如果输入为D,将这10个数按从大到小的顺序输出。分析:因为是输入10个还不确定的整数,所以可以肯定该题要用到数组的算法;然后因为要选择“A”或“B”来选择不同的语句输出,所以要用到选择体结构;由于是排序输出,可以调用函数用冒泡法来输出。流程:1、先是两个用到冒泡法的调用函数,都是for语句的(以由小到大为例):int b,int n;int i=1,j=1;j=n-1ibi+1t=bi;bi=bi+1;bi+1=t;j+;i+;FTFTFT这是一个调用函数,其名称为fun;另外一个调用函数inv与之原理相同,不过其判断条件为if(ciAcinB调用inv()调用fun()源程序:#includeusing namespace std;void fun(int b,int n) /输入A时,由小到大的排列int i,j,t;for(j=1;j=n-1;j+)for(i=1;ibi+1)t=bi;bi=bi+1;bi+1=t;return;void inv(int c,int m) /输入B时,由大到小的排列int i,j,p;for(j=1;j=m-1;j+)for(i=1;i=m-1-j;i+)if(cici+1)p=ci;ci=ci+1;ci+1=p;return;int main() /主函数int a11;c

温馨提示

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

评论

0/150

提交评论