csd1825192977
csd1825192977
采纳率0%
2016-11-18 06:30 阅读 3.1k

求助:C语言while后面内容输入一个字母循环会重复两次

#include
#define wage1 8.75
#define wage2 9.33
#define wage3 10.00
#define wage4 11.20
#define rate1 0.15
#define rate2 0.20
#define rate3 0.25
int main(void)
{
char i;
double wage,time,amount;
printf("1) $8.75/hr\n");
printf("2) $9.33/hr\n");
printf("3) $10.00/hr\n");
printf("4) $11.20/hr\n");
printf("5) quit\n");
printf("Enter the number corresponding to desired pay rate or action:");
while(i!='q')
{
i=getchar();
switch(i)
{
case 'a':printf("工资为$%lf,工作时间为:",wage1),wage=wage1;scanf("%lf",&time);break;
case 'b':printf("工资为$%lf,工作时间为:",wage2),wage=wage2;scanf("%lf",&time);break;
case 'c':printf("工资为$%lf,工作时间为:",wage3),wage=wage3;scanf("%lf",&time);break;
case 'd':printf("工资为$%lf,工作时间为:",wage4),wage=wage4;scanf("%lf",&time);break;
case 'q':printf("您选择了退出。\n");break;
}
if(i=='a'||i=='b'||i=='c'||i=='d')
{
amount=time*wage;
printf("税前工资:%.1lf",amount);
}
if(amount<=300)
amount=amount*(1-rate1);
if(amount<=450&&amount>300)
amount=255+(amount-255)*(1-rate2);
if(amount>450)
amount=375+(amount-375)*(1-rate3);
if(i=='a'||i=='b'||i=='c'||i=='d')
printf("税后工资:%.1lf\n",amount);

printf("Enter again:"); 
}

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • z01014134 z310692516 2016-11-18 06:31

    用了break,就直接while(1)死循环就行了

    点赞 评论 复制链接分享
  • seeze Zedee 2016-11-18 06:42

    应该是你在while循环之前的那一次输入没有赋值给i的关系,while里面应该是没错的

    点赞 评论 复制链接分享
  • jhcconan614 jhcconan614 2016-11-21 14:59

    break只跳出了switch,没有跳出while

    点赞 评论 复制链接分享

相关推荐