鱼C论坛

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

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

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

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

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

x
代码如下:
运行超时,可以麻烦找找问题嘛……qwq
#include<stdio.h>
#include<math.h> 
int main()
{
        float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
        float x;
        int i,j;
        x=fabs(a[0][0]);
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                {
                        if(fabs(a[i][j])<x);
                                x=a[i][j];
                }
                for(j=0;i<3;j++)
                        a[i][j]=a[i][j]/x;
        }
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                        printf("%7.3f",a[i][j]);
        }
        return 0;
} 
最佳答案
2020-5-5 12:59:00
本帖最后由 Cool_Breeze 于 2020-5-5 13:43 编辑
#include<stdio.h>
#include<math.h> 
int main()
{
        float a[3][3]={{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[i][0]);
                for(j=0;j<3;j++)
                {
                        if(fabs(a[i][j])>x)
                                x=a[i][j];
                }
                for(j=0;j<3;j++)
                        a[i][j]=a[i][j]/x;
        }
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                        printf("%7.3f",a[i][j]);
        }
        return 0;
} 
  0.361  0.750  1.000  0.426  0.638  1.000  0.750  1.000  0.317
--------------------------------
Process exited after 0.01162 seconds with return value 0
请按任意键继续. . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-4 22:45:14 | 显示全部楼层
代码的意思是 将数组a的每一行均除以该行上绝对值最大的元素,然后将a数组输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-4 23:31:45 | 显示全部楼层
第13-14行,16-17行,21-22行,应该给if 或者是 for 后面的语句加大括号吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

应该都可叭,我记得如果不加的话 默认是接下来的一行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 00:00:15 | 显示全部楼层
运行超时的问题找着了,第16行那里,我把"j"打成了"i"...
但是运行结果有出入……到底是为啥呢……
Expected                                                      |        Yours
  0.361  0.750  1.000                                                  0.361  0.750  1.000
  0.426  0.638  1.000                                                  0.426  0.638  1.000
  0.750  1.000  0.317                                              |          2.362  3.150  1.000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

啊啊是的!!但是改完运行了一下,和答案还是有出入……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 12:59:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Cool_Breeze 于 2020-5-5 13:43 编辑
#include<stdio.h>
#include<math.h> 
int main()
{
        float a[3][3]={{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[i][0]);
                for(j=0;j<3;j++)
                {
                        if(fabs(a[i][j])>x)
                                x=a[i][j];
                }
                for(j=0;j<3;j++)
                        a[i][j]=a[i][j]/x;
        }
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                        printf("%7.3f",a[i][j]);
        }
        return 0;
} 
  0.361  0.750  1.000  0.426  0.638  1.000  0.750  1.000  0.317
--------------------------------
Process exited after 0.01162 seconds with return value 0
请按任意键继续. . .
想知道小甲鱼最近在做啥?请访问 -> 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这个条件,什么操作都没有,直接下一步了

想知道小甲鱼最近在做啥?请访问 -> 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

欸,我用的是VC++,可能是编译器不一样叭哈哈哈哈哈哈,那还是加上好了嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

啊啊手抖多按了个分号上去【捂脸】,谢谢您啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

明白自己德问题辽,蟹蟹您!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

啊啊是的呢,谢谢您!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-14 01:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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