鱼C论坛

 找回密码
 立即注册
查看: 1282|回复: 6

[已解决]小白求助,pintia上的一道题

[复制链接]
发表于 2020-10-27 08:24:57 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
int main()
{
  int i;
  int bonus,bon1,bon2,bon4,bon6,bon10;
  int branch;
  bon1=100000*0.1;
  bon2=bon1+100000*0.075;
  bon4=bon2+200000*0.05;
  bon6=bon4+200000*0.03;
  bon10=bon6+400000*0.015;
  scanf("%d",&i);
  branch=i/100000;
  if (branch>10)  branch=10;
  else if (branch<0)  branch=-1;
  switch(branch)
  {  case -1:bonus=0;break;
     case 0:bonus=i*0.1;break;
     case 1:bonus=bon1+(i-100000)*0.075;break;
     case 2:
     case 3: bonus=bon2+(i-200000)*0.05;break;
     case 4:
     case 5: bonus=bon4+(i-400000)*0.03;break;
     case 6:
     case 7:
     case 8:
     case 9: bonus=bon6+(i-600000)*0.015;break;
     case 10: bonus=bon10+(i-1000000)*0.01;
  }
   printf("prize=%d\n",bonus);
   return 0;
}
改了好几回了,总提示部分答案错误,求大神改正。
最佳答案
2020-10-27 09:14:50
本帖最后由 xieglt 于 2020-10-27 09:37 编辑
936241151 发表于 2020-10-27 09:03
帮忙改一下呗,我自己改double,float总是编译错误

  1. #include <stdio.h>

  2. int main()
  3. {
  4.   float i;
  5.   float bonus,bon1,bon2,bon4,bon6,bon10;
  6.   int branch;

  7.   bon1=100000*0.1f;
  8.   bon2=bon1+100000*0.075f;
  9.   bon4=bon2+200000*0.05f;
  10.   bon6=bon4+200000*0.03f;
  11.   bon10=bon6+400000*0.015f;

  12.   scanf("%f",&i);

  13.   branch = (int) (i/100000);

  14.   if(i < 0)
  15.           branch = -1;
  16.   else if (branch>10)  
  17.           branch=10;

  18.   switch(branch)
  19.   {  case -1:        bonus=0;break;
  20.      case 0:        bonus=i*0.1f;break;
  21.      case 1:        bonus=bon1+(i-100000)*0.075f;break;
  22.      case 2:
  23.      case 3:        bonus=bon2+(i-200000)*0.05f;break;
  24.      case 4:
  25.      case 5:        bonus=bon4+(i-400000)*0.03f;break;
  26.      case 6:
  27.      case 7:
  28.      case 8:
  29.      case 9:        bonus=bon6+(i-600000)*0.015f;break;
  30.      case 10:        bonus=bon10+(i-1000000)*0.01f;
  31.   }
  32.   printf("prize=%f\n",bonus);
  33.   return 0;
  34. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-27 08:45:53 | 显示全部楼层
既然是做浮点运算,为什么要用整形变量?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-27 09:03:12 | 显示全部楼层
xieglt 发表于 2020-10-27 08:45
既然是做浮点运算,为什么要用整形变量?

帮忙改一下呗,我自己改double,float总是编译错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-27 09:14:50 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xieglt 于 2020-10-27 09:37 编辑
936241151 发表于 2020-10-27 09:03
帮忙改一下呗,我自己改double,float总是编译错误

  1. #include <stdio.h>

  2. int main()
  3. {
  4.   float i;
  5.   float bonus,bon1,bon2,bon4,bon6,bon10;
  6.   int branch;

  7.   bon1=100000*0.1f;
  8.   bon2=bon1+100000*0.075f;
  9.   bon4=bon2+200000*0.05f;
  10.   bon6=bon4+200000*0.03f;
  11.   bon10=bon6+400000*0.015f;

  12.   scanf("%f",&i);

  13.   branch = (int) (i/100000);

  14.   if(i < 0)
  15.           branch = -1;
  16.   else if (branch>10)  
  17.           branch=10;

  18.   switch(branch)
  19.   {  case -1:        bonus=0;break;
  20.      case 0:        bonus=i*0.1f;break;
  21.      case 1:        bonus=bon1+(i-100000)*0.075f;break;
  22.      case 2:
  23.      case 3:        bonus=bon2+(i-200000)*0.05f;break;
  24.      case 4:
  25.      case 5:        bonus=bon4+(i-400000)*0.03f;break;
  26.      case 6:
  27.      case 7:
  28.      case 8:
  29.      case 9:        bonus=bon6+(i-600000)*0.015f;break;
  30.      case 10:        bonus=bon10+(i-1000000)*0.01f;
  31.   }
  32.   printf("prize=%f\n",bonus);
  33.   return 0;
  34. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-27 09:29:23 | 显示全部楼层

好像解决不了输入负数时输出全为0的情况,输入大于-100000的负数他还会去按case 0去算
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-27 09:38:28 | 显示全部楼层
936241151 发表于 2020-10-27 09:29
好像解决不了输入负数时输出全为0的情况,输入大于-100000的负数他还会去按case 0去算

修改了一下代码,你再看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-27 10:01:00 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 08:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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