下面的C語言程式在陣列的排序和輸出哪裡錯了呢

2022-06-24 15:00:04 字數 845 閱讀 5067

1樓:寒寒家

最主要的問題是:print函式裡 應該是a[i]。

另外還有其它問題,這種設定的話,要求data.txt中必須有10個數,程式才不會出錯。

(另外樓上提到的讀檔案的問題,其實樓主並沒有錯,樓主讀檔案的code是正確的)

我修改了下:

#include

#include

#define n 100   //array sizevoid choise(int *a,int n)  }} void bubble(int *a,int n) }void print(int *a,int n){ int i;

for(i=0;i

2樓:犬蟲門心西安

void print(int *a,int n)還有:while(!feof(fp))

這段**是有問題的!

feof()函式是這樣工作的:

它判斷你的上一次對檔案的操作是否造成」遇到檔案結束「,如果沒有遇到檔案結束,就返回0,否則,返回1;

那麼,當你的fscanf()函式讀出最後乙個資料後,此時的讀操作還沒有遇到檔案結束,這會造成繼續讀下乙個資料,而此時已經麼有資料了,fscanf()函式讀失敗,feof()函式此時才為1,但是,num[i]的值不會被修改,將維持為原值(應該是垃圾資料)。

建議修改方法:

fscanf(fp, "%d", &n);

while(!feof(fp))

這樣,如果fscanf()所讀到的資料不正確(已經遇到檔案結束標誌),也不會賦值給陣列元素。

3樓:煒煒

額,除錯了一遍發現執行正確的,然後就看到了樓上的答案

c語言程式下面的程式能用嗎

肯定不能用,因為boy類和girl類都沒定義,而且這不過只是乙個方法。學了物件導向程式設計就知道。當時如果做適當的補充,例如定義boy類和girl類,並且建立乙個包含result類的方法,也許可以用來測試boy和girl的結果。這個方法也可以用語言解釋出來 即裡面的演算法 例如第一句 if boy....

c語言閱讀下面的程式,寫出程式執行輸出結果

include int f int x int main for迴圈迴圈3次,依次呼叫三次f 1 而f中的z和y是static靜態變數,只初始化一次,而且在退出函式的時候還會保持它們的值。知道這個就可以走一次迴圈了 比如k 1,即f 1 開始 x 1 z 3,y 0 y z 這行結束後y為1,z為4...

下面的c語言程式哪個地方有問題,急

實在看不下去,這樣的程式都解決不了問題,那還能幹什麼?下面的c語言程式,顯示沒有錯誤,但是執行不出結果,哪位大神幫幫我!急求!測試了一下,是可以輸出結果的。你的程式中,雖然已經規定了a 4 4 各元素的值,但後面又有scanf,因此是需要你輸入陣列元素的。你是不是就不知道你寫的是啥,因此你並沒有輸入...