鱼C论坛

 找回密码
 立即注册
查看: 1189|回复: 13

[已解决]二维数组中的运算

[复制链接]
发表于 2020-5-4 22:44:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下:
运行超时,可以麻烦找找问题嘛……qwq
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.         float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
  6.         float x;
  7.         int i,j;
  8.         x=fabs(a[0][0]);
  9.         for(i=0;i<3;i++)
  10.         {
  11.                 for(j=0;j<3;j++)
  12.                 {
  13.                         if(fabs(a[i][j])<x);
  14.                                 x=a[i][j];
  15.                 }
  16.                 for(j=0;i<3;j++)
  17.                         a[i][j]=a[i][j]/x;
  18.         }
  19.         for(i=0;i<3;i++)
  20.         {
  21.                 for(j=0;j<3;j++)
  22.                         printf("%7.3f",a[i][j]);
  23.         }
  24.         return 0;
  25. }
复制代码
最佳答案
2020-5-5 12:59:00
本帖最后由 Cool_Breeze 于 2020-5-5 13:43 编辑
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.         float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
  6.         float x;
  7.         int i,j;
  8.         for(i=0;i<3;i++)
  9.         {
  10.                 x=fabs(a[i][0]);
  11.                 for(j=0;j<3;j++)
  12.                 {
  13.                         if(fabs(a[i][j])>x)
  14.                                 x=a[i][j];
  15.                 }
  16.                 for(j=0;j<3;j++)
  17.                         a[i][j]=a[i][j]/x;
  18.         }
  19.         for(i=0;i<3;i++)
  20.         {
  21.                 for(j=0;j<3;j++)
  22.                         printf("%7.3f",a[i][j]);
  23.         }
  24.         return 0;
  25. }
复制代码

  1.   0.361  0.750  1.000  0.426  0.638  1.000  0.750  1.000  0.317
  2. --------------------------------
  3. Process exited after 0.01162 seconds with return value 0
  4. 请按任意键继续. . .
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-4 22:45:14 | 显示全部楼层
代码的意思是 将数组a的每一行均除以该行上绝对值最大的元素,然后将a数组输出
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-4 23:31:45 | 显示全部楼层
第13-14行,16-17行,21-22行,应该给if 或者是 for 后面的语句加大括号吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-4 23:55:57 | 显示全部楼层
THU_LSM 发表于 2020-5-4 23:31
第13-14行,16-17行,21-22行,应该给if 或者是 for 后面的语句加大括号吧

应该都可叭,我记得如果不加的话 默认是接下来的一行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 00:00:15 | 显示全部楼层
运行超时的问题找着了,第16行那里,我把"j"打成了"i"...
但是运行结果有出入……到底是为啥呢……
  1. Expected                                                      |        Yours
  2.   0.361  0.750  1.000                                                  0.361  0.750  1.000
  3.   0.426  0.638  1.000                                                  0.426  0.638  1.000
  4.   0.750  1.000  0.317                                              |          2.362  3.150  1.000
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 09:38:24 | 显示全部楼层
if(fabs(a[i][j])<x);  ===》这里应该是大于x吧,比x大的才赋值给x。你这样运算,x是最小值了
      x=a[i][j];        
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 12:04:34 | 显示全部楼层

啊啊是的!!但是改完运行了一下,和答案还是有出入……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 12:59:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Cool_Breeze 于 2020-5-5 13:43 编辑
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.         float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
  6.         float x;
  7.         int i,j;
  8.         for(i=0;i<3;i++)
  9.         {
  10.                 x=fabs(a[i][0]);
  11.                 for(j=0;j<3;j++)
  12.                 {
  13.                         if(fabs(a[i][j])>x)
  14.                                 x=a[i][j];
  15.                 }
  16.                 for(j=0;j<3;j++)
  17.                         a[i][j]=a[i][j]/x;
  18.         }
  19.         for(i=0;i<3;i++)
  20.         {
  21.                 for(j=0;j<3;j++)
  22.                         printf("%7.3f",a[i][j]);
  23.         }
  24.         return 0;
  25. }
复制代码

  1.   0.361  0.750  1.000  0.426  0.638  1.000  0.750  1.000  0.317
  2. --------------------------------
  3. Process exited after 0.01162 seconds with return value 0
  4. 请按任意键继续. . .
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 13:29:44 | 显示全部楼层
                for(j=0;j<3;j++)
                {
                        if(fabs(a[i][j])<x);
                                x=a[i][j];
                }中 if(fabs(a[i][j])<x);这一句多加了个分号,然后这样就表示判断了if这个条件,什么操作都没有,直接下一步了

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 15:03:32 | 显示全部楼层
Marcccccy 发表于 2020-5-4 23:55
应该都可叭,我记得如果不加的话 默认是接下来的一行

我的编译器如果像你这样不加括号写的话都不通过编译诶。。。
Apple LLVM version 10.0.0 (clang-1000.10.44.4)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 15:21:52 | 显示全部楼层
THU_LSM 发表于 2020-5-5 15:03
我的编译器如果像你这样不加括号写的话都不通过编译诶。。。
Apple LLVM version 10.0.0 (clang ...

欸,我用的是VC++,可能是编译器不一样叭哈哈哈哈哈哈,那还是加上好了嘿嘿
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 15:26:18 | 显示全部楼层

啊啊手抖多按了个分号上去【捂脸】,谢谢您啦!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 15:28:05 | 显示全部楼层

明白自己德问题辽,蟹蟹您!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 15:31:18 | 显示全部楼层

啊啊是的呢,谢谢您!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 14:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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