hufffj 2023-07-25 17:47 采纳率: 50%
浏览 3
已结题

《C 语言程序设计:现代方法》第 8 章第 7 道题,我的代码的问题?

C 语言的一个问题,具体是《C 语言程序设计:现代方法》第 8 章第 7 道编程题。题目要求进行 5 次输入,每次输入 5 个数字,并创建一个 5x5 的数组来储存这些数据,输出数组每行、每列的加和结果。

我的代码如下:

#include <stdio.h>

#define N 5

int main(void)
{
  int a[N][N];
  int row_sum[N] = {0}, col_sum[N] = {0};

  for (int i = 0; i < N; i++) {
    printf("Enter row %d: ", i + 1);
    for (int j = 0; j < N; j++)
      scanf("%d", &a[i][j]);
    getchar();
  }

  for (int i = 0; i < N; i++) {
    for (int j = 0; i < N; j++) {
      row_sum[i] += a[i][j];
      col_sum[i] += a[j][i];
    }
  }

  printf("\nRow totals:");
  for (int i = 0; i < N; i++)
    printf(" %d", row_sum[i]);
  printf("\nColumns totals:");
  for (int i = 0; i < N; i++)
    printf(" %d", col_sum[i]);
  printf("\n");

  return 0;
}

以上代码的运行结果可以正常读入输入的数字并将之储存在数组 a 中,但是输出不了计算的结果。我这里打算利用两个数组分别存储行加和、列加和的结果,这样计算结果的话,只需要一个循环。我看答案用了两个循环,以计算行加和的循环为例,它是将每行的加和结果存储到一个整型变量中,并进行输出。

以上代码哪里错了呢?

  • 写回答

4条回答 默认 最新

  • threenewbee 2023-07-25 17:50
    关注
    for (int i = 0; i < N; i++) {
        for (int j = 0; i < N; j++) { //这里是j不是i
          row_sum[i] += a[i][j];
          col_sum[i] += a[j][i];
        }
    }
    ->
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
          row_sum[i] += a[i][j];
          col_sum[j] += a[i][j];
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 7月25日