這個c 語句為什麼錯的?怎麼改

時間 2022-06-19 09:15:06

1樓:匿名使用者

錯的地方很多,首先是這一句:return n[10];這一句會發生陣列越界的錯誤.因為最後一個元素的下標為9;

你修改後你的排序函式返回值為int型,但在你的函式體內卻沒有返回一個值.你要不返回值的話,就把函式定義改為返回void,要是你想返回首元素的地址,就把返回型別改為int*.

還有一點你的排序演算法也有錯誤,當i為9,j為10的時候又發生了下標越界!這個演算法應該這麼寫:

for (int i = 0;i < 9;i++)

for (int j = i + 1;j < 10;j++)

最後一個錯誤出現在你的main函式裡的最後一句,如果你的排序函式返回一個首地址的話,你把這個首地址賦給a陣列的時候,a的後面並不用再加上[10].

還有一點,當把一個陣列作為引數傳遞給一個函式時,引數只需是陣列名,同樣不需要後面的[10].

2樓:

這個使用陣列當形參是址傳遞

在你的int paixu(float n[10])函式中可以不使用返回值

你的for(s=1;s<11;s++)這樣是錯誤的 因為陣列a[10]是不存在a[10]這個位置的

在使用paixu();函式的時候 它的實參直接寫陣列名,不要寫a[10]

建議你看看關於址傳遞和值傳遞,應該會對你有幫助的

3樓:破空大巫師

因為x是用float定義的,因此n[10]是float型,而函式返回是int型

後邊問題是一樣的,型別有誤,有可能記憶體溢位

4樓:樹下陰涼區

int paixu(float n[10]) 改為 void paxixu(float* n)

a[10]=paixu(a[10]); 改為 paixu(a);

利用址傳遞

編譯通過

這個C 怎麼改啊

include define m 3 define n 4 main max a 0 0 for i 0 imax main max a 0 0 for i 0 imax int max,i,j,r,c int a 3 4 max a 0 0 for i 0 i 用m n定義一個陣列是不行的。c c...

C 問題新手求詳解這個怎麼改呀

1 因為測試陣列 2 兩個例項的測試,稱為建構函式,所以有兩個initalizing預設 2 法院 陣列 1 呼叫getint 陣列 1 getfloat endl 因為num 0 fl 0.0 值嗎?不會改變,因此呼叫getint 來得到一個整數從0 getfloat先把 得到一個float 0 ...

這個怎麼改,怎麼出現亂碼了,c 指標入門

void change char p cout 變換後的順序為 dowhile p 0 改成這樣試試 void change char p cout 變換後的順序為 dowhile p p0 include using namespace std int main void change char ...