2014-06-28 34 views
-5

以下C代碼不給一個完全正確的答案:C編程:陣列

#include<stdio.h> 
#include<conio.h> 
int main() 
{ 
    int i,j,a[3][3]; 
    for(i=1;i<=3;i++) 
    { 
     printf("\n"); 
     for(j=1;j<=3;j++) 
     { 
      a[i][j]=i+j; 
      printf("%d\t",a[i][j]); 
     } 
    } 
} 

運行時,它給第i個元素爲(2,3)錯誤結果。這裏有什麼錯?

+7

數組索引在c和C++中以'0'開頭。 – haccks

+0

任何書都會清楚地說明這一點。 – chris

+0

關於從0開始的數組的註釋現在在這裏。另一件事,你可能想刪除'#include '因爲你目前沒有使用它。 – shuttle87

回答

4

數組是零原點在C.

變化

(i=1;i<=3;i++) 

(i=0;i<3;i++) 

(和同爲j循環)。

+0

@'(j = 1; j <= 3; j ++)'爲'(j = 0; j <= 3; j ++)' – Rahul

+0

@Rahul添加了一個編輯 – ouah

+0

酷..順便說一句,而是OP。所以他不會錯過其他部分。 – Rahul

0

如果有定義爲例如陣列

int a[N]; 

然後指數的有效範圍是[0, N - 1]

在C/C++指數從0

啓動你的程序在C可看下面的方式

#include <stdio.h> 

int main(void) 
{ 
    const int N = 3; 
    int a[N][N]; 

    int i, j; 

    for (i = 0; i < N; i++) 
    { 
     printf("\n"); 
     for (j = 0; j < N; j++) 
     { 
      a[i][j] = i + j + 2; 
      printf("%d\t", a[i][j]); 
     } 
    } 
} 

有沒有必要包括標題<conio.h>,因爲它沒有使用它的聲明。