liujianan123 发表于 2023-11-3 22:56:56

求各位帮我看一下矩阵代码有什么问题

题目是输入一个n(1<=n<=6),再输入一个n阶方阵,要求算除副对角线,最后一行和最后一列的和
我这个写的输入矩阵之后没有输出
#include<stdio.h>
#define MAX 6
int main()
{
        int n,i,j,a,sum;
        scanf("%d",&n);
        if(n<=6)
        for(i=0;i<n;i++)
        {
                for(j=0;j<n;j++)
                {
                        scanf("%d",a);
                        if((i!=n-1)&&(j!=n-1)&&(j!=n-1-i));
                        sum=sum+a;
                }
        }
        printf("%d",sum);
        return 0;
}

isdkz 发表于 2023-11-3 22:57:06

代码存在以下问题:

1. 在 scanf 函数中,应该使用 &a[ i] 而不是 a[ i],因为需要将输入的值存储到 a[ i] 中。
2. 变量 sum 没有初始化,应该将其初始化为 0。
3. 在 if 语句中,应该使用大括号将语句块括起来,否则只有第一条语句会被 if 语句控制。
4. 在 if 语句中,判断条件应该为 i+j==n-1 或者 i==n-1 或者 j==n-1,而不是 (i!=n-1)&&(j!=n-1)&&(j!=n-1-i)。

修改后的代码如下:

#include<stdio.h>
#define MAX 6
int main()
{
    int n,i,j,a,sum=0;
    scanf("%d",&n);
    if(n<=6)
    {
      for(i=0;i<n;i++)
      {
            for(j=0;j<n;j++)
            {
                scanf("%d",&a[ i]);
                if(i+j==n-1 || i==n-1 || j==n-1)
                {
                  sum=sum+a[ i];
                }
            }
      }
    }
    printf("%d",sum);
    return 0;
}

liujianan123 发表于 2023-11-3 22:57:43

顺便问一下这个提问怎么上传代码啊{:10_281:}

Mike_python小 发表于 2023-11-3 22:58:38

根据您提供的代码,我发现了几个问题:

1. 在 scanf 函数中,传递矩阵元素的地址时,应该使用 & 运算符来获取地址,修改为 scanf("%d", &a);。

2. 在累加求和的过程中,需要对变量 sum 进行初始化,可以在声明时将其初始化为0,即 int sum = 0;。

3. 在 if 语句条件判断中,添加了一个分号“;”,这会导致 sum 的累加部分无法执行。请将 if 语句修改为正常的代码块结构,即去掉分号:


if ((i != n - 1) && (j != n - 1) && (j != n - 1 - i))
{
    sum = sum + a;
}


4. 为了确保输入的 n 值不超出范围,您可以添加一个 else 分支,在超出范围时给出提示或进行其他处理。

修正后的代码如下:


#include <stdio.h>
#define MAX 6

int main()
{
    int n, i, j, a, sum = 0;

    scanf("%d", &n);

    if (n <= 6)
    {
      for (i = 0; i < n; i++)
      {
            for (j = 0; j < n; j++)
            {
                scanf("%d", &a);

                if ((i != n - 1) && (j != n - 1) && (j != n - 1 - i))
                {
                  sum = sum + a;
                }
            }
      }

      printf("%d", sum);
    }
    else
    {
      printf("Input value of n is out of range.");
    }

    return 0;
}


请注意,以上修改是基于您提供的代码进行的。希望对您有所帮助!如果您还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 求各位帮我看一下矩阵代码有什么问题