PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

  回應
 
主題工具
flowofsoul
Major Member
 
flowofsoul的大頭照
 

加入日期: Jul 2004
文章: 292
引用:
作者jackyepson
我是寫這樣子的!!!這真的是作業,我也有問我們老師,可是講的不是很明白!!! 喔......對了也要可以比較負數才行!!!
.....
if(a>b)
b=a;
if(b>a)
if(a>c)
c=a;
}
printf("輸入中最大者和次大者依序是:%d和%d\n",(signed)b,(signed)c);
}


老實說,你貼的這源碼能編譯得過都很難.....而且邏輯上有誤。但你貼的源碼根本編譯不過,所以我沒辦法指出你錯在哪。

不過有個很明顯的地方,如果 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上確認執行正確無誤,負數也可比較。參考一下吧。

要是想比較不只兩個整數,那就麻煩一點。
     
      
舊 2004-10-28, 08:57 PM #11
回應時引用此文章
flowofsoul離線中  
flowofsoul
Major Member
 
flowofsoul的大頭照
 

加入日期: Jul 2004
文章: 292
喔,等等,你要的就是不只比較兩個數字對吧?那我再修改一下,等等。
 
舊 2004-10-28, 09:02 PM #12
回應時引用此文章
flowofsoul離線中  
8:5
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);
舊 2004-10-28, 10:22 PM #13
回應時引用此文章
8:5離線中  
jackyepson
Regular Member
 
jackyepson的大頭照
 

加入日期: Oct 2004
您的住址: 虛擬的世界
文章: 66
可以了耶!!!感謝啦!!!只要再稍微修改一下就行了
舊 2004-10-28, 11:09 PM #14
回應時引用此文章
jackyepson離線中  
flowofsoul
Major Member
 
flowofsoul的大頭照
 

加入日期: Jul 2004
文章: 292
引用:
作者jackyepson
可以了耶!!!感謝啦!!!只要再稍微修改一下就行了


恭喜,小弟我本來寫的跟8:5兄差不多,後來想說試試看能不能整段程式碼全部塞進while裡面....,結果發現太久沒摸c++(三個月了),現在快要成功了。

等等我就把全部塞進while的程式碼貼出來。
舊 2004-10-28, 11:13 PM #15
回應時引用此文章
flowofsoul離線中  
jackyepson
Regular Member
 
jackyepson的大頭照
 

加入日期: Oct 2004
您的住址: 虛擬的世界
文章: 66
引用:
作者flowofsoul
恭喜,小弟我本來寫的跟8:5兄差不多,後來想說試試看能不能整段程式碼全部塞進while裡面....,結果發現太久沒摸c++(三個月了),現在快要成功了。

等等我就把全部塞進while的程式碼貼出來。

那位老兄寫的是無法判斷負數的,如果這位大哥可以再加上比較負數就更好了
舊 2004-10-28, 11:27 PM #16
回應時引用此文章
jackyepson離線中  
Kaworucloud
Major Member
 
Kaworucloud的大頭照
 

加入日期: Sep 2004
文章: 124
引用:
作者jackyepson
那位老兄寫的是無法判斷負數的,如果這位大哥可以再加上比較負數就更好了


那我寫的有什麼地方不正確嗎?(除了輸入零個跟一個數字不會說最少要兩個數字外)
因為我原本寫的也是用 cin 跟 cout,換成 scanf 跟 printf 後並無去檢查.....
__________________
どうしてこうなった(′・ω・`)
舊 2004-10-28, 11:35 PM #17
回應時引用此文章
Kaworucloud離線中  
jackyepson
Regular Member
 
jackyepson的大頭照
 

加入日期: Oct 2004
您的住址: 虛擬的世界
文章: 66
引用:
作者Kaworucloud
那我寫的有什麼地方不正確嗎?(除了輸入零個跟一個數字不會說最少要兩個數字外)
因為我原本寫的也是用 cin 跟 cout,換成 scanf 跟 printf 後並無去檢查.....

你的執行後次大值變成0,8:5寫的是輸入負號時最大值變0,次大值變成原本該顯示在最大值的值!!!
舊 2004-10-28, 11:42 PM #18
回應時引用此文章
jackyepson離線中  
8:5
Major Member
 

加入日期: Dec 2002
您的住址: 謎
文章: 265
引用:
作者jackyepson
8:5寫的是輸入負號時最大值變0,次大值變成原本該顯示在最大值的值!!!

看起來像是把結束的 0 也拿進去比較了。

如果您把
代碼:
while (true) {
    AAA
    if (n==0) break;
    BBB
}

改成
代碼:
while (n!=0) {
    AAA
    BBB
}

就會有這樣的結果••• (n=0 之後的 BBB 會變成多執行的•••)
舊 2004-10-29, 12:01 AM #19
回應時引用此文章
8:5離線中  
flowofsoul
Major Member
 
flowofsoul的大頭照
 

加入日期: Jul 2004
文章: 292
等等...有bug.............

此文章於 2004-10-29 12:31 AM 被 flowofsoul 編輯.
舊 2004-10-29, 12:07 AM #20
回應時引用此文章
flowofsoul離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是10:56 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2026。