第六周项目一-分数类的雏形
来源:互联网 发布:windows phone刷机特点 编辑:程序博客网 时间:2024/06/07 00:54
问题及代码:
/**烟台大学计算机学院*文件名称:xiangmu1.cpp*作 者:闫安*完成日期:2016年4月15日*版 本 号:codeblocks 16.01**问题描述:设计一个简单的分数类,完成对分数的几种运算。*程序输出:*程序输入:*/#include<iostream>#include<Cmath>#include<cstdlib>using namespace std;int fac(int b,int a);class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void set(int nu=0,int de=1); //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void simplify(); //化简(使分子分母没有公因子) void amplify(int n); //放大n倍,如2/3放大5倍为10/3 void output(int style=0); //输出:以8/6为例,style为0时,原样输出8/6; //style为1时,输出化简后形式4/3; //style为2时,输出1(1/3)形式,表示一又三分之一; //style为3时,用小数形式输出,如1.3333; //默认方式0};CFraction::CFraction(int nu,int de){ if (de!=0) { nume=nu; deno=de; } else { cerr<<"初始化中发生错误,程序退出\n"; exit(0); }}void CFraction::set(int nu,int de){ if (de!=0) { nume=nu; deno=de; }}void CFraction::simplify(){ int y; y=fac(nume,deno); if(y!=0) { nume=nume/y; deno=deno/y; }}void CFraction::amplify(int n){ nume=n*nume;}void CFraction::input(){ char c; cout<<"请输入分数,形如m/n:"; cin>>nume>>c>>deno;}void CFraction::output(int style){ char c='/'; switch(style) { case 0: cout<<"原样:"<<nume<<c<<deno<<endl; break; case 1: int b; b=fac(nume,deno); cout<<"化简后:"<<(nume/b)<<c<<(deno/b)<<endl; break; case 2: int a,d,nu; a=nume/deno; nu=nume%deno; d=fac(nume,deno); cout<<"带分数形式:"<<a<<"("<<nu/d<<c<<deno/d<<")"<<endl; break; case 3: float shang; shang=1.0*nume/deno; cout<<"近似值:"<<shang<<endl; default: cout<<"默认原样:" <<nume<<c<<deno<<endl; }}int main(){ CFraction c1,c2(8,6); cout<<"关于c1: "<<endl; c1.output(0); cout<<"改变c1: "<<endl; //测试set函数 c1.set(2,7); c1.output(); cout<<"输入c1: "<<endl;//测试input函数 c1.input(); c1.output(0); cout<<"关于c2: "<<endl;//测试output函数 c2.output(0); c2.output(1); c2.output(2); c2.output(3); c2.output(); cout<<"将c2化简: "<<endl;//测试simplify函数 c2.simplify(); c2.output(0); cout<<"将c2放大倍: "<<endl;//测试amplify函数 c2.amplify(5); c2.output(0); c2.output(1); return 0;}int fac(int b,int a){if(b%a==0)return a; elsereturn fac(a,b%a);}
运行结果:
知识点总结:
巩固基于对象编程的方法
学习心得:
开始时,在定义CFraction(int nu,int de)时,错写成了CFraction(int nu=0,int de=1) 导致程序出现错误
0 0
- 第六周项目一 分数类的雏形
- 第六周项目一-分数类的雏形(1)
- 第六周项目一-分数类的雏形(2)
- 第六周项目一 分数类的雏形
- 第六周 项目一 分数类的雏形
- 第六周项目一-分数类的雏形
- 第六周项目-分数类的雏形
- 第六周项目1:分数的雏形
- 第六周项目1分数类的雏形
- 第六周项目1-分数类的雏形
- 第六周项目1-分数类的雏形
- 第六周项目1——分数类的雏形
- 第六周项目1==分数类的雏形
- 第六周【项目1-分数类的雏形】
- 第六周项目1—分数类的雏形
- 第六周 项目1-分数类的雏形
- 第六周项目1-分数类的雏形
- 第六周项目1-分数类的雏形
- 数组做数据成员
- IntelliJ Idea 常用快捷键列表
- 在html属性中使用xsl变量
- c++上机实验四——分数的累积求和
- Qt在槽里面弹出模态和非模态对话框
- 第六周项目一-分数类的雏形
- 友元类
- 第七周项目1-友员类
- git pull更新错误解决办法
- SVN使用总结
- Fragment生命周期
- Eclipse+CDT使用个人经验
- javaScript面试题大全
- spring框架学习(二)依赖注入