c - 如何在C中存储一行的最后一个和

标签 c

我正在做这个练习 “以 n 行 m 列自然数的矩阵作为输入(n 和 m 也是 从输入中获取)。该程序检查数字的总和 每行包含的内容对于所有行都是相同的”

我不知道如何保存矩阵中最后一行的总和。如果我插入一个临时变量来分配最后的总和,那么它会在下一个 for 循环中被覆盖

int main ()
{

    int i, j;
    int sum;
    int temp;
    int n=3, m=3;
    int matrix[n][m];

    for(i=0;i<n;i++)
    {       
        for(j=0;j<n;j++)
        {
            printf("Enter: ");
            scanf("%d",&matrix[i][j]);
        }
    }

    for(i=0;i<m;i++)
    {           
        sum=0;          
        for(j=0;j<n;j++)
        {
            sum+=matrix[i][j];                                              
        }           
    }
}

最佳答案

保持代码与现在的代码非常相似,您可以执行以下操作:

int main (){
    int i, j;
    int sum = 0;
    int oldsum = 0;
    int temp;
    int n=3, m=3;
    int matrix[n][m];

    for(i=0;i<n;i++)
    {       
        for(j=0;j<n;j++)
        {
            printf("Enter: ");
            scanf("%d",&matrix[i][j]);
        }
    }

    for(i=0;i<m;i++)
    {           
        sum=0;          
        for(j=0;j<n;j++)
        {
            sum+=matrix[i][j];                                              
        }  
        if (i == 0 || sum == oldsum){
            oldsum = sum;
        }         
        else {
            printf("The sums are not equal!\n");
            return 1;
        }
    }
    printf("All the sums are equal!\n");
    return 0;
}

由于您需要检查所有行的总和是否相同,因此当您发现总和与前一个总和不同时,您可以安全地停止程序,在这种情况下,当您发现不同的总和时,您返回1 否则,您将在 main 末尾返回 0

条件中的||用于处理sumoldsum都为0时的第一次求和计算;

关于c - 如何在C中存储一行的最后一个和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58817168/

相关文章:

c - mikroc 中是否存在 rand() 函数?

c - 何时使用 OpenCL API 标量数据类型?

c++ - 谁能解释为什么这两个转换为 unsigned long long 会产生不同的结果?

C 编译器损坏 : is not able to compile a simple test program

使用 qsort 对 C 数组进行排序?

c - read()/ioctl 干扰 GPIO 信号?

c - gettimeofday 的奇怪行为

c - 将可分配数组从 fortran 传递到 C 并对其进行 malloc

java - SSLSockets 和密码规范问题

c - 为什么非常简单的 Hello World 程序没有输出?