引用 | 編輯
星辰雪
2011-03-04 00:07 |
樓主
▼ |
||
x0
題目描述:一維陣列反轉 輸入說明: 輸入一個一維陣列 輸出說明: 輸出反轉後的陣列 使用 c 來撰寫 DEV C++軟體 來編譯 ------------- CODE : #include <stdio.h> #include <stdlib.h> int main(void) { FILE *input = fopen("input.txt","rb"); int s,i=0; char temp; bool IsHe .. 訪客只能看到部份內容,免費 加入會員 x0
|
引用 | 編輯
csr
2011-03-04 22:19 |
1樓
▲ ▼ |
大大
小弟不大明白 我用一個input.txt檔 裡面輸入123456789 再開檔 它還是顯示123456789 並無反轉輸出阿 為什麼呢 是否可請大大幫小弟說明一下程式的功能在那裡 謝謝 x0 |
引用 | 編輯
星辰雪
2011-03-04 22:28 |
2樓
▲ ▼ |
他是使用讀取檔案(txt)
進入程式 程式會跑出 反轉之後的 要執行程式 才會跑出來 不是直接開 txt檔案 有點類似 ACM比賽那種的 要讀取檔案 x0 |
引用 | 編輯
星辰雪
2011-03-17 20:56 |
9樓
▲ ▼ |
下面是引用 totsi 於 2011-03-17 09:02 發表的 :------------------------------------------ 使用例子來說明 #1 1 2 3 4 5 6 7 8 0 <<<這一列出現0 所以停止運作 #2 1 2 3 4 0 <<出現0 5 6 7 8 << 因為上一列出現0 停止運作,所以這一列不會列印出來 #3 0 1 2 3 3 2 1 0 0 <<出現0列 所以停止運作 我想要的功能 就如同上面所敘述 一列,只有一個字 而且那個字 是0 才停止運作。 想請問一下該如何編寫 我試了好幾次都寫不出來 x0 |
引用 | 編輯
totsi
2011-03-18 09:11 |
10樓
▲ ▼ |
code部分就不改了,先確定在下的認知是否正確嚕~~
依照範例看來,只要遇到有一列只有一個數值,然後那個數值為0的時候,要終止程式。 那麼這個可以用傳說中的髒雪球理論嚕XDD 依照code的寫法,一次只讀一個數值進來 那麼在讀到數值的判定時,多加上是否為0的判斷。 如果第一位數值是0,則此列醜一。 之後如果那一列就沒其他數值的話,那就直接結束程式。 不知這樣的流程,是否符合樓主的需求? 如果是的話,那code可能可以像下面那樣改: 複製程式 //節錄 bool IsHeadZero = false; int nColumnNum = 0; while(...) { fscanf(input,"%d",&s[i]); if (s[i] == 0) { IsHeadZero = true; }; i++; fscanf(input,"%c",&temp); if(temp!=' ') { for(int j=i-1;j>=0;j--) { printf("%d ",s[j]); } printf("\n"); if ( IsHeadZero && i == 1) { break; }else{ IsHeadZero = false; } i=0; } //以下省略 } x0 |
引用 | 編輯
totsi
2011-03-21 08:45 |
12樓
▲ ▼ |
把 if ( IsHeadZero && i == 1) 搬到您用來輸出的地方前面就好。
大概像底下這樣: 複製程式 .... if(temp!=' ') { if ( IsHeadZero && i == 1) { break; }else{ IsHeadZero = false; } for(int j=i-1;j>=0;j--) { printf("%d ",s[j]); } printf("\n"); } .... 這樣就在印出前就會離開了,依您原始的寫法,只要單行只有一個值的時候,是一定會進到不等於空白的判斷內。 不知,這樣的寫法是否有如同您的預期呢? x0 |