gpt4 book ai didi

c - 为什么我的 Matrix 不向屏幕返回任何值?

转载 作者:行者123 更新时间:2023-11-30 18:52:40 24 4
gpt4 key购买 nike

我一直在尝试解决一个问题,其中的查询是:


  1. 将主对角线的每个元素替换为其上方(同一列)以及其右侧(同一行)的所有元素的总和

  2. 将对角线的每个元素替换为其下方(同一列)和左侧(同一行)的所有元素的总和

我的问题:我不知道为什么输入完成后程序没有显示任何内容

读取矩阵

#include <stdio.h>
int main(){

int i,j,m,k,a[100][100],new_mat[100][100];
scanf("%d%d",&m,&k); //m=rows, k=columns

for (i = 0 ; i < m ; i++)
for (j = 0 ; j < k ; j++)
scanf("%d", &a[i][j]);

//初始解决方案,但是它只覆盖了最接近它的第一个元素,而不是下面和向上的所有元素的总和

/*
for(i=0;i<m;i++)
{
for(j=0;j<k;j++)

{
if(i==j)
if(j+1<k && i-1>=0)
{a[i][j]+=a[i][j+1]+a[i-1][j];}

if(i+j==m-1)
if(j-1>=0 && i+1<k)
{a[i][j]=a[i][j-1]+a[i+1][j];}
}
}
*/

<小时/>因此,我尝试通过额外的 for 循环来访问所有剩余元素

for(i=0;i<m;i++)

{
for(j=0;j<k;j++)
{
if(i==j)
for(;j+1<k,i-1>=0;j+1,i-1)
{
a[i][j]+=a[i][j+1]+a[i-1][j];
}


if(i+j==m-1)
for(;j-1>=0,i+1<k;j-1,i+1)
{
a[i][j]=a[i][j-1]+a[i+1][j];}
}
}

<小时/>然后打印结果:

for (i=0; i<m; i++)
for(j=0; j<k; j++)
printf("%d ", a[i][j]);
printf("\n");
return 0;}

但是,进入矩阵后,什么也没有发生,并且值也没有返回到屏幕

最佳答案

我没有深入检查代码以查看它是否按照您希望的方式执行。我只是看了一般。

第一:约定。请在 for 两边添加括号。审查代码会更容易。

       if(i+j==m-1)
{
for(;j-1>=0,i+1<k;j-1,i+1)
...
}

第二:两个循环都会永远运行,因为你不改变 j 和 i!你是说吗?

        for(;j-1>=0,i+1<k;j--,i++)

第三:您确实应该学习使用调试器。使用正确的调试器,您很快就会发现问题。

关于c - 为什么我的 Matrix 不向屏幕返回任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34578742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com