鱼C论坛

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

[已解决]看看这个

[复制链接]
发表于 2023-12-6 17:27:22 | 显示全部楼层 |阅读模式
5鱼币
编程输入整数N(1<N<10),然后再输入N*N个整数(N阶矩阵)按顺序存放在一个N行N列的二维数组中。要求输出矩阵上三角元素的和、下三角元素的和(主对角线属于上三角和下三角共有元素)。
这是我写的答案,没有输出,麻烦看看是哪里出错了。
#include <stdio.h>
int main()
{
    int n,i,j,shangsanjiao=0,xiasanjiao=0;
    scanf("%d",&n);
    int a[n][n];
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
          {
            scanf("%d",&a[i][j]);
          }
    for(i=0;i<n;i++)
      for(j=0;j<=i;j++)
        {
          xiasanjiao+=a[i][j];
        }
    for(i=0;i<n;i++)
      for(j=0;j>=i;j++)
        {
          shangsanjiao+=a[i][j];
        }
    printf("%d %d",shangsanjiao,xiasanjiao);
    return 0;
}
最佳答案
2023-12-6 17:27:23
楼上的不对。

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

#include <stdio.h>

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

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

    int a[n][n];
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &a[i][j]);
        }
    }

    for (i = 0; i < n; i++) {
        for (j = 0; j <= i; j++) {
            xiasanjiao += a[i][j];
        }
    }

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

    printf("%d %d\n", shangsanjiao, xiasanjiao);
    return 0;
}

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

求最佳答案

最佳答案

查看完整内容

楼上的不对。 您的代码在计算矩阵上三角部分的和时有一个错误。在计算上三角的循环中,您应该使用for(j=i; j=i;j++)。因为上三角的部分是从主对角线(i == j)开始,到该行的最后一个元素(j < n)。让我们一起来修复这个问题: 现在,这段代码应该能够正确地计算出矩阵的上三角和下三角元素的和,并且打印出来。我还增加了一个检查,以确保输入的N的值在1和10之间。 求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

#include <stdio.h>

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

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

    int a[n][n];
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &a[i][j]);
        }
    }

    for (i = 0; i < n; i++) {
        for (j = 0; j <= i; j++) {
            xiasanjiao += a[i][j];
        }
    }

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

    printf("%d %d\n", shangsanjiao, xiasanjiao);
    return 0;
}

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

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-6 17:27:48 | 显示全部楼层
这个问题是要求输入一个整数N,并判断它是奇数还是偶数。那么我们就可以写一个简单的程序来实现。

首先,我们需要使用 `input` 函数来获取用户输入的整数N,并将其转换为整数类型。然后,我们可以使用取余操作符 `%` 来判断N是否为偶数。如果N除以2的余数为0,则说明N是偶数;否则,N是奇数。最后,根据判断结果进行相应的输出提示。

下面是一个示例代码:
N = int(input("请输入一个整数N:"))if N % 2 == 0:    print(N, "是偶数")else:    print(N, "是奇数")
使用这段代码,当你输入一个整数N后,程序会判断并输出相应的结果。希望能够帮到你!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-6 19:24:26 | 显示全部楼层
样例可以给一下吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-6 19:26:42 | 显示全部楼层
sfqxx 发表于 2023-12-6 19:24
样例可以给一下吗?

什么是样例
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-6 19:28:44 | 显示全部楼层
sfqxx 发表于 2023-12-6 19:24
样例可以给一下吗?

输入样例:
3
1 2 3
4 5 6
7 8 9
输出样例:
26 34
输入样例:
5
1 2 3 4 5
5 4 3 2 1
6 8 9 3 2
5 8 7 2 1
9 7 8 6 5
输出样例:
47 90
是这个吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

是的。

我的程序能过就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 08:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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