iT邦幫忙

0

C語言基本語法

匿名 2012-03-19 09:38:232242 瀏覽
  • 分享至 

  • xImage

我把以下的程式
1、 if(course[i][j] !=0)==> 執行出來13堂課
改成
2、 if(course[j][i] !=0)==> 執行出來16堂課

我想問的是,為何我改個i跟j而已,會有這麼大的差別,問題是,我的陣列內,不等於0的確實有13堂課啊,那第2項改了i跟j後,多了那三堂課到底是怎麼來的的呢??

************
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int course[6][5]={0,2,0,2,0, //課程定義
1,4,1,4,1,
5,0,5,0,5,
0,0,0,0,0,
3,0,3,0,3,
0,0,0,0,0};
int sum; //課程總數
int i,j;

sum=0;
for(i=0;i<6;i++)
for(j=0;j<5;j++)
if(course[i][j] !=0)
sum++;
printf("課程總數:%d \n",sum);

system("PAUSE");
return 0;
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

8
iversonjimmy
iT邦新手 5 級 ‧ 2012-03-19 12:09:50
最佳解答

其實你把course[j][i]依序列出來,就會知道答案了。
舉例來說,print course[3][4]為0,
course[3][5]理論上應該沒有值,但你把它印出來卻是3,
代表它去讀course[4][0]的值,這就是二維陣列的特性。

8
wildox
iT邦新手 3 級 ‧ 2012-03-19 14:52:06

把所有組數列印出來:

1,0=1
2,0=5
4,0=3
0,1=2
1,1=4
1,2=1
2,2=5
4,2=3
0,3=2
1,3=4
1,4=1
2,4=5
4,4=3
0,5=1
1,5=5
3,5=3
課程總數:16

你可以看到最後多出來三組數字,
0,5 位址同等於 1,0
1,5 位址同等於 2,0
3,5 位址同等於 4,0
就像 iversonjimmy 大說的一樣

我要發表回答

立即登入回答