永发信息网

C语言在Visual C++中连接编译都没问题,但不能运行,请问哪里出问题了?

答案:4  悬赏:30  手机版
解决时间 2021-02-18 11:54
  • 提问者网友:我是我
  • 2021-02-18 03:20
问题1:新手看不出什么问题,请高手帮忙看一下。
问题2(加分题):程序中的If 语句那部分能不能给它精简一点,感觉太繁琐了。
题目概要:设 i 为利润,输入当月利润i,求发放奖金总数a。奖金发放规则:
i<10万,提成10%;
10万20万40万60万i>100万,超过100万的部分按1%提成。
以下是我写的程序:
#include
void main ()
{

float i;
i=0;
double a;
printf("请输入当月利润%8.3f:\n",i);
scanf("%f\n",i);
if (i<=100000)
a=i*0.01;
else if ((i>100000)&&(i<=200000))
a=10000+(i-10000)*0.075;
else if ((i>200000)&&(i<=400000))
a=10000+200000*0.075+(i-200000)*0.05;
else if ((i>400000)&&(i<=600000))
a=10000+200000*0.075+400000*0.05+(i-400000)*0.03;
else if ((i>600000)&&(i<=1000000))
a=10000+200000*0.075+400000*0.05+600000*0.03+(i-600000)*0.015;
else
a=10000+200000*0.075+400000*0.05+600000*0.015+(i-600000)*0.01;
printf("应发放奖金总数为:%8.3f",a);
}
最佳答案
  • 五星知识达人网友:轮獄道
  • 2021-02-18 03:53
#include
void main ()
{

long i; //类型应该用long了float搞不定了。
double a;
i=0;

printf("请输入当月利润:");
scanf("%ld",&i);//这里是用&i不是i。且后面不需要再跟换行符了
if (i<=100000)
a=i*0.01;
else if ((i>100000)&&(i<=200000))
a=10000+(i-10000)*0.075;
else if ((i>200000)&&(i<=400000))
a=10000+200000*0.075+(i-200000)*0.05;
else if ((i>400000)&&(i<=600000))
a=10000+200000*0.075+400000*0.05+(i-400000)*0.03;
else if ((i>600000)&&(i<=1000000))
a=10000+200000*0.075+400000*0.05+600000*0.03+(i-600000)*0.015;
else
a=10000+200000*0.075+400000*0.05+600000*0.015+(i-600000)*0.01;
printf("应发放奖金总数为:%8.3f",a);
getch();//按任意键结束
}
全部回答
  • 1楼网友:想偏头吻你
  • 2021-02-18 05:30
scanf 的 调用格式中最后是输入地址表,即i前面要加个&...
  • 2楼网友:污到你湿
  • 2021-02-18 04:14
那句:“scanf("%ld",&i); ” 里的“%ld ”是什么意思,我只知道有“%d ”,那个还没见过。 就是long型的输入。int用%d
  • 3楼网友:山君与见山
  • 2021-02-18 04:03
你的scanf语句写错了,scanf("%8.3f",&i); scanf的%f后面是不跟\n的,而且&符号不要漏了,这个是很容易疏忽的,少了这个编译不报错,但是运行不了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯