A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include <stdio.h>
//#define GRAND 10.00
#define TIME 40//超过40小时为加班
#define OVERTIME 1.5//加班的时间按1.5倍计算
#define A_TAX 300   //税率   前300美元为15%
#define B_TAX 150   //      下一个150美元为20%
#define A_RATE 0.15 //      余下的为25%
#define B_RATE 0.20 //
#define C_RATE 0.25 //
int get_int(void);
int main(int argc, const char * argv[]) {

    float times,basic,salary=0,taxes=0,net_pay=0;

    printf("Enter the number corresonding to the desired pay rate or action:\n");

    printf("1)$8.75/hr\t\t\t2)$9.33/hr\n");
    printf("3)$10.00/hr\t\t\t4)$11.20/hr\n");
    printf("5)quit\n");

    switch (get_int()) {
        case 1:
            basic=8.75;
            break;

        case 2:
            basic=9.33;
            break;

        case 3:
            basic=10.00;
            break;

        case 4:
            basic=11.20;
            break;

        default:
            printf("quit\n");
            return (0);//退出程序
    }

    printf("You have select $%.2lf\n",basic);

    printf("请输入你一周的工作时间:");

    scanf("%f",&times);

    if (times>=0){

       if (times<=TIME) { //没有加班

           salary=times*basic;

           if (salary<=300)
           {
               taxes=salary*A_RATE;
               net_pay=salary-taxes;
           }
           if (salary>300)
           {
               taxes=300*A_RATE+(salary-300)*B_RATE;
               net_pay=salary-taxes;
           }

       }else{             //加班后

           salary=(TIME+(times-TIME)*OVERTIME)*basic;

           if (salary<=A_TAX+B_TAX)
           {
               taxes=A_TAX*A_RATE+(salary-A_TAX)*B_RATE;
               net_pay=salary-taxes;
           }else
           {
               taxes=A_TAX*A_RATE+B_TAX*B_RATE+(salary-A_TAX-B_TAX)*C_RATE;
               net_pay=salary-taxes;
           }
       }

        printf("您的薪资为%.2f,交税%.2f,净工资%.2f.\n",salary,taxes,net_pay);

    }else

        printf("您的输入有误。。。\n");

    return 0;
}
int get_int(void){//得到一个合适的数,滤除非法数

    int num;
    char str[40];
    while (scanf("%d",&num)!=1) {

        gets(str);
        printf("error!%s is not an number.input again.\n",str);
    }
    while (getchar()!='\n')
        ;
        return num;

}

11 个回复

倒序浏览
是太乱了
回复 使用道具 举报
可以先把问题说出来再把代码贴出来。
回复 使用道具 举报
yll 中级黑马 2015-11-20 21:09:01
板凳

#include <stdio.h>
#include <ctype.h>          //需要调用tolower()函数 大转小
#define ARTICHOKE 1.25//朝鲜蓟的售价是1.25美元/磅
#define BEET 0.65           //甜菜的售价
#define CARROT 0.89         //胡萝卜的售价
#define DISCONUT_LIMIT 100           //满100美元的订单提供5%的打折优惠
#define DISCOUNT_RATE 0.05
#define FREIGHT_FEE1 3.5
#define FREIGHT_LIMIT1 5
#define FREIGHT_FEE2 10.00
#define FREIGHT_LIMIT2 20   
#define FREIGHT_FEE3 8
#define FREIGHT_RATE 0.1
int main(int argc, const char * argv[]) {
    char ch;
    double artichoke=0,beet=0,carrot=0;//磅数
    double sum,discount,freight;
   
    printf("Please select your vegetable:a,b,c,q\n");
    printf("a.artichoke price:$%.2f\n",ARTICHOKE);
    printf("b.beet price:$%.2f\n",BEET);
    printf("c.carrot price:$%.2f\n",CARROT);
    printf("q.end\n");
    printf("(price as dollars per pound)\n");
    while ((ch=tolower(getchar()))!='q') {//tolower大写转小写·
        switch (ch) {
            case 'a':
                printf("How many pounds of artichokes do you want ?");
                scanf("%lf",&artichoke);
                printf("Please select your vegetable:a,b,c,q\n");
                continue;
               
            case 'b':
                printf("How many pounds of beets do you want ?");
                scanf("%lf",&beet);
                printf("Please select your vegetable:a,b,c,q\n");
                continue;
               
            case 'c':
                printf("How many pounds of carrots do you want ?");
                scanf("%lf",&carrot);
                printf("Please select your vegetable:a,b,c,q\n");
                continue;
               
            default:
                break;
        }
    }
   
   
    printf("%10s%10s%10s%10s\n"," ","artichoke","beet","carrot");
    printf("%10s%10.2lf%10.2lf%10.2lf\n","price",ARTICHOKE,BEET,CARROT);
    printf("%10s%10.2lf%10.2lf%10.2lf\n","pound",artichoke,beet,carrot);
    printf("%10s%10.2lf%10.2lf%10.2lf\n","charge",ARTICHOKE*artichoke,BEET*beet,CARROT*carrot);
    sum=ARTICHOKE*artichoke+BEET*beet+CARROT*carrot;
    if (sum>DISCONUT_LIMIT) {
        discount=sum*DISCOUNT_RATE;
    }else
        discount=0;
    printf("discount:%.2lf\n",discount);
    if (artichoke+beet+carrot<=5) {
        freight=3.50;
    }else if (artichoke+beet+carrot<20){
        freight=10;
    }else
        freight=8+(artichoke+beet+carrot)*0.1;
    printf("freight:%.2f\n",freight);
    sum=sum-discount+freight;
    printf("sum:%.2f\n",sum);
            
    return 0;
}
回复 使用道具 举报
yll 中级黑马 2015-11-22 19:53:39
报纸

#include <stdio.h>
#include <ctype.h>
char get_first(void);
float get_float(void);
int main(int argc, const char * argv[])
{
    char ch;
    float first_number,second_number;
   
    //提示用户输选择运算符号或停止
    while(1)
    {
    printf("请选择您的选项:\n");
    //打印运算符号或停止
    printf("a. add          s. subtract\n");
    printf("m. multiply     d. divide\n");
    printf("q. quit\n");
    ch=get_first();
        if (ch!='a'&&ch!='s'&&ch!='m'&&ch!='d')
        {
            printf("Bye!\n");
            break;
        }
    //接受运算符号或停止

    //提示用户输入第一个数 以浮点数形式
    printf("Enter first number:");
    first_number=get_float();
   
      //如果输入的不是数 要提示输入的不是数 并在次请求输入
      //提示用户输入第二个数
    printf("Enter second number:");
    second_number=get_float();
        //如果输入的不是数 要提示输入的不是数 并在次请求输入
        //如果第二个数是0 该程序应该提醒用户输入一个新的值
    while (ch=='d'&&second_number==0)
    {
        printf("Enter a number other than 0:");
        second_number=get_float();
    }
        switch (ch)
        {
            case 'a':
                printf("%.2f+%.2f=%.2f\n",first_number,second_number,first_number+second_number);
                break;
               
            case 's':
                printf("%.2f-%.2f=%.2f\n",first_number,second_number,first_number-second_number);
                break;
               
            case 'm':
                printf("%.2f*%.2f=%.2f\n",first_number,second_number,first_number*second_number);
                break;
               
            case 'd':
                printf("%.2f/%.2f=%.2f\n",first_number,second_number,first_number/second_number);
                break;
               
               
               
            default:
                break;
        }
    }
    return 0;
}
float get_float(void){
    float num;
    char str[40];
   
    while (scanf("%f",&num)!=1) {
        gets(str);
        printf("%s is not a number,such as 2.5,-1.78E8,or 3:\n",str);
    }
    while (getchar()!='\n');
    return num;
}
char get_first(void){
        int ch;
        while (isspace(ch=getchar()));
        while (getchar()!='\n');
        return ch;
}
回复 使用道具 举报
直接不敢看了
回复 使用道具 举报
yll 中级黑马 2015-11-23 08:41:16
7#

.....这么可怕么0.0
回复 使用道具 举报
注释太简单了
回复 使用道具 举报
终于意识到英语的重要性了听说下雨天,单词和代码最配哦!
回复 使用道具 举报
不要全部写在main函数里  可以用函数分功能写 只在主函数里定义一些变量和调用函数方法
回复 使用道具 举报
jacku 来自手机 中级黑马 2015-11-23 19:52:18
11#
该去记记单词了。
回复 使用道具 举报
yll 发表于 2015-11-23 08:41
.....这么可怕么0.0

不不,是我水平太低,我才学了没多久
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马