[問題] inverse,副函式寫法

看板C_and_CPP作者 (被找麻煩了...)時間13年前 (2010/10/23 19:50), 編輯推噓1(1014)
留言15則, 3人參與, 最新討論串1/1
先貼上我的程式 int inverse(int x)//inverse的副函式 { int invNum=0; while(x>0) { invNum=x%10; cout << invNum; x/=10; } } int main() { int num=0,a=0; cout << "Input a num between 1000~9999:"; cin >> num; while(num>999 && num<10000) { a=inverse(num); cout << a << endl; break; } system("PAUSE"); } 程式目的是輸入1234,輸出4321,請問各位板友 為什麼我compile出來都會補0呢?(eg.輸入1234,輸出會是43210) 請幫我看看我的程式有哪邊需要修改的>"< 謝謝大家^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.120.0.67

10/23 19:52, , 1F
因為你沒有return
10/23 19:52, 1F

10/23 20:00, , 2F
請問是要改在哪呢?謝謝^^
10/23 20:00, 2F

10/23 20:00, , 3F
cout << invNum; <這行輸出4321
10/23 20:00, 3F

10/23 20:00, , 4F
cout << a << endl; 這行輸出0
10/23 20:00, 4F

10/23 20:02, , 5F
while + break 不失為取代if的好寫法
10/23 20:02, 5F

10/23 20:03, , 6F
那請問我是不該用a=inverse(num)嗎?我以為這樣比較好~
10/23 20:03, 6F

10/23 20:05, , 7F
好像不對耶...跑出來結果不是我要的QQ
10/23 20:05, 7F

10/23 20:05, , 8F
a最後都會變成0,假如是return x;
10/23 20:05, 8F

10/23 20:07, , 9F
是要在哪邊補return x呢?如果在副函式裡,結果是一樣的阿~
10/23 20:07, 9F

10/23 20:11, , 10F

10/23 20:14, , 11F
謝謝你 我又學到東西了>///<
10/23 20:14, 11F

10/23 20:17, , 12F
我以前從沒想過拿while+break來取代if
10/23 20:17, 12F

10/23 20:17, , 13F
以後可以拿來誤導別人
10/23 20:17, 13F

10/23 20:57, , 14F
誤導別人....是這樣寫法比較不好嗎Q"Q?
10/23 20:57, 14F

10/24 05:07, , 15F
呃 你的while的下一圈什麼時候會跑?
10/24 05:07, 15F
那個...我只是在練習用while作條件判斷^^"" 原本的主程式是寫 int main() { int num=0,a; do { cout << "Input a num between 1000~9999:"; cin >> num; } while(num<999 || num>10000); a=inverse(num); cout << a << endl; system("PAUSE"); } 目的是輸入錯誤的話就會一直重新輸入~ 只是因為副程式一直沒寫好,所以在練習while後就乾脆用break跳出= ="" 很呆的理由... ※ 編輯: silia 來自: 221.120.2.155 (10/24 06:50)
文章代碼(AID): #1CmimTfa (C_and_CPP)