<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                收到一位同學的求助信,解決的是[http://blog.csdn.net/sxhelijian/article/details/8737365](http://blog.csdn.net/sxhelijian/article/details/8737365)中的問題。她的程序如下: ~~~ #include <iostream> using namespace std; class CFraction {private: int nume; // 分子 int deno; // 分母 public: void input(); //按照"nu/de"的格式,如"5/2"的形式輸入 void simplify(); //化簡(使分子分母沒有公因子) void amplify(int n); //放大n倍,如2/3放大5倍為10/3 void output(int style); //輸出:以8/6為例,style為0時,原樣輸出8/6; //style為1時,輸出化簡后形式4/3; //style為2時,輸出1(1/3)形式,表示一又三分之一; //style為3時,用小數形式輸出,如1.3333; //不給出參數和非1、2,認為是方式0 }; //主函數 int main() { CFraction c; c.input(); c.simplify(); c.amplify(3); c.output(1); c.output(2); c.output(3); c.output(0); return 0; } //按照"nu/de"的格式,如"5/2"的形式輸入 void CFraction::input() { char c; cout<<"請輸入分數的值:"<<endl; while(1) { cin>>nume>>c>>deno; if(c!='/') cout<<"格式不正確,請重新輸入!"<<endl; else break; } } //化簡(使分子分母沒有公因子) void CFraction::simplify() { int num1,num2,temp; int x,y; num1=nume; num2=deno; if(num1<num2) //找出較大的值 { temp=num1; num1=num2; num2=temp; } x=nume; y=deno; while(y>0) { temp=x%y; x=y; y=temp; }; num1=num1/x; num2=num2/y; cout<<num1<<'/'<<num2<<endl; } //放大n倍,如2/3放大5倍為10/3 void CFraction::amplify(int n) { int num1,num2; num1=nume*n; num2=deno*n; cout<<num1<<'/'<<num2<<endl; } //輸出:以8/6為例,style為0時,原樣輸出8/6;為1時,輸出化簡后形式4/3;為2時,輸出1(1/3)形式,表示一又三分之一;為3時,用小數形式輸出,如1.3333; //不給出參數和非1、2,認為是方式0 void CFraction::output(int style) { if(style==1) { int num1,num2,temp; int x,y; num1=nume; num2=deno; if(num1<num2) //找出較大的值 { temp=num1; num1=num2; num2=temp; } x=nume; y=deno; while(y>0) { temp=x%y; x=y; y=temp; }; num1=num1/x; num2=num2/y; cout<<num1<<'/'<<num2<<endl; } else { if(style==2) { int a,b,c=0; a=nume; b=deno; while(a>=b) { a=a-b; c++; } if(a==0) cout<<c<<endl; else cout<<c<<'('<<a<<'/'<<b<<')'<<endl; } if(style==3) { double c; c=nume/deno; cout<<c<<endl; } else cout<<nume<<'/'<<deno<<endl; } } ~~~ 她的問題是:編譯,鏈接都沒錯,但不能運行??? 嘗試運行,輸入后,運行出錯。初步判斷,調用CFraction::input()沒有出問題,CFraction::simplify()的嫌疑很大。 輸入分子、分母,單步跟蹤進CFraction::simplify(),幾步之后,真相出現了。見圖: ![](https://box.kancloud.cn/2016-06-07_5756404836a58.png) 階數為0。 這個程序在算法設計上有問題,請自行再去考慮。需要提醒的是,單步調試,可以學會。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看