1樓:額外覆蓋
你陣列定義大小為a[5][5]
但是他的下標是0開始 到4 最大為4
也就是說 你a[i][5]相當於是越界了 理論上是錯誤的 不過你的編譯器沒報錯 但是二維陣列在記憶體中其實是連續的一串記憶體 也就是a[0]五個單位a[1】五個單位類推
2樓:匿名使用者
正確的應當是
#include
void main()
float a[5][5]=,,,,};
float max=0,sum;
int i,j,k;
printf("%f\n",a[4][0]);
for(i=0;i<5;i++)
sum=0;
for(j=1;j<4;j++)
sum=sum+a[i][j];
a[i][4]=sum/3;
for(i=0;i<5;i++)
if(a[i][4]>max)
max=a[i][4];
k=a[i][0];
printf("%d,%f\n",k,max);
printf("%f",a[i][0]);
幾個錯誤:
printf("%d\n",a[4][0]);printf("%d",a[i][0]); 中間d改為f
a[i][5]=sum/3;if(a[i][5]>max)max=a[i][5]; 中間5 全部改為4,開的陣列是0到4
可以單步執行檢驗一下,陣列是從0 開始,切記
3樓:_一蓑煙雨晴
printf("%d\n",a[4][0]);
應該改為printf("%f\n",a[4][0]);
a[i][5]=sum/3;
你的最大錯誤是陣列越界了,你的定義a[5][5];但引用是a[0][0].......a[4][4]
4樓:不信佛的佛手瓜
錯太多了。。
printf("%d\n",a[4][0]); -> printf("%f\n",a[4][0]); //輸出格式錯誤
a[i][5] -> a[i][4] //陣列越界
printf("%d",a[i][0]); //i=5 陣列越界+輸出格式錯誤
5樓:匿名使用者
#include
main()
,,,,};
float max=0,sum;
int i,j,k,f=0;
printf("%d\n",(int)a[4][0]);
for(i=0;i<5;i++)
}for(i=0;i<5;i++)
if(a[i][4]>max)
printf("%d,%f\n",k,max);
printf("%d",(int)a[f][0]);}
C語言陣列問題,c語言陣列宣告問題
for i 1 i 10 i break 要求按已排好的順序規律將它插入到陣列中.這段改為 for i 1 i 10 i a i 1 m break 你確定是從大到小排列嗎?我怎麼感覺你的程式是從小到大排列的啊。include void main 從鍵盤接收10個數。for j 1 j 10 j f...
C語言的問題,指標陣列,c語言指標陣列
改變不了,字串常量是改不了的,你可以試試char p aaaaa p 1 b 這樣是改不了的 只能定義二維陣列才可以改 char p 3 100 這樣才可以改,不要問為什麼,字串常量就是不能改 直接讓指標指向另一個字串即可 p 0 aaaa 這樣定義指標指向的字串是無法修改的。c語言指標陣列 p是i...
C語言陣列問題
void out set unsigned char bit id,bit value if value else 呼叫的時候就是這樣 out set 22,1 置位 out set 22,0 置0 無頭無尾的,怎麼給你解釋?這個不是陣列的問題,應該是關於位運算的問題 bn表示第幾個位元組 msk就...