Marcccccy 发表于 2020-5-4 22:44:29

二维数组中的运算

代码如下:
运行超时,可以麻烦找找问题嘛……qwq
#include<stdio.h>
#include<math.h>
int main()
{
        float a={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
        float x;
        int i,j;
        x=fabs(a);
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                {
                        if(fabs(a)<x);
                                x=a;
                }
                for(j=0;i<3;j++)
                        a=a/x;
        }
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                        printf("%7.3f",a);
        }
        return 0;
}

Marcccccy 发表于 2020-5-4 22:45:14

代码的意思是 将数组a的每一行均除以该行上绝对值最大的元素,然后将a数组输出

THU_LSM 发表于 2020-5-4 23:31:45

第13-14行,16-17行,21-22行,应该给if 或者是 for 后面的语句加大括号吧

Marcccccy 发表于 2020-5-4 23:55:57

THU_LSM 发表于 2020-5-4 23:31
第13-14行,16-17行,21-22行,应该给if 或者是 for 后面的语句加大括号吧

应该都可叭,我记得如果不加的话 默认是接下来的一行

Marcccccy 发表于 2020-5-5 00:00:15

运行超时的问题找着了,第16行那里,我把"j"打成了"i"...
但是运行结果有出入……到底是为啥呢……{:10_262:}
Expected                                                      |        Yours
0.3610.7501.000                                                  0.3610.7501.000
0.4260.6381.000                                                  0.4260.6381.000
0.7501.0000.317                                              |          2.3623.1501.000

chxchxkkk 发表于 2020-5-5 09:38:24

if(fabs(a)<x);===》这里应该是大于x吧,比x大的才赋值给x。你这样运算,x是最小值了
      x=a;      

Marcccccy 发表于 2020-5-5 12:04:34

chxchxkkk 发表于 2020-5-5 09:38
if(fabs(a)

啊啊是的!!但是改完运行了一下,和答案还是有出入……{:10_262:}

Cool_Breeze 发表于 2020-5-5 12:59:00

本帖最后由 Cool_Breeze 于 2020-5-5 13:43 编辑

#include<stdio.h>
#include<math.h>
int main()
{
      float a={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
      float x;
      int i,j;
      for(i=0;i<3;i++)
      {
              x=fabs(a);
                for(j=0;j<3;j++)
                {
                        if(fabs(a)>x)
                              x=a;
                }
                for(j=0;j<3;j++)
                        a=a/x;
      }
      for(i=0;i<3;i++)
      {
                for(j=0;j<3;j++)
                        printf("%7.3f",a);
      }
      return 0;
}


0.3610.7501.0000.4260.6381.0000.7501.0000.317
--------------------------------
Process exited after 0.01162 seconds with return value 0
请按任意键继续. . .

小猪鼠 发表于 2020-5-5 13:29:44

                for(j=0;j<3;j++)
                {
                        if(fabs(a)<x);
                              x=a;
                }中 if(fabs(a)<x);这一句多加了个分号,然后这样就表示判断了if这个条件,什么操作都没有,直接下一步了

THU_LSM 发表于 2020-5-5 15:03:32

Marcccccy 发表于 2020-5-4 23:55
应该都可叭,我记得如果不加的话 默认是接下来的一行

我的编译器如果像你这样不加括号写的话都不通过编译诶。。。{:5_94:}
Apple LLVM version 10.0.0 (clang-1000.10.44.4)

Marcccccy 发表于 2020-5-5 15:21:52

THU_LSM 发表于 2020-5-5 15:03
我的编译器如果像你这样不加括号写的话都不通过编译诶。。。
Apple LLVM version 10.0.0 (clang ...

欸,我用的是VC++,可能是编译器不一样叭哈哈哈哈哈哈,那还是加上好了嘿嘿

Marcccccy 发表于 2020-5-5 15:26:18

小猪鼠 发表于 2020-5-5 13:29
for(j=0;j

啊啊手抖多按了个分号上去【捂脸】,谢谢您啦!

Marcccccy 发表于 2020-5-5 15:28:05

Cool_Breeze 发表于 2020-5-5 12:59


明白自己德问题辽,蟹蟹您!!{:10_287:}

Marcccccy 发表于 2020-5-5 15:31:18

chxchxkkk 发表于 2020-5-5 09:38
if(fabs(a)

啊啊是的呢,谢谢您!!
页: [1]
查看完整版本: 二维数组中的运算