| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1362 人关注过本帖
标题:小弟不才,做了个计算器,大家帮我看看
只看楼主 加入收藏
爱得心好累
Rank: 2
等 级:论坛游民
帖 子:60
专家分:24
注 册:2009-11-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
小弟不才,做了个计算器,大家帮我看看
我做了一个我们厂里计算工资的东西,附上程序和源码,大家帮我看看。怎样改进一下更好?
用第2个功能,就是计算器的那个。怎么才能不要让小数点后面不要有那么多0啊?看着不舒服。怎样才能改得有多少位小数就显示多少位?
两用计算器.rar (38.46 KB)


程序代码:
#include "stdio.h"    
#include "stdlib.h"
void main()
{
    float gongshi,dixinjinge,jiabanshijian,jiabanjinge,gongzi;
    int n,se;    
    char *s,*p,*t;
    p=("\n                                 欢 迎 使 用!\n________________________________________________________________________________");
    while(*p!='\0')
    {
        putchar(*p);
        p++;
        _sleep(35);
    }
    printf("please choose:\n  1- 嘉盈盛实业有限公司(喇叭部)工资计算器\n  2- 计算器(计算两个数的和、差、积、商)\n");
    printf("________________________________________________________________________________");
    scanf("%d",&se);
if(se==1)
{
    printf("您选择使用 - 嘉盈盛实业有限公司(喇叭部)工资计算器\n\n");
    printf("请设置底薪(元/每小时)  ");
    scanf("%f",&dixinjinge);
    printf("底薪设置为每小时%.2f元\n\n",dixinjinge);
    printf("请设置加班费(元/每小时)  ");
    scanf("%f",&jiabanjinge);
    printf("加班费设置为每小时%.2f元\n\n",jiabanjinge);
    for(n=0;1;n++)
    {
        printf("请输入工时(小时)  ");
        scanf("%f",&gongshi);
        if(gongshi>208)
        {
            jiabanshijian=gongshi-208;
            gongzi=208*dixinjinge+jiabanshijian*jiabanjinge+50;
            printf("经计算得%.2f元(包括全勤奖)\n补助和扣除部分,请另行计算\n________________________________________________________________________________\n",gongzi);
        }
        else
            printf("经计算得%.2f元(包括全勤奖)\n补助和扣除部分,请另行计算\n________________________________________________________________________________\n",gongshi*dixinjinge+50);
    }
}
else if(se==2)
    printf("您选择使用 - 计算器\n\n");
    for(n=0;1;n++)
    {
        float num1,num2,num3;
        char c;
        scanf("%f%c%f",&num1,&c,&num2);
        switch(c)
    {
        case'+':num3=num1+num2;
            printf("%f%c%f=%f\n\n",num1,c,num2,num3);
        break;
        case'-':num3=num1-num2;
            printf("%f%c%f=%f\n\n",num1,c,num2,num3);
        break;
        case'*':num3=num1*num2;
            printf("%f%c%f=%f\n\n",num1,c,num2,num3);
        case'/':
            {
                if(num2==0)
                    printf("除数不能为0\n\n");
                else
                {
                    num3=num1/num2;
                    printf("%f%c%f=%f\n\n",num1,c,num2,num3);
                }
            }
        }        
    }
}

 
搜索更多相关主题的帖子: 计算器 
2009-12-18 23:37
爱得心好累
Rank: 2
等 级:论坛游民
帖 子:60
专家分:24
注 册:2009-11-22
收藏
得分:0 
自己顶一个

[url]http://shishangxiaowu277.[/url]出售时尚女装,话费、QQ、以及游戏充值。价格实惠
2009-12-18 23:38
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:15 
写的还行。。要控制小数点的话,格式化输出的时候"%f"改为"%.1f"这种类型就可以了,'.'表示控制小数点,后面的数字表示保留几位小数。。。

建议:
1、选了一种之后好像退不出来,只能一直算。。。(除了直接退出)
2、选择普通计算机的时候没有输入的提示,不看代码根本不知道怎么输入是正确的。。建议加下说明。。。
3、缺少纠错的处理,不小心输入错误的话,就只能关掉重来了。。
。。。。
2009-12-19 00:35
爱得心好累
Rank: 2
等 级:论坛游民
帖 子:60
专家分:24
注 册:2009-11-22
收藏
得分:0 
以下是引用lijm1989在2009-12-19 00:35:00的发言:

写的还行。。要控制小数点的话,格式化输出的时候"%f"改为"%.1f"这种类型就可以了,'.'表示控制小数点,后面的数字表示保留几位小数。。。

建议:
1、选了一种之后好像退不出来,只能一直算。。。(除了直接退出)
 ...
哦,谢谢指导。看来做的东西应该多拿出来大家一起看,有助改进啊

[url]http://shishangxiaowu277.[/url]出售时尚女装,话费、QQ、以及游戏充值。价格实惠
2009-12-19 08:13
爱得心好累
Rank: 2
等 级:论坛游民
帖 子:60
专家分:24
注 册:2009-11-22
收藏
得分:0 
以下是引用lijm1989在2009-12-19 00:35:00的发言:

写的还行。。要控制小数点的话,格式化输出的时候"%f"改为"%.1f"这种类型就可以了,'.'表示控制小数点,后面的数字表示保留几位小数。。。
格式化输出的时候"%f"改为"%.1f"   这样的话,好像就只能保留一位小数了,如果有多位小数的话,结果就不准确了吧?

[url]http://shishangxiaowu277.[/url]出售时尚女装,话费、QQ、以及游戏充值。价格实惠
2009-12-19 08:17
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:5 
那就定义double吧。
2009-12-19 09:06
爱得心好累
Rank: 2
等 级:论坛游民
帖 子:60
专家分:24
注 册:2009-11-22
收藏
得分:0 
double似乎也不行吧,如果是".1f"的话,就只有一位小数

[url]http://shishangxiaowu277.[/url]出售时尚女装,话费、QQ、以及游戏充值。价格实惠
2009-12-19 09:12
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
我上面说的,"%.1f"只是个例子,其中的“.”表示控制小数,后面跟的数字就是保留的小数位数,如果你想保留两位小数的话,就改成"%.2f"就行了,不过float的精度不高,有效位数只有6-7位,要精确点的话就用double双精度吧。。控制小数的时候是一样的,"%.2lf"...
2009-12-19 12:37
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
以下是引用爱得心好累在2009-12-19 08:13:36的发言:

哦,谢谢指导。看来做的东西应该多拿出来大家一起看,有助改进啊
的确,不过现在肯去动手学的人不多啊。。LZ加油···
2009-12-19 12:39
爱得心好累
Rank: 2
等 级:论坛游民
帖 子:60
专家分:24
注 册:2009-11-22
收藏
得分:0 
以下是引用lijm1989在2009-12-19 12:37:43的发言:

我上面说的,"%.1f"只是个例子,其中的“.”表示控制小数,后面跟的数字就是保留的小数位数,如果你想保留两位小数的话,就改成"%.2f"就行了,不过float的精度不高,有效位数只有6-7位,要精确点的话就用double双精度 ...
其实我想要的是程序能够 自适应。有多少位小数就保留多少位,不是把它固定死

[url]http://shishangxiaowu277.[/url]出售时尚女装,话费、QQ、以及游戏充值。价格实惠
2009-12-19 21:27
快速回复:小弟不才,做了个计算器,大家帮我看看
数据加载中...
 
   



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

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