echo000 发表于 2017-11-15 21:11:23

一个二维数组的小问题

请先看源代码
#include<stdio.h>
int main()
{
        int n,m,i,j;
        printf("Enter n and m:");
        scanf("%d%d",&n,&m);
        int p;
        printf("\n");
       
        for(i=0;i<n;i++){
                for(j=0;j<m;j++){
                  scanf("%d",&p);
                  }
        }
       
       
        for(i=0;i<m;i++){
                for(j=0;j<n-1;j++){
                        p+=p;
                        printf("d");
                }
        }
       
        //显示
        for(i=0;i<n;i++){
       for(j=0;j<m;j++)
       printf("%d",p);
       printf("\n");
}
}


目的是我定义一个2*3的数组的时候
理想的是输入
1 2 3
4 5 6
结果输出是
1 2 3
5 7 9也就是说最后一行在基础上加上每列的数用了printf(“%d”)来检验循环次数是三次也没错
可结果却是
1 2 3
4 5 6原样输出了这是为什么呢?

丶忘却的年少o 发表于 2017-11-15 21:49:21

p+=p;这句错了,n是2,数组从0开始,所以改为以下语句:
p+=p;

BngThea 发表于 2017-11-15 22:39:59

数组访问越界。

而且你这样写在std99下能通过,在老的标准下是无法通过的
对于可变数组长度,建议还是用 malloc + free 组合来设计代码
页: [1]
查看完整版本: 一个二维数组的小问题