C++补作业(分数)得了2个0分

来源:互联网 发布:js的闭包是什么 编辑:程序博客网 时间:2024/06/03 03:00

一、问题及代码

/** 文件名称:Ex4-2.cpp  * 作    者:周世豪* 完成日期:2017 年 5月 8 日  * 版 本 号:cb v1.25.0* 对任务及求解方法的描述部分: * 输入描述:无  * 问题描述: 用类和对象实现分数的表达* 程序输出:略* 问题分析:略 * 算法设计:略  */#include <iostream>using namespace std;int nu,de,n;class CFraction{private:    int nume;  //分子    int deno;  //分母public:    CFraction(int,int);  //构造函数,初始化用    void set(int,int);            //置值,改变值用    void input();           //按照nu/dede的形式输入    void simplify();               //化简    void amplify(int n);           //放大n倍,如2/3放大5倍为10/3    void output(int style);       //style=1,化简     style=2,输出带分数   style=3,输出小数};CFraction::CFraction(int nu=0,int de=1){    nume=nu;    deno=de;}void CFraction::set(int nu,int de){    nume=nu;    deno=de;}void CFraction::input(){    cout<<"请输入分子和分母"<<endl;    cin>>nu>>de;}void CFraction::simplify()            //化简{    int i,min,k=1;    nu=nume;    de=deno;//重新赋值    min=(nu<=de)?nu:de;    for(i=1;i<=min;i++)        if(nu%i==0&&de%i==0)        {            k*=i;        }    nu/=k;    de/=k;}void CFraction::amplify(int n)//放大{    int b=n;    cin>>b;    cout<<nume*b<<"/"<<deno*b<<endl;}void CFraction::output(int style){    switch(style)    {        case 0:break;        case 1:simplify();break;        default:break;    }    cout<<nu<<"/"<<de<<endl;    if(style==2)    {        amplify(n);    }    else if(style==3)    {        float a=nu;        float b=de;        cout<<"="<<a/b<<endl;    }}int main(){    int i,n;    while(1)    {        CFraction CF(nu,de);        CF.input();        CF.set(nu,de);        cout<<"选择输出形式: 0原型输出 1化简  2扩大 3输出小数"<<endl;        cin>>i;        switch(i)        {            case 0:CF.output(0);break;            case 1:CF.output(1);break;            case 2:                cout<<"请输入扩大倍数:\t"<<endl;                cin>>n;                CF.output(2);                break;            case 3:CF.output(3);break;        }    }    return 0;}

二、运行结果


三、心得体会

汉字乱码了,程序其实还能用(仅限自己)。不知道怎么改

类和对象还是觉得有难度

四、知识点总结

类和对象

0 0
原创粉丝点击