




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c+课程设计报告 指导老师:花卫华姓名:刘世永班 级:113101-13学 号:20101001770中国地质大学(武汉)信息工程学院2010年12月实习题目一【需求规格说明】1、 输入一个正整数,要求输出比这个正整数小的所有素数。【算法设计】(1)设计思想:输入一个数m后,可以用一个bool变量prime来表示。再循环开始时设prime为真,若m被一整数整除,就表示m不是素数,此时bool变量prime的值变为假。最后根据prime是否为真,决定是否输出m。(2)设计表示:用for循环判断m是否为素数,用布尔变量prime记录并决定是否输出开始 输入a定义bool变量primek=int(sqrt(m)输出mm【调试报告】刚开始不知道素数的定义,不知道怎么下手。到后来,通过资料逐渐了解。【附录】#include#include#includeusing namespace std;int main int a,m,k,i,n=0;bool prime; /定义布尔变量primecouta;for(m=2;ma;m+) /判断m是否为素数,m由2变化到a小于a的素数,增量为1prime =true; /循环开始时设prime为真,即先认为m为素数k=int(sqrt(m); /用k代表m(1/2) for(i=2;i=k;i+) /此循环的作用是将m被2m(1/2)除,检查是否能整除 if(m%i=0) /如果能整除,表示m不是素数 prime=false; /使prime变为假 break; /终止执行此循环 if(prime=true) /如果m是素数coutmendl; /输出素数mreturn 0;【运行结果】输入一个正整数a=100 1 3 5 7 11 13 17 19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97press any key to continue实习题目二【需求规格说明】2、实现复数的乘法法运算。要求:(1)使用结构体表示复数(2)输入两个复数(3)复数的乘法运算采用*操作符重载。(4)输出结果的形式为:(a1+b1*i)* (a2+b2*i) = (a+b*i)的形式。【算法设计】(1)设计思想:先声明一个结构体类型,声明结构体变量fushu,输入复数进行运算。开始构造结构体,定义*操作符重载构造函数,引用结构体输入变量值,调用函数,实现输出结束【调试报告】结构体的运用太生疏【附录】#include stdafx.h#includeusing namespace std;struct pluralint real;int imag;const plural &operator *(plural a,plural b )/*将*符号重载,使之计算复数的乘法*/plural temp;temp.real=a.real*b.real-a.imag*b.imag; /复数实部temp.imag=a.imag*b.real+a.real*b.imag; /负数虚部return temp;int main()plural plu1,plu2,plu3;coutplu1.real;cinplu1.imag;if(plu1.real !=0)coutplu1.real+;coutplu1.imagiendl;coutplu2.real;cinplu2.imag;if(plu2.real !=0)coutplu2.real+;coutplu2.imagiendl;plu3=plu1*plu2;coutthe answer is ;if(plu3.real !=0)coutplu3.real+;coutplu3.imagiendl;【运行结果】please input the first plural 3+2iplease input the second plural 1+4ithe answer is -5+14ipress any key to continue实习题目三【需求规格说明】3、编写程序,输出两个正整数,要求计算并输出这两个数的最大公约数和最小公倍数。【算法设计】(1)设计思想:求解两个数x,y的最小公倍数思路为若x能够被y整除则x就是这两个数的最小公倍数,否则判断x的整数倍是否能被y整除,直到x的某个倍数可以被y整除,则该数即为这两个数的最小公倍数最大公约数思路为用两个数中较大的数作为被除数,较小的数作为除数,如果能够整除则较小的数就是这两个数的最大公约数,否则,将较小的数作为新的被除数,将两个数的模作为除数,重复以上工作直到模为0,则这个除数就是x和y的最大公约数。开始构造函数,利用辗转相除法判断最大重载主函数中,调用该函数,输入变量值判断最大公约数与最小公倍数结束【调试报告】编程时不熟练,技巧性不强#include stdafx.h#includeusing namespace std;int main()int i,x,y,c,z; /定义变量i,x,y,c,zcout请输入两个数xy;xy?z=y:z=x /求两者之中的最小值for(i=z;i0;i-); /将i赋初值x,自减量为1if(x%i=0) /计算最大公约数 if(y%i=0) cout最大公约数iendl; break; /结束循环 c=y*(x/i); /辗转相除法cout最小公倍数为c0,方程有两个不同的实根,分别是: (2)如果b2 -4ac 1000#pragma once#endif / _msc_ver 1000class fangcheng /定义一个方程类public:fangcheng(double a,double b,double c);virtual fangcheng();double x1();double x2();private:double m_a;double m_b;double m_c;#include stdafx.h#include fangcheng.h#includefangcheng:fangcheng(double a,double b,double c) m_a=a;m_b=b;m_c=c;fangcheng:fangcheng()double fangcheng:x1()double m_x1;m_x1=(-m_b+sqrt(m_b*m_b-4*m_a*m_c)/(2*m_a); /方程解的求解公式return m_x1;double fangcheng:x2()double m_x2;m_x2=(-m_b-sqrt(m_b*m_b-4*m_a*m_c)/(2*m_a);return m_x2;#include stdafx.h#include#includefangcheng.husing namespace std;int main()int a,b,c;cout請輸入a b c的值a; /输入参数cinb;cinc;if(b*b-4*a*c=0) /有实数解fangcheng zhi(a,b,c);/定义一个类,并将参数值传入函数当中cout “.x1=”zhi.x1()endl;cout“.x2=”zhi.x2()endl;if(b*b-4*a*c0) /无实数解 fangcheng zhi(a,b,c);coutzhi.x1()*iendl;coutzhi.x2()*iendl; return 0;#endif / !defined(afx_fangcheng_h_028ed53e_68a4_49【运行结果】请输入a,b,c的值1 2 1x1=-1x2=-2实习题目五【需求规格说明】设计程序, 完成两个矩阵的乘法运算。问题描述:要实现矩阵的乘法,其关键就在于矩阵的内存的开辟以及乘法运算的实现问题分析:利用malloc函数或者new实现。【算法设计】(1) 设计思想利用两个双指针分别申请两个二维数组的空间,代表需要计算的两个矩阵,然后用户分别输入第一个矩阵的行和列,第二个矩阵的列数(其行数等于第一个矩阵的列数);然后利用for循环逐个输入第一第二个矩阵的数据,再构造一个双指针代表结果的矩阵,根据矩阵乘法的运算规律,求出结果并输出。(2)设计表示:(,具体内容:子模块(过程或函数)的规格说明、关系图(描述类与类之间的关系图、各功能模块之间的关系图等)。)【调试报告】问题的关键在于申请内存的操作,这里有两种方法可实现这个问题,一种是利用new,通过new数组的行数和列数所占的内存来实现。另一种是利用malloc函数,其大致用法和new差不多。【附录】源程序(利用malloc函数):#include#include/*malloc函数的函数头*/#includeusing namespace std;int main()int m,n,g;int i,j,k;cout请输入第一个矩阵的行数和列数mn;cout请输入第二个矩阵的列数(其行数和第一个矩阵的列数相等)g;double *a;a=(double*)malloc(m*sizeof(double*);/*这句是动态定义二维数组的行数。*/for(i=0;im;i+)ai=(double*)malloc(g*sizeof(double);/*这句是动态定义二维数组的列数。*/cout请输入第一个矩阵的元素endl;for(i=0;im;i+)for(j=0;jaij;double *b;b=(double*)malloc(g*sizeof(double *);/*同上*/for(i=0;ig;i+)bi=(double*)malloc(n*sizeof(double);/*同上*/cout请输入第二个矩阵的元素endl;for(i=0;ig;i+)for(j=0;jbij;double *result;/*存放计算结果的二维数组*/result=(double*)malloc(m*sizeof(double*);for(i=0;im;i+)resulti=(double*)malloc(n*sizeof(double);for(i=0;im;i+)for(j=0;jn;j+)resultij=0;/*初始化为0*/for(i=0;im;i+)/*完成矩阵的乘法运算*/for(j=0;jn;j+)for(k=0;kg;k+)resultij+=aik*bkj;cout结果是endl;for(i=0;im;i+)for(j=0;jn;j+)coutresultij ;if(j=n-1)coutendl; return 0;源程序(利用new):#includeusing namespace std;int main()int m,n,g;int i,j,k;coutmn;coutg;double* a;a=new double*m;for( i=0; im; +i)ai = new doublen;double* b;b=new double*n;for( i=0; in; +i)bi = new doubleg;cout请输入第一个矩阵的元素endl;for(i=0;im;i+)for(j=0;jaij;cout请输入第二个矩阵的元素endl;for(i=0;in;i+)for(j=0;jbij;double* result;result=new double*m;for( i=0; im; +i)resulti = new doublem;for(i=0;im;i+)for(j=0;jg;j+)resultij=0;for(i=0;im;i+)/*完成矩阵的乘法运算*/for(j=0;jn;j+) for(k=0;kg;k+)resultij+=aik*bkj;for(i=0;im;i+)for(j=0;jg;j+)coutresultij ;if(j=g-1)cout=n,用m除以n,求得余数q。若q为0,则m为最大公约数;若q不等于0,则进行如下迭代:m=n,n=q,即原除数变为新的被除数,原余数变为新的除数重复算法,直到余数为0为止。余数为0时的除数n,即为原始m、n的最大公约数。学会了这个方法。第三个学会了利用结构体输出和操作符重载。要实现操作符重载就要使用操作符重载函数,操作符重载函数用关键字operator实现,其形式为:返回类型 operator 操作符 (参数列表)。操作符重载函数是一个函数,只不过这个函数的函数名为opera
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年保健食品计划试题及答案
- 2025年验船师考试(C级船舶检验专业实务)测试题及答案一
- 2025年注册验船师资格考试(C级船舶检验法律法规)经典试题及答案二
- 2025年环境科学与可持续发展考试试题及答案
- 北京市门头沟区2024-2025学年八年级上学期期末考试英语试题及答案
- 北京市门头沟区2023-2024学年九年级上学期期末质量监测语文试题及答案
- 2025年英语四六级考试作文范文与技巧解析
- 校长建议课件
- 2025年殡仪馆服务流程优化与管理模拟题及解析
- 2025年招聘考试宝典从模拟题看项目经理的必-备知识
- 业财融合与价值创造课件
- 长沙市名校小升初分班考试数学试卷(含答案)
- 肺动脉栓塞护理查房
- 农村房地产转让合同协议
- 拉链专业工艺讲解
- 2025版抵押贷款抵押物抵押权登记及变更手续协议模板
- 《死亡医学证明(推断)书》培训试题(附答案)
- 护理核心制度2025年
- 华文版二年级上册-写字-书法
- 慢性根尖周炎病例分析
- 2025年初中学业水平考试生物试卷(附答案)
评论
0/150
提交评论