線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:714
推到 Plurk!
推到 Facebook!

程式小問題~~

尚未結案
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-23 03:14:36 IP:203.70.xxx.xxx 未訂閱
#include 
#include     #define MAXSIZE 20    void sort(int[],int);    int main()
{
        
        int list[MAXSIZE];
        int size = 0;
        int dex;            do{                    printf("Type number :");
                scanf("%d",&list[size]);            }while(list[size  ] != 0);            sort(list,--size);
        for(dex=0;dexlist[in]){
                                        temp=list[in];
                                        list[in]=list[out];
                                        list[out]=temp;
                                
                        
                                }
_______________________________________________________
這程式在寫數值大小排序~~小~大印出    下面是我的問題~~~    先跟大家解釋一下它這邊把size減1主是要把最後輸入的0值刪除,只要輸出and排序前面大於0的值    sort(list,--size); 原本程式碼
sort(list,size-1); 改的    假設我輸入11,17,13,99,5,0 這6個數值
用sort(list,--size);
輸出結果為 :
5
11
13
17
99    我改成sort(list,size-1);
輸出變成
0
5
11
13
17
99    還有例如:在遞迴中使用sort(x,y-1)再傳遞給是可以反而用sort(x,--y)不可以    是一般傳遞參數值 跟 遞迴參數值有不同地方嗎???
發表人 - taishyang 於 2005/02/23 10:43:09
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-23 08:49:06 IP:61.66.xxx.xxx 未訂閱
你Post上來的Code有錯 所以不是很確定是哪裡有問題
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-23 10:19:07 IP:203.70.xxx.xxx 未訂閱
沒錯吧~~我用VC7可以跑    只是我忘了加上標頭檔    #include  #include
arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-23 14:51:08 IP:140.113.xxx.xxx 未訂閱
dear syao:    你的問題似乎是在問傳入 sort() 中 size 的問題。其實沒那麼複雜,如果你注意到
sort(list,--size);
for(dex=0;dex<size;dex  ) // <<---- 你這裡用了 size
  printf("%d\n",list[dex]);
如此一來,傳入--size與size-1的效果就很清楚了。雖然這兩種寫法對傳入sort()的效果相同,但是在之後for迴圈時執行的次數就不相同了。因為--size同時也改變了main()中的size的值,但是size-1卻只是將結果傳入sort()中,對main()中的size沒有影響。 假設size在傳入sort()前是6(相當輸入了5個非零數),若用size-1傳入sort(),則for迴圈會跑6次,連帶的就會輸出你不想要的0。你可以追蹤一下,就知道啦~ 另外,遞迴函數跟一般函數的傳值方式一樣,傳的東西當然看你的設計了。
系統時間:2024-05-19 7:57:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!