鱼C论坛

 找回密码
 立即注册
查看: 3999|回复: 7

循环求助。。。。

[复制链接]
发表于 2013-6-2 12:11:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#define BEI 1.5
#define RATE_300 0.15
#define RATE_450 0.20
#define RATE 0.25
#define HOUR 40
#define JIE1 300
#define JIE2 450
int main (void)
{
int hour;
double time;
double salary,tax,wage;

printf("*********************************************************************\n");
printf("Enter the number corresponding to the desired pay rate or action:\n");
printf("1) $8.75/hr           2) $9.33/hr\n3) $10.00/hr          4) $11.20/hr\n5) quit\n");
printf("*********************************************************************\n");

printf("Please enter the number from 1 to 4: ");
   time = scanf("%d", &hour);
   while(hour!=5 && time == 1)
{
  switch(hour)
  {
  case 1: time = 8.75;
   break;
  case 2: time = 9.33;
   break;
  case 3: time = 10.00;
   break;
  case 4: time = 11.20;
   break;
  case 5: printf("quit!\n");
  scanf("%d",&hour);
   break;
  
  }


printf("Please input your time: ");
scanf("%d",&hour);

if(hour <= HOUR)
{
  salary = hour * time;
}
if(hour > HOUR)
{
  salary = HOUR * time + (hour - HOUR) * time;
}

if(salary <= JIE1)
{
  tax = salary * RATE_300;
}
else if (salary >JIE1 && salary <=JIE2)
{
  tax = JIE1 * RATE_300 + (salary - JIE1) * RATE_450;
}
else
{
  tax = JIE1 * RATE_300 + (JIE2 - JIE1) * RATE_450 + (salary - JIE2) * RATE;
}
wage = salary - tax;

   printf("工资:%.0lf     expenses of taxation:%.0lf     Net wage:%.0lf\n",salary,tax,wage);
printf("Please choose a number again:");
   scanf("%d", &hour);
}
return 0;
}
要求循环  各位同学帮忙看看吧  弄了半天了   
谢谢了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-25 21:52:01 | 显示全部楼层
  10                    没咋看懂,不过希望以后能和大家在鱼C里一起学习!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-25 23:00:07 | 显示全部楼层
代码太长,先说明自己所写的代码的意义,这样我们也好分析些~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-25 23:57:16 | 显示全部楼层
请你
  1. XXXX
复制代码
这种方式写代码 并且这么长的代码请加上注释方便观看 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-26 09:15:12 | 显示全部楼层
double salary,tax,wage;这条语句下面加入一个while(1)或者for(;;),然后用花括号将return 0之前的程序都括起来便可以让程序死循环。
switch中缺少default,别人不一定会输入5,所以程序会输出无效值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-26 09:40:43 | 显示全部楼层
本帖最后由 tsembrace 于 2013-7-26 09:42 编辑

你这程序不能循环的原因在于循环条件中time变了
while(hour!=5 && time == 1)--->此时你的time是scanf语句的返回值,第一次循环返回值为1;进入代码段后time又变成每小时单价了,所以在代码段最后要重设time进行循环条件判断。(我不觉得你这里time的判定条件是必要的)
其他一些细节问题:
1、变量的名称:别起得乱七八糟的,不同功能含义的变量就用不同变量去表示,别像你代码里time和hour一会儿这意思一会儿那意思
2、switch里最好加个default提示选项错误。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-26 09:41:30 | 显示全部楼层
有道理啊有道理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-26 09:46:11 | 显示全部楼层
本帖最后由 tsembrace 于 2013-7-26 09:57 编辑
  1. #include <stdio.h>
  2. #define BEI 1.5
  3. #define RATE_300 0.15
  4. #define RATE_450 0.20
  5. #define RATE 0.25
  6. #define HOUR 40
  7. #define JIE1 300
  8. #define JIE2 450
  9. int main (void)
  10. {
  11. int hour,choice;
  12. double time;
  13. double salary,tax,wage;

  14. printf("*********************************************************************\n");
  15. printf("Enter the number corresponding to the desired pay rate or action:\n");
  16. printf("1) $8.75/hr 2) $9.33/hr\n3) $10.00/hr 4) $11.20/hr\n5)

  17. quit\n");
  18. printf("*********************************************************************\n");

  19. printf("Please enter the number from 1 to 4:\n");
  20. scanf("%d", &choice);
  21. while(choice!=5)
  22. {
  23. switch(choice)
  24. {
  25. case 1: time = 8.75;
  26. break;
  27. case 2: time = 9.33;
  28. break;
  29. case 3: time = 10.00;
  30. break;
  31. case 4: time = 11.20;
  32. break;
  33. default:
  34. printf("your choice is wrong.\n");
  35. printf("please enter your price per time:\n");
  36. scanf("%lf", &time);
  37. printf("your price=%f.\n",time);
  38. break;

  39. }


  40. printf("Please input your hours: ");
  41. scanf("%d",&hour);

  42. if(hour <= HOUR)
  43. {
  44. salary = hour * time;
  45. }
  46. if(hour > HOUR)
  47. {
  48. salary = HOUR * time + (hour - HOUR) * time;
  49. }

  50. if(salary <= JIE1)
  51. {
  52. tax = salary * RATE_300;
  53. }
  54. else if (salary >JIE1 && salary <=JIE2)
  55. {
  56. tax = JIE1 * RATE_300 + (salary - JIE1) * RATE_450;
  57. }
  58. else
  59. {
  60. tax = JIE1 * RATE_300 + (JIE2 - JIE1) * RATE_450 + (salary - JIE2) * RATE;
  61. }
  62. wage = salary - tax;

  63. printf("salary:%.0lf expenses of taxation:%.0lf Net

  64. wage:%.0lf\n",salary,tax,wage);
  65. printf("Please choose a number again:");
  66. scanf("%d", &choice);
  67. }
  68. return 0;
  69. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-26 23:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表