c - 总结c中的行,显示列中的垃圾数字

标签 c arrays sum row

我正在尝试对 C 中的列进行求和。我的代码仅添加第一列的总和,例如,如果是 2x2 数组,则它仅添加第一列,但对于其余的列,它会显示奇怪的数字。这就是我到目前为止所得到的。我还没有为行编写代码。感谢您的帮助。

#include <stdio.h>

int main(){


printf("Enter the number of columns");
int i;
scanf("%d", &i);
printf("Enter the number of rows");
int y;
scanf("%d", &y);

int r[i][y];
int a;
int b;
int columntotal[i],rowtotal[y];

for (a=0; a<i; a++){
   for (b=0; b<y; b++){
     scanf("%d",&r[a][b]);
   }
}


//printing
for(a=0;a<i;a++)
{
   for(b=0;b<y;b++){

      printf("\t%d", r[a][b]);

   }
printf("\n");
}




for (a=0;a<i;a++){
  for (b=0;b<y;b++){
      columntotal[a]=columntotal[a]+r[a][b];

  }
}
for (a=0;a<i;a++){
    printf("%d\n", columntotal[a]);
}

return(0);
}

最佳答案

据我记得动态行,在创建数组时进行列分配在 C 中是不可能的。所以你的这个语句 int columntotal[i],rowtotal[y]; 将不起作用,除非我, y 是一个常量变量,即 #define i,y,etc ,这不属于您的情况。

其次,您正在迭代未正确声明的 columntotal 数组。您可以利用动态内存分配将 block 数分配给columntotal 数组,然后在迭代时用列总和填充它。

int *columntotal= malloc(i * sizeof (int));
for (a=0;a<i;a++){
  for (b=0;b<y;b++){
    columntotal[a]=columntotal[a]+r[a][b];   //r is your 2D array

  }
}

关于c - 总结c中的行,显示列中的垃圾数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650814/

相关文章:

sql - 使用 Liquibase 创建 Postgres Varchar 数组列

java - java中的模式/数组问题

mysql - 在子选择中求和返回不正确的值

XML/XSL : Sum in foreach loop with conditional (special case)

c - printf 的意外结果

为任何类型的数组创建 min() 宏

在 C 中将 char 数组转换为 char 指针

c - DWARF 信息对于 DW_AT_high_pc 与 gcc 4.8.2 似乎是错误的

php - 检查两个数组是否仅包含相同的键

MYSQL选择当前连续获胜