鱼C论坛

 找回密码
 立即注册
查看: 2127|回复: 6

[已解决]看看这个

[复制链接]
发表于 2023-12-6 17:27:23 | 显示全部楼层    本楼为最佳答案   
楼上的不对。

您的代码在计算矩阵上三角部分的和时有一个错误。在计算上三角的循环中,您应该使用for(j=i; j<n; j++)而不是 for(j=0;j>=i;j++)。因为上三角的部分是从主对角线(i == j)开始,到该行的最后一个元素(j < n)。让我们一起来修复这个问题:


  1. #include <stdio.h>

  2. int main() {
  3.     int n, i, j, shangsanjiao = 0, xiasanjiao = 0;
  4.     scanf("%d", &n);

  5.     if (n <= 1 || n >= 10) {
  6.         printf("N must be greater than 1 and less than 10.\n");
  7.         return 1;
  8.     }

  9.     int a[n][n];
  10.     for (i = 0; i < n; i++) {
  11.         for (j = 0; j < n; j++) {
  12.             scanf("%d", &a[i][j]);
  13.         }
  14.     }

  15.     for (i = 0; i < n; i++) {
  16.         for (j = 0; j <= i; j++) {
  17.             xiasanjiao += a[i][j];
  18.         }
  19.     }

  20.     for (i = 0; i < n; i++) {
  21.         for (j = i; j < n; j++) { // 正确的上三角循环
  22.             shangsanjiao += a[i][j];
  23.         }
  24.     }

  25.     printf("%d %d\n", shangsanjiao, xiasanjiao);
  26.     return 0;
  27. }
复制代码


现在,这段代码应该能够正确地计算出矩阵的上三角和下三角元素的和,并且打印出来。我还增加了一个检查,以确保输入的N的值在1和10之间。

求最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-6 19:24:26 | 显示全部楼层
样例可以给一下吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-6 19:38:14 | 显示全部楼层

是的。

我的程序能过就行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-14 05:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表