下面的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("%dt",a[i][j]);
}
}
}
运行时,给出第(2,3)个元素的错误结果。这里出了什么问题?
数组在c语言中为零源。
改变(i=1;i<=3;i++)
(i=0;i<3;i++)
(j
循环也是如此)。
如果你有一个数组定义为例如
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( "%dt", a[i][j] );
}
}
}
不需要包含标题<conio.h>
,因为它的声明都没有被使用。