鱼C论坛

 找回密码
 立即注册
查看: 1036|回复: 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总是编译错误

#include <stdio.h>

int main()
{
  float i;
  float bonus,bon1,bon2,bon4,bon6,bon10;
  int branch;

  bon1=100000*0.1f;
  bon2=bon1+100000*0.075f;
  bon4=bon2+200000*0.05f;
  bon6=bon4+200000*0.03f;
  bon10=bon6+400000*0.015f;

  scanf("%f",&i);

  branch = (int) (i/100000);

  if(i < 0)
          branch = -1;
  else if (branch>10)  
          branch=10;

  switch(branch)
  {  case -1:        bonus=0;break;
     case 0:        bonus=i*0.1f;break;
     case 1:        bonus=bon1+(i-100000)*0.075f;break;
     case 2:
     case 3:        bonus=bon2+(i-200000)*0.05f;break;
     case 4:
     case 5:        bonus=bon4+(i-400000)*0.03f;break;
     case 6:
     case 7:
     case 8:
     case 9:        bonus=bon6+(i-600000)*0.015f;break;
     case 10:        bonus=bon10+(i-1000000)*0.01f;
  }
  printf("prize=%f\n",bonus);
  return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-27 08:45:53 | 显示全部楼层
既然是做浮点运算,为什么要用整形变量?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

帮忙改一下呗,我自己改double,float总是编译错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

#include <stdio.h>

int main()
{
  float i;
  float bonus,bon1,bon2,bon4,bon6,bon10;
  int branch;

  bon1=100000*0.1f;
  bon2=bon1+100000*0.075f;
  bon4=bon2+200000*0.05f;
  bon6=bon4+200000*0.03f;
  bon10=bon6+400000*0.015f;

  scanf("%f",&i);

  branch = (int) (i/100000);

  if(i < 0)
          branch = -1;
  else if (branch>10)  
          branch=10;

  switch(branch)
  {  case -1:        bonus=0;break;
     case 0:        bonus=i*0.1f;break;
     case 1:        bonus=bon1+(i-100000)*0.075f;break;
     case 2:
     case 3:        bonus=bon2+(i-200000)*0.05f;break;
     case 4:
     case 5:        bonus=bon4+(i-400000)*0.03f;break;
     case 6:
     case 7:
     case 8:
     case 9:        bonus=bon6+(i-600000)*0.015f;break;
     case 10:        bonus=bon10+(i-1000000)*0.01f;
  }
  printf("prize=%f\n",bonus);
  return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好像解决不了输入负数时输出全为0的情况,输入大于-100000的负数他还会去按case 0去算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

修改了一下代码,你再看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-27 10:01:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 20:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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