| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 671 人关注过本帖
标题:疑惑,难道我的编程思想是错误的吗?
只看楼主 加入收藏
lzh253739255
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2013-10-8
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
疑惑,难道我的编程思想是错误的吗?
题目是这样的:输入a,b,c  按从小到大排序。

#include <stdio.h>
main()
{
    int a , b , c ;
    int a1,a2,a3;
    printf("input:");
    scanf("%d%d%d",&a,&b,&c);
    if (a < b && a < c )
    {
        a3 = a;
    }
    if (b < a && b < c)
    {
        a3 = b;
    }
    if (c<b && c<a)
    {
        a3 = c;
    }
    if (a>b && a<c)
    {
        a1 = a;
    }
    if (b>a && b>c)
    {
        a1 = b;
    }
    if (c>a && c>b)
    {
        a1 = c;
    }
    if (a<a1 && a>a3)
    {
        a2 = a;
    }
    if (b<a1 && b>a3)
    {
        a2 = b;
    }
    if (c<a1 && c>a3)
    {
        a2 = c;
    }
    printf("%d,%d,%d\n",a3,a2,a1);
}

以上我输出 1 2 3  输出的结果是正确的。
输入其他数字结果异常。
看了一下。输入其他数字a2,a3,a4赋值不正常。。
这是为什么呢。。
搜索更多相关主题的帖子: include 
2015-01-20 22:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
1个if给1分复杂度,当代码的复杂度超过9,就表示过于复杂,错误的可能性极大。看到自己的代码有这么多if,自己不觉得逻辑肯定有问题么?所以“是否编程思想错误”,答案是很明显的。

授人以渔,不授人以鱼。
2015-01-20 23:03
lzh253739255
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2013-10-8
收藏
得分:0 
回复 2楼 TonyDeng
这道题可以用一个中间值来解的。保证a<b<c。输出a,b,c就行了。
我知道怎么解。。
就是忽然想换一个方式来解..


原来if还不能用这么多次的啊?

那如果是大型程序怎么办...if还不能用多次。。。

程序员应该足够懒,追求一劳永逸,写出来的代码,应是可以反复使用的.
2015-01-20 23:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
大型程序拆解函数,每个函数的规模限制在小复杂度之内。

授人以渔,不授人以鱼。
2015-01-20 23:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
基本上,你这种过于复杂的代码,就算查出错误原因也没什么意义,因为在编程思想的确是有问题的,与其在这种复杂程度上修正代码,不如推翻重新设计解题逻辑。3个数据就这么一大串if,10个、30个、100个数据你怎么写?写程序,不是人家说3个数据,你就真按3个去写的,那样写程度铁定失败。即使不是100个、1000个数据,起码你也要设想是4个、10个的时候怎么办?然后想自己的解题是不是可以推演到足够大的数据规模上?写不出满意的可以推广的代码,就表示没做好。不要以为针对性地解决个别问题就算是“懂了”。

[ 本帖最后由 TonyDeng 于 2015-1-20 23:30 编辑 ]
收到的鲜花
  • lzh2537392552015-01-20 23:35 送鲜花  3朵   附言:我很赞同

授人以渔,不授人以鱼。
2015-01-20 23:27
lzh253739255
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2013-10-8
收藏
得分:0 
回复 4楼 TonyDeng
不知所云。

应该是我学习的知识还不够。

不过已经了解到了这样编写会使程序复杂而导致程序出错,也算补充了一点课外知识。

刚才去网上查了一下,都说有一些其他方法可以解决这种代码复杂的问题。

谢谢啦。

看样子继续学习应该会逐渐弄明白这个疑惑。

程序员应该足够懒,追求一劳永逸,写出来的代码,应是可以反复使用的.
2015-01-20 23:27
lzh253739255
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2013-10-8
收藏
得分:0 
回复 5楼 TonyDeng
嗯。..
我觉得你说的太对了。
受教了,谢谢。

现在我的经验还太浅薄了,还是得多做例子才行.。

程序员应该足够懒,追求一劳永逸,写出来的代码,应是可以反复使用的.
2015-01-20 23:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:6 
学编程的性格,需要有点洁癖:当某种雷同的代码出现2次时,就会坐立不安,出现3次以上时,应觉得不可忍受。你看看自己的代码,一个把值赋给中间变量的功能,针对3个数据反复出现多次,这怎么可以忍受?!程序员应该足够懒,追求一劳永逸,写出来的代码,应是可以反复使用的、用于越多的地方越好,这样才不用反复写雷同的东西,没有这种懒性,把键盘敲得飞快、固定的套路练得熟练无比,其实是害了自己。我见过太多这样的学生和IT人了,没有一点追求,纯粹是混饭吃的。

授人以渔,不授人以鱼。
2015-01-20 23:42
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:3 
设计的解题方法不好

我不是砖家,要努力成为砖家。
2015-01-21 09:27
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:1 
我仅针对语文方面的造句提个意见:楼主应该是编程思路有问题,而不是编程思想。目前谈思想还有点远。

[qq]949654600[/qq]
2015-01-21 10:08
快速回复:疑惑,难道我的编程思想是错误的吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030143 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved