| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 777 人关注过本帖
标题:[求助]我自己写的,编译不通过
只看楼主 加入收藏
TimerTracker
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-1-8
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
[求助]我自己写的,编译不通过
#include <stdio.h>
#define BREAK1 300
#define BREAK2 450
#define FIRST 0.15
#define NEXT 0.2
#define REST 0.25
int get_int(void);
int get_first(void);
int get_choice(void);
float get_remony(float tota);
int main()
{
    int choice;float h,pay,level,total;
    while((choice=get_choice())!=5)
    {
        switch(choice)
        {
            case 1:
                level=8.99;
                break;
                case 2:
                    level=9.5;
                    break;
                    case 3:
                        level=10.00;
                        break;
                        case 4:
                            level=11.00;
                            break;
        }
        h=get_first();
        total=h*level;
        pay=get_remony(total);
    }
    printf("您的总工资是%f需要交的税是%f净工资是%f\n",total,pay,total-pay);
}
int get_choice(void)
{
    int choice;
    printf("请输入你的工资等级\n");
    printf("1)8.99/hr\t2)9.5/hr\n");
    printf("3)10.00/hr\t4)11.00\n");
    printf("5)退出\n");
    choice=get_int();
    return choice;
}
int get_int(void)
{
    int a;char ch;
    while((scanf("%d",&a))!=1)
    {
        while((ch=getchar())!='\n')
        continue;
            putchar(ch);
    printf("不是一个整数请输入符合的数值\n");
    }
   
   
        while(a<1||a>5)
        {
            printf("%d不在范围内请输入另一个整数\n",a);
            scanf("%d",&a);
        }
        return a;
}
int get_first(void)
{
    double h;
    printf("请输入您的工作时间\n");
    char ch;
    while((scanf("%d",&h))!=1)
   
        {
            while((ch=getchar())!='\n')
            continue;
        putchar(ch);
    printf("不是一个整数请输入符合的数值\n");
        }
   
   
    if(h>40)
    h*=1.5;
return h;

}
float get_remony(float tota)
{
    float pay;
    if(tota<BREAK1)
    pay=BREAK1*FIRST;
    else if(tota>BREAK1&&tota<BREAK2)
    pay=(tota-BREAK1)*NEXT+BREAK1*FIRST;
    else if(tota>BREAK2)
    pay=(tota-BREAK2)*REST+(BREAK2-BREAK1)*NEXT+BREAK1*FIRST;
    return pay;
}


这个怎么改

我觉得就是那个把错误的输入提出的部分错了,这是我个人的观点,只是不知道对不对,求大神指教。
搜索更多相关主题的帖子: include choice 
2017-01-08 14:12
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:10 
应该是错在这里。可以直接判断输入得到的ch是否为1-5的字符,不是就重新输入
2017-01-08 15:27
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:10 
#include <stdio.h>
#define BREAK1 300.0
#define BREAK2 450.0
#define FIRST 0.15
#define NEXT 0.2
#define REST 0.25
int get_int(void);
int get_first(void);
int get_choice(void);
float get_remony(float tota);
int main()
{
    int choice;float h,pay,level,total;
    while((choice=get_choice())!=5)
    {
        switch(choice)
        {
            case 1:
                level=8.99;
                break;
                case 2:
                    level=9.5;
                    break;
                    case 3:
                        level=10.00;
                        break;
                        case 4:
                            level=11.00;
                            break;
        }
        h=get_first();
        total=h*level;
        pay=get_remony(total);
    }
    printf("您的总工资是%f需要交的税是%f净工资是%f\n",total,pay,total-pay);
}
int get_choice(void)
{
    int choice;
    printf("请输入你的工资等级\n");
    printf("1)8.99/hr\t2)9.5/hr\n");
    printf("3)10.00/hr\t4)11.00\n");
    printf("5)退出\n");
    choice=get_int();
    return choice;
}
int get_int(void)
{
    int a;char ch;
    while((scanf("%d",&a))!=1)
    {
        while((ch=getchar())!='\n')
        continue;
            putchar(ch);
    printf("不是一个整数请输入符合的数值\n");
    }
   
   
        while(a<1||a>5)
        {
            printf("%d不在范围内请输入另一个整数\n",a);
            scanf("%d",&a);
        }
        return a;
}
int get_first(void)
{
    double h;
     char ch;
    printf("请输入您的工作时间\n");
   //char ch;                             /////////////////好奇怪提前两行就能编译运行
    while((scanf("%d",&h))!=1)
   
        {
            while((ch=getchar())!='\n')
            continue;
        putchar(ch);
    printf("不是一个整数请输入符合的数值\n");
        }
   
   
    if(h>40)
    h*=1.5;
return h;

}
float get_remony(float tota)
{
    float pay;
    if(tota<BREAK1)
    pay=BREAK1*FIRST;
    else if(tota>BREAK1&&tota<BREAK2)
    pay=(tota-BREAK1)*NEXT+BREAK1*FIRST;
    else if(tota>BREAK2)
    pay=(tota-BREAK2)*REST+(BREAK2-BREAK1)*NEXT+BREAK1*FIRST;
    return pay;
}

我是硬件工程师
2017-01-08 23:11
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
程序代码:
#include <stdio.h>
#define BREAK1 300.0
#define BREAK2 450.0
#define FIRST 0.15
#define NEXT 0.2
#define REST 0.25
int get_int(void);
int get_first(void);
int get_choice(void);
float get_remony(float tota);
int main()
{
    int choice;float h,pay,level,total;
    while((choice=get_choice())!=5)
    {
        switch(choice)
        {
            case 1:
                level=8.99;
                break;
                case 2:
                    level=9.5;
                    break;
                    case 3:
                        level=10.00;
                        break;
                        case 4:
                            level=11.00;
                            break;
        }
        h=get_first();
        total=h*level;
        pay=get_remony(total);

        printf("您的总工资是%f需要交的税是%f净工资是%f\n",total,pay,total-pay); ///放到循环内才能输出
    }
   // printf("您的总工资是%f需要交的税是%f净工资是%f\n",total,pay,total-pay);
}
int get_choice(void)
{
    int choice;
    printf("请输入你的工资等级\n");
    printf("1)8.99/hr\t2)9.5/hr\n");
    printf("3)10.00/hr\t4)11.00\n");
    printf("5)退出\n");
    choice=get_int();
    return choice;
}
int get_int(void)
{
    int a;char ch;
    while((scanf("%d",&a))!=1)
    {
        while((ch=getchar())!='\n')
        continue;
            putchar(ch);
    printf("不是一个整数请输入符合的数值\n");
    }
  

  

        while(a<1||a>5)
        {
            printf("%d不在范围内请输入另一个整数\n",a);
            scanf("%d",&a);
        }
        return a;
}
int get_first(void)
{
    double h;
     char ch;
    printf("请输入您的工作时间\n");
   //char ch;                             /////////////////好奇怪提前两行就能编译运行
    while((scanf("%d",&h))!=1)
  

        {
            while((ch=getchar())!='\n')
            continue;
        putchar(ch);
    printf("不是一个整数请输入符合的数值\n");
        }
  

  

    if(h>40)
    h*=1.5;
return h;

}
float get_remony(float tota)
{
    float pay;
    if(tota<BREAK1)
    pay=BREAK1*FIRST;
    else if(tota>BREAK1&&tota<BREAK2)
    pay=(tota-BREAK1)*NEXT+BREAK1*FIRST;
    else if(tota>BREAK2)
    pay=(tota-BREAK2)*REST+(BREAK2-BREAK1)*NEXT+BREAK1*FIRST;
    return pay;
}

我是硬件工程师
2017-01-08 23:25
快速回复:[求助]我自己写的,编译不通过
数据加载中...
 
   



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

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