![]() |
||
|
Major Member
![]() 加入日期: Jul 2004
文章: 292
|
引用:
老實說,你貼的這源碼能編譯得過都很難.....而且邏輯上有誤。但你貼的源碼根本編譯不過,所以我沒辦法指出你錯在哪。 不過有個很明顯的地方,如果 a>b is true那下一步比較 b>a 根本無意義,因為你已經把 a 指派給 b 了。 後面的源碼殘缺不全小弟就不多說了。 現在給你一個c++的解答,因為我是學c++的,c的語法不熟(有了cout跟cin,誰還想用scanf跟printf),你自己代換。 cin 用 scanf 代換,cout 用 printf 代換。 源碼如下 ////////////////////////////////////////////// int test1,test2,test3; cout << "請輸入整數,若輸入0則程式結束" << endl; cin >> test1; while(test1){ cout << "請輸入第二個整數" << endl; cin >> test2 ; test3 = test1 > test2 ? test1 : test2; cout << "最大為" << test3 ; test3 = test1 < test2 ? test1 : test2; cout << "次大為" << test3 << endl; cout << "請輸入整數,若輸入0則程式結束" << endl; cin >> test1; } //////////////////////////// 如果你想把這個程式拿去編譯,記得main的前面要加上 #include <iostream> #include <string> 這個程式已經在我的visual c++ .net上確認執行正確無誤,負數也可比較。參考一下吧。 要是想比較不只兩個整數,那就麻煩一點。 |
||||||||
|
|
|
Major Member
![]() 加入日期: Jul 2004
文章: 292
|
喔,等等,你要的就是不只比較兩個數字對吧?那我再修改一下,等等。
|
||
|
|
|
Major Member
![]() 加入日期: Dec 2002 您的住址: 謎
文章: 265
|
我想演算法類似這樣吧•••
代碼:
output("enter a number (!=0)");
input(max1) ;
if (max1==0) {
output("we need two numbers at least!!!");
abort();
}
output("enter a number (!=0)");
input(max2) ;
if (max2==0) {
output("we need two numbers at least!!!");
abort();
}
if (max2>max1) swap(max1, max2);
while (true) {
output("enter a number (0 to quit)");
input(n);
if (n==0) break;
if (n>max1) {
max2=max1;
max1=n;
} else if (n>max2) {
max2=n;
}
}
output(max1,max2);
|
|
|
|
Regular Member
![]() ![]() 加入日期: Oct 2004 您的住址: 虛擬的世界
文章: 66
|
可以了耶!!!感謝啦!!!只要再稍微修改一下就行了
|
|
|
|
Major Member
![]() 加入日期: Jul 2004
文章: 292
|
引用:
恭喜,小弟我本來寫的跟8:5兄差不多,後來想說試試看能不能整段程式碼全部塞進while裡面....,結果發現太久沒摸c++(三個月了),現在快要成功了。 等等我就把全部塞進while的程式碼貼出來。 |
|
|
|
|
Regular Member
![]() ![]() 加入日期: Oct 2004 您的住址: 虛擬的世界
文章: 66
|
引用:
那位老兄寫的是無法判斷負數的,如果這位大哥可以再加上比較負數就更好了 ![]() |
|
|
|
|
Major Member
![]() 加入日期: Sep 2004
文章: 124
|
引用:
那我寫的有什麼地方不正確嗎?(除了輸入零個跟一個數字不會說最少要兩個數字外) 因為我原本寫的也是用 cin 跟 cout,換成 scanf 跟 printf 後並無去檢查.....
__________________
どうしてこうなった(′・ω・`) |
|
|
|
|
Regular Member
![]() ![]() 加入日期: Oct 2004 您的住址: 虛擬的世界
文章: 66
|
引用:
你的執行後次大值變成0,8:5寫的是輸入負號時最大值變0,次大值變成原本該顯示在最大值的值!!! ![]() |
|
|
|
|
Major Member
![]() 加入日期: Dec 2002 您的住址: 謎
文章: 265
|
引用:
看起來像是把結束的 0 也拿進去比較了。 如果您把 代碼:
while (true) {
AAA
if (n==0) break;
BBB
}
改成 代碼:
while (n!=0) {
AAA
BBB
}
就會有這樣的結果••• (n=0 之後的 BBB 會變成多執行的•••) |
|
|
|
|
Major Member
![]() 加入日期: Jul 2004
文章: 292
|
等等...有bug.............
此文章於 2004-10-29 12:31 AM 被 flowofsoul 編輯. |
|
|