C语言二维数组计算每行的和,求改错

这是原题目,以下是我编写的程序,我觉得是scanf那里出了问题,但是我不知道怎样才可以像题目要求的那样一行一行输入元素,求大神指教QAQ
#include<stdio.h>
int main(void)
{
int i,j,m,n,x,w=0;
int a[10][10];
printf("请分别输入m和n的值:");
scanf("%d%d",&m,&n);
for(x=1;x<=m;x++)
{
printf("请输入第%d行元素:",x);
i=x;
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
w=w+a[i][j];
printf("第%d行元素之和为:%d",i,w);
}
getche();
return 0;
}
很急,求帮忙QAQ

没什么大问题,主要是3处有错,看下面代码的注释明白了。

#include<stdio.h>
int main(void)
{
    int i,j,m,n,x,w=0;
    int a[10][10];
    printf("请分别输入m和n的值:");
    scanf("%d%d",&m,&n);
    for(x=1;x<=m;x++)
    {
        printf("请输入第%d行元素:",x);
        i=x;
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i-1][j]); // 注意你的i是从1开始的,所以此时该减1。
        }
    }

    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            w=w+a[i][j];
        }
        printf("第%d行元素之和为:%d\n",i,w); 
            // 注意上句应放在第一个for内,而在第二个for外。
            //  另外结尾加上"\n"换行,方便阅读。
        w=0;  // 一行算完后,结果清零,便于算下一行。
    }
    getche();
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-28
#include<stdio.h>
int main(void)
{
int i,j,m,n,x,w=0;
int a[10][10];
printf("请分别输入m和n的值:");
scanf("%d%d",&m,&n);
for(x=0;x<m;x++)
{
printf("请输入第%d行元素:",x+1);
i=x;
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<m;i++)
{
w=0;
for(j=0;j<n;j++)
{
w=w+a[i][j];
}
printf("第%d行元素之和为:%d\n",i+1,w);
}
getchar();
return 0;
}
第2个回答  2015-04-28
scanf两个%d之间加空格
第3个回答  2018-07-07
void f( )
{
int arr[5][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{17,18,19,20} };
int k=0,i=0,t=0;
for(k=0;k<5;k++)
{
for(i=0;i<4;i++)
{ t=arr[k][i]+t; }
printf("%2d\n",t) ;
t = 0 ;
}

}