回 帖 发 新 帖 刷新版面

主题:N维数组复制问题

用循环给一个二维数组赋值
   


#include <stdio.h>
void main()
{
   int i,j,a[3][4];
    printf("please input 12 numberss \n");
      for(i=0;i<=2;i++)
   {
      for(j=0;j<=3;j++)
      scanf("%d"&a[i][j]);
    printf("\n");
   }
}          

                 这样就能把12个数赋给一个3x4 数组了???
     那位高手给讲讲其中应该注意的问题,和其他的复制方法。要是在能举几个例子就更好了  
  谢了

回复列表 (共2个回复)

沙发

是的,代码没逻辑错误.
给二维数组赋值应该注意维数,一定要从0开始,比如a[3][5],一维一定要0-2,二维0-4,防止出现1-3,1-5的越界情况,注意这些就行了.
其他的赋值也没啥了,也可以当作一维数组那样赋,用一层循环,直接在循环体内给二维赋上值,本质上和二维赋值是一样的.
for(i=0;i<=2;i++){
scanf("%d,%d,%d,%d",&(a+i)[0],&(a+i)[1],&(a+i)[2],&(a+i)[3]);
printf("\n");
}
本质上与二维没区别.


板凳

代码里有个小疏忽scanf("%d"&a[i][j]);这里少了个,
二维数组的使用主要就是边界检查问题。其他的赋值方法,有memset等手段,不常用,还有一种比较常见的就是直接初始化:int a[2][3]={{1,2,3},{3,5,7}};

我来回复

您尚未登录,请登录后再回复。点此登录或注册