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 ...