第二个循环有问题但是看不出来,如何解决?

img


#include<stdio.h>
int main()
{
    int i,m, n,sum=0,j,e,f,c;
    printf("输入m,n:");
    scanf_s("%d %d", &m,&n);
    int arr[80];
    for (i=0,j=1;i<=(m-1)*n,j<=m*n-1;i+=2,j+=2)
    {
        scanf_s("%d %d", &arr[i],&arr[j]);
    }
    for (e=0,c=0;e<=m; e++,c++)
    {
        for (f=0;f<=1;f++,c++)
        {
            sum = sum + arr[c];
        }
        printf("%d", sum);
        sum=0;
    }
    return 0;
}

img


第二个循环有问题但是看不出来,谢谢大家指点!┭┮﹏┭┮

从运行结果看,可能是sum没有清零。其实可以使用二维数组存放元素,这样代码会简单一些。

#include<stdio.h>
int main(){
    int i,j,m,n,sum;
    printf("输入m,n:");
    scanf("%d %d",&m,&n);
    int a[m][n];
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<m;i++){
        sum=0;
        for(j=0;j<n;j++){
            sum=sum+a[i][j];
        }
        printf("%d\n",sum);
    }
    return 0;
}

为啥要把循环搞这么复杂?

#include<stdio.h>
int main()
{
    int i,m, n,sum=0,j,e,f,c;
    printf("输入m,n:");
    scanf_s("%d %d", &m,&n);
    int arr[80];
    for (i=0,j=1;i<=(m-1)*n,j<=m*n-1;i+=2,j+=2)
    {
        scanf_s("%d %d", &arr[i],&arr[j]);
    }
    for (e=0,c=0;e<m; e++)
    {
        for (f=0;f<=1;f++,c++)
        {
            sum = sum + arr[c];
        }
        printf("%d ", sum);
        sum=0;
    }
    return 0;
}