鱼C论坛

 找回密码
 立即注册
查看: 1552|回复: 11

[已解决]小白求助

[复制链接]
发表于 2020-10-26 20:29:25 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
int main()
{
  int i;
  double  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;
  switch(branch)
  {  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;
}
试了好数,总是输出0
最佳答案
2020-10-26 21:24:14
936241151 发表于 2020-10-26 20:52
double 改成int,然后我输入负数怎么让它输出0

我运行了一下你的程序,

你什么就是输入负数,又什么变量输出为0呢?

这样可以吗:

  scanf("%lf",&i);
  branch = i /1 00000;
  if (branch > 10)
      branch = 10;
  if (branch < 0)
      branch = 2;

  switch(branch)
  {  
      case 0: bonus = i * 0.1;
      break;
      case 1: bonus = bon1 + (i - 100000) * 0.075;
      break;
      case 2: bonus = 0;
      break;

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-26 20:34:55 | 显示全部楼层
bonus你定义的是double型
输出用%d?!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-26 20:52:48 | 显示全部楼层
double 改成int,然后我输入负数怎么让它输出0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 20:55:20 | 显示全部楼层
巴巴鲁 发表于 2020-10-26 20:34
bonus你定义的是double型
输出用%d?!

去做一下,我发的那个求助帖子吧,我记得你做过类似的小岛面积的题目
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 21:19:26 | 显示全部楼层
936241151 发表于 2020-10-26 20:52
double 改成int,然后我输入负数怎么让它输出0

判断一下,如果是负数就输出0呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 21:24:14 | 显示全部楼层    本楼为最佳答案   
936241151 发表于 2020-10-26 20:52
double 改成int,然后我输入负数怎么让它输出0

我运行了一下你的程序,

你什么就是输入负数,又什么变量输出为0呢?

这样可以吗:

  scanf("%lf",&i);
  branch = i /1 00000;
  if (branch > 10)
      branch = 10;
  if (branch < 0)
      branch = 2;

  switch(branch)
  {  
      case 0: bonus = i * 0.1;
      break;
      case 1: bonus = bon1 + (i - 100000) * 0.075;
      break;
      case 2: bonus = 0;
      break;

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-26 21:37:55 | 显示全部楼层
乐乐学编程 发表于 2020-10-26 21:24
我运行了一下你的程序,

你什么就是输入负数,又什么变量输出为0呢?

pintia上的一题,就是我scanf输入,当输入负数的时候,比如我输入-10000,它输出-1000,预期结果应该是0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 21:43:48 | 显示全部楼层
936241151 发表于 2020-10-26 21:37
pintia上的一题,就是我scanf输入,当输入负数的时候,比如我输入-10000,它输出-1000,预期结果应该是0

将我红色字体语句加进去,保证只要你输入负数,输出肯定是0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-26 22:00:39 | 显示全部楼层
乐乐学编程 发表于 2020-10-26 21:43
将我红色字体语句加进去,保证只要你输入负数,输出肯定是0

不管输入什么,全是0了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-27 01:08:51 | 显示全部楼层
#include <stdio.h>
int main()
{
  int i;
  double  bonus,bon1,bon2,bon4,bon6,bon10;
  int  branch;  //这里为int
  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;//i也是int branch也是int 如果i的值小于100000,branch得到的值永远是等于0的值,int类型0.9也会把 .9舍弃,只保留0,所以后面的判断没有意义.branch的值会等于0,所以才会等于0;可以尝试把branch改成浮点型
  if (branch>10)  branch=10;
  switch(branch)
  {  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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-27 10:39:06 | 显示全部楼层
936241151 发表于 2020-10-26 22:00
不管输入什么,全是0了

是谁告诉你,将他的红色部分加到程序里去,就不管输入什么,全是0了?

只有 i 为负数,branch 才小于 0,只有 branch 小于 0,branch 才等于 2,只有 branch 等于 2,只有 branch 等于 2 ,才会是 case 2: bonus = 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 15:35:45 | 显示全部楼层
问题还没有解决?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 19:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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