标题:目前为止写的最长的程序了...虽然很简单...
取消只看楼主
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
结帖率:100%
 问题点数:0 回复次数:2 
目前为止写的最长的程序了...虽然很简单...
程序代码:
/* 编写程序, 要求输入一周中的工作小时数,然后打印工资总额,税金以及净工资

 * 作如下假设:

 * a. 基本工资等级            使用switch选择工资等级 

 *        1. 8.75美元/小时

 *        2. 9.33美元/小时

 *        3. 10.00美元/小时

 *        4. 11.20美元/小时
  

 * b. 加班 (超过40小时) = 1.5 倍的时间

 * c. 税率

 *            前300美元为15%
             下一个 150 美元为20%
            余下的为25%
*/

 
/*程序目标: 打印工资总额,税金,净工资 */

/*
分析: 
用户输入基本工资等级
判断是否有效
无效:(返回继续输入)
有效: 
用户输入每周工作的小时数
判断是否是数字
不是(继续输入)
是 

基本工资 : 工资等级 * 小时数 
加班 :基本工资 + ((小时数 - 40) * 1.5)
总工资 = 基本工资 + 加班费 

计算税率: 
0 < 总工资 < 300, 基本税: 总工资 * 0.15
300 < 总工资 < 450 第一档加税: 基本税 + (总工资 - 300) * 0.20
总工资 > 450 : 基本税 + 第一档加税 + (总工资 - 450) * 0.25

打印 工资总额, 税金 , 净工资 
*/ 
#include <stdio.h>

#define BASE_T 40                //基本工作时间 
#define OVER_T 1.5F                //加班时间倍数  
#define RATE1 0.15F                //第一档税率 
#define RATE2 0.20F                //第二档税率 
#define RATE3 0.25F                //第三档税率
#define TAX1 300                //第二档税起征点
#define TAX2 450                //第三档税起征点 
#define BASE_TAX1 (TAX1 * RATE1)    //第一档税费最大值 
#define BASE_TAX2 ((TAX2-TAX1) * RATE2)    //第二档税费最大值 

void menu(void);

int main(void)
{
    float salary;    //工资总额
    float tax;        //税费 
    int hour;            //每周工作小时数
    char select;            //菜单选项
    float BASE_D;        //每小时基本工资 
    int flag = 1;
    
    menu();    //打印菜单 
    while(flag) 
    {
        select = getchar();
        
        while(getchar() != '\n')        //清空缓存 
            continue;
    
        switch(select)                        //选择税率 
        {
            case '1':BASE_D = 8.75F; break;    
            case '2':BASE_D = 9.33F; break;
            case '3':BASE_D = 10.00F; break;
            case '4':BASE_D = 11.20F; break;
            case '5':flag = 5; break;            
            default:flag = 0;
        }
        if(flag == 5) break;            //选择 5 退出程序 
        
        if(!flag)
        {
            flag = 1;
            printf("Please enter a number between 1~5 : ");
            continue;
        }
        printf("Input the weekly working time(hours): ");
        while(scanf("%d", &hour) != 1)        //用户输入每周工作时间
        {
            printf("Invalid character.\nPlease enter a number: ");    //非数字重新输入
             
            while(getchar() != '\n')        //清空缓存 
                continue;
            
        }
        salary = 0;        //工资总额清零 
        tax = 0;        //税费清零 
        
        if(hour < BASE_T)             //工作时间小于40小时 
            salary += hour * BASE_D;
        else                         //工作时间大于40小时, 40小时基本工资 + 超出40小时部分的工资 
            salary += BASE_D * BASE_T + ((hour - BASE_T) * OVER_T) * BASE_D;
            
        if(salary <= TAX1)                        //总工资在300以内, 应交税款 
            tax += salary * RATE1;
        else if(salary <= TAX2)                    //总工资在300~450之间, 应交税款 
            tax += BASE_TAX1 + (salary - TAX1) * RATE2;
        else
            tax += BASE_TAX1 + BASE_TAX2 + (salary - TAX2) * RATE3;    //总工资超过450部分, 应交税款 
        
        printf("工资总额: %10.2f\n税    金: %10.2f\n净 工 资: %10.2f\n",
                salary, tax, salary - tax);
            
        while(getchar() != '\n')        //清空缓存 
                continue;
        menu();        //本次计算结束,重新打印菜单 
    }
    printf("\nBye~");
    return 0;
}

void menu(void)
{
    printf("*****************************************************************\n");
    printf("Enter the number corresponding to the desired pay rate or action:\n");
    printf("1) $8.75/hr                     2) $9.33/hr\n");
    printf("3) $10.00/hr                    4) $11.20/hr\n");
    printf("5) quit\n");
    printf("*****************************************************************\n");
    printf("Please select(1 ~ 5): ");
}


[ 本帖最后由 Ryker 于 2013-5-3 17:44 编辑 ]
搜索更多相关主题的帖子: 工资 编写程序 color 
2013-05-03 17:37
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
得分:0 
回复 3楼 孤寂的小菜
哦。。

当时在网吧。要下机了,就帖在这里。。
2013-05-03 23:20
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
得分:0 
回复 5楼 Han_FlyB
我照着CPP学的

ANSI C标准..
2013-05-04 13:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-406138-1-1.html




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

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