| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1466 人关注过本帖
标题:都来看看,新手发帖了。
只看楼主 加入收藏
qq372421150
Rank: 2
等 级:论坛游民
帖 子:14
专家分:18
注 册:2010-2-5
收藏
得分:0 
回复 6楼 Devil_W
什么样的 贴才不是垃圾贴呢 ?
2010-02-07 17:11
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用qq372421150在2010-2-7 17:06:00的发言:

我用的是VC6.0所以引用那头文件是为了能用system();
system 是标准函数,在 stdlib.h 里就有。
2010-02-07 21:54
悠哉悠哉
Rank: 2
等 级:论坛游民
帖 子:19
专家分:15
注 册:2010-2-7
收藏
得分:0 
晕…太大长了吧
2010-02-07 22:13
Devon_Ye
Rank: 4
来 自:广东
等 级:业余侠客
帖 子:124
专家分:282
注 册:2010-1-7
收藏
得分:0 
+,-,*,/ 四个子函数完全可以合并到主函数里。
2010-02-07 22:17
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
其实这种东西没有什么改进不改进的。因为本身这个小程序就只有很简单的功能。
一般来说,人们期望改进的是功能强大或灵活性很高的东西。
改进可以从程序表面上给人的感观,程序本身的强壮,或者是运行时表现的性能。

有人说这是垃圾帖,别放在心上。初学就要自己有信心,坚持学下去。


你问如何缩短程序的长度,倒是有一些方法:
首先那几个小函数有更简短的写法,比如:(你这些函数里,除了 add 以外,其它的函数名起的有意思呀~)
程序代码:
double add(double x, double y)
{
    return x + y;
}

这是雕虫小技,一般编译器都能做这样的优化。
但像这样几乎没什么功能的函数,不单分出来也行(比如那个 end 只是包装了一下 exit 我觉得就没什么必要)。这样代码量就少了。

还有那个 switch 语句,
程序代码:
    switch(n)
    {
    case 1: system("cls");
            printf("你选择了加法运算\n");
            printf("请你输入第一个数:");
            scanf("%lf",&num1);
            printf("请你输入第二个数:");
            scanf("%lf",&num2);
            p=add;
            c=(*p)(num1,num2);
            printf("结果是:%lf\t\n",c);break;
    case 2:system("cls");
            printf("你选择了减法运算\n");
            printf("请你输入第一个数:");
            scanf("%lf",&num1);
            printf("请你输入第二个数:");
            scanf("%lf",&num2);
            p=cut;
            c=(*p)(num1,num2);
            printf("结果是:%lf\t\n",c);break;
    case 3: system("cls");
            printf("你选择了乘法运算\n");
            printf("请你输入第一个数:");
            scanf("%lf",&num1);
            printf("请你输入第二个数:");
            scanf("%lf",&num2);
            p=ride;
            c=(*p)(num1,num2);
            printf("结果是:%lf\t\n",c);break;
    case 4: system("cls");
            printf("你选择了除法运算\n");
            printf("请你输入第一个数:");
            scanf("%lf",&num1);
            printf("请你输入第二个数:");
            scanf("%lf",&num2);
            p=Remov;
            c=(*p)(num1,num2);
            printf("结果是:%lf\t\n",c);break;
    case 5: system("cls");
            end();break;
    default: system("cls");
            printf("---ERROR----\n");
    }

你没觉得,重复的东西很多吗?有想压缩代码也有办法:
程序代码:
    system("cls");
    switch(n)
    {
    case 1: printf("你选择了加法运算\n");
            p=add; break;
    case 2: printf("你选择了减法运算\n");
            p=cut; break;
    case 3: printf("你选择了乘法运算\n");
            p=ride; break;
    case 4: printf("你选择了除法运算\n");
            p=Remov; break;
    case 5: exit(0);
            break;
    default: printf("---ERROR----\n");
             continue;
    }
    printf("请你输入第一个数:");
    scanf("%lf",&num1);
    printf("请你输入第二个数:");
    scanf("%lf",&num2);
    c=(*p)(num1,num2);
    printf("结果是:%lf\t\n",c);

而且这里没有使用全局函数指针的必要,如果可以,应该避免如此使用。

以上这些建议其实都是雕虫小技,没什么实质的作用。这是从编码方面讨论的。


另外就是感观方面:
我虽然并没有编译运行的你的程序,但一想也知道。你没觉得你这个程序的“废话”特别多吗?
比如你可以考虑一个经常要用你这个程序的人,他可以清楚的记住 1,2,3,4,5 代表的意思,还每次都显示,是不是很烦?
如果他是想用你这个程序计算这个式子 5 * (3 + 7) (这是很有可能的一件事,如果数大一点,口算不便,用用计算器也很正常)
无奈你的程序还得一遍遍的提示他输入第一个数第二个数什么的。关键他还得自己背下,计算的中间结果 (3 + 7) 是多少。
所以你这个程序,其实人们根本不愿意使用,因为用着太麻烦。这个程序不仅不能为使用者服务,还要我们为之忍受许多,是很不好的。


是不是你现在也发现这个程序有很多改进的地方了?
如果我说的后面这些缺点你能改进,就是真正的改进了。这些不是雕虫小技,虽然对有些高手来说也不是很难,但如果你能实现这些,才是本质上把这个程序的质量提高了一点。
2010-02-07 22:37
无知青年
Rank: 2
等 级:论坛游民
帖 子:9
专家分:15
注 册:2010-2-7
收藏
得分:0 
我是新手 还没学明白呢
2010-02-08 09:30
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
16 楼这个头像看着巨眼熟呀~~ 这是什么人的小号吗?
2010-02-08 22:23
qq372421150
Rank: 2
等 级:论坛游民
帖 子:14
专家分:18
注 册:2010-2-5
收藏
得分:0 
回复 15楼 pangding
谢谢你的评判。真的很感激你,在你的鼓励下,我会更加努力的。分就全给你了。。。


谢谢。。
现在根据你的提议我已全部改进了。
2010-02-11 21:35
阿89327710
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-2-12
收藏
得分:0 
觉得 很水啊
2010-02-12 11:48
qq372421150
Rank: 2
等 级:论坛游民
帖 子:14
专家分:18
注 册:2010-2-5
收藏
得分:0 
回复 19楼 阿89327710
对于一个新手来说就不怎么水了哦。
2010-02-12 18:59
快速回复:都来看看,新手发帖了。
数据加载中...
 
   



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

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