2014-02-25 63 views
-1

我在開始學習C++之前學習C語言,所以我對編程非常陌生。我正在玩二維數組,我有點理解它。不過,我似乎無法弄清楚如何做到這一點:C編程2D數組問題

int x, y, z[4][4], i, j;

其中x = 10,y = 10;

for (i=0; i<4; i++) 
{ 
    for(j=0;j<4;j++) 
    { 
    z[i][j]=z[x][[y]; 
    } 
} 

我想要的輸出爲:

i=0j=0打印Z [X] [Y];如在打印10,10。

任何幫助,將不勝感激。

+0

當'x = 10,y = 10'時做'z [x] [[y]'與z [4] [4]不正確。只有4x4元素。 – Rohan

+1

我想你可能會對多維數組產生困惑。 z [i] [j]將只包含一個值,並通過使用z [i] [j] = 10(或x或y等)來設置它。 – Inisheer

回答

1

您將z [i] [j]設置爲等於z [x] [y]。 X和Y分別是10和10,它是數組的邊界之外所以這要失敗

0

這裏z[i][j]只是一個值,因此它只能打印10,你必須分配是這樣的:

for (i=0; i<4; i++) 
{ 
    for(j=0;j<4;j++) 
    { 
    z[i][j]=x; 
    } 
} 
0

通過做z[4][4]你宣佈z爲4x4矩陣。

而當您嘗試使用z[x][[y]; eg z[10][10];時,您顯然正在訪問矩陣範圍外的元素

0
#include <stdio.h> 

int main(){ 
    int x, y, z[4][4], i, j; 
    int base = 65536; 

    for (i=0; i<4; i++){ 
     for(j=0;j<4;j++){ 
      int v; 
      x = 10 + i; 
      y = 10 + j; 
      v = x * base + y; 
      z[i][j] = v; 
     } 
    } 
    i = 0; 
    j = 0; 
    if(i == 0 && j == 0) 
     printf("%d, %d\n", z[i][j]/base, z[i][j] % base); 

    return 0; 
} 
0

我對2d數組的理解絕對是錯誤的。所以我會以另一種方式來解決這個問題。假設我有以下變量。

int student_id [10],course_id [5];

int student_course [10] [2];

只能有10名學生。 只能有5道菜。 一名學生只能參加2門課程。

/*prompt user for student id*/ 

/* 
say that the value for: 
student_id[0]=123 
*/ 

/*prompt user for course id*/ 

/* 
say that the value for: 
course_id[0]=101 
course_id[1]=102 
course_id[2]=103 
course_id[3]=104 
course_id[4]=105 
*/ 

我想打印的是student_course [student_id的值] [course_id的值]。

因此,我認爲做這樣的:

int student_id[10], course_id[5], student_course[10][2] 

int i, j, k; 

for(i=0; i<10;i++){ 
    for(j=0; j<5; j++){ 

     /*prompt user for student id*/ 
     printf("Enter User ID: "); 
     scanf("%d", &student_id[i]); 

     /*prompt user for course id*/ 
     printf("Enter Course ID: "); 
     scanf("%d", &course_id[j]); 

     for(k=0; k<2; k++){ 
      student_course[i][j]=student_course[i][k]; 
     } 

    } 
} 

如果這是錯誤的方式,什麼是得到我想要的結果,正確的方法是什麼?一個3維數組也許?我可能還沒有做好準備。