C语言 “企业发放的奖金根据利润提成” 的问题

#includeint main(){ float i,J,a,b,c,d,e; printf("请输入利润:I="); scanf("&d",&i); a=10000; b=7500; c=10000; d=6000; e=6000; if(i<=100000) J=i*0.1; else if(i<=200000) J=a+(i-100000)*0.075; else if(i<=400000) J=a+b+(i-200000)*0.05; else if(i<=600000) J=a+b+c+(i-400000)*0.03; else if(i<=1000000) J=a+b+c+d+(i-600000)*0.015; else J=a+b+c+d+e+(i-1000000)*0.01; printf("奖金总数:%f\n",J); return 0;} 结果却永远都是-10737418.000000请大神帮忙解释啊哪里出了问题。。。

“企业发放的奖金根据利润提成” 的问题,用C语言表示应该为:
// 企业发放的奖金根据利润提成。
// i <= 100000 --- 10%
// 100000 < i <= 200000 --- 低于100000的10%,高于100000的7.5%
// 200000 < i <= 400000 --- 低于200000同上,高于200000的5%
// 400000 < i <= 600000 --- 高于400000的3%,
// 600000 < i <= 1000000 --- 高于600000的1.5%
// i > 1000000 --- 超过1000000按1%。
// 从键盘输入当月利润i,求应发奖金总数
// if语句

#include

int main()
{
int i,j;
printf("请输入当月利润:");
scanf("%d",&i);
if(i <= 100000)
j = i * 0.1;
else if( i > 100000 && i <= 200000 )
j = 100000 * 0.1 + ( i - 100000 ) * 0.075;
else if( i > 200000 && i <= 400000 )
j = 200000 * 0.1 + (i - 200000) * 0.05;
else if( i > 400000 && i <= 600000 )
j = 400000 * 0.1 + (i - 400000) * 0.03;
else if( i > 600000 && i <= 1000000)
j = 600000 * 0.1 + (i - 600000) * 0.015;
else
j = 1000000 * 0.1 + (i - 1000000) * 0.01;
printf("应得的奖金是:%d\n",j);
return 0;
C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;

case 常量表达式n: 语句n;
default: 语句n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
C语言的概念
C语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发UNIX操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了C语言。
C语言是一种广泛使用的计算机语言,它与Java编程语言一样普及,二者在现代软件程序员之间都得到广泛使用。当前最新的C语言标准为C18,在它之前的C语言标准有C17、C11C99 等。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-12
你scanf("&d",&i); 改为scanf("%f",&i); 就行,最后面的输出用%g好一些,可以出去多余的0

#include<stdio.h>
int main()
{
float i,J,a,b,c,d,e;
printf("请输入利润:I=");
scanf("%f",&i);
a=10000;
b=7500;
c=10000;
d=6000;
e=6000;
if(i<=100000) J=i*0.1;
else if(i<=200000) J=a+(i-100000)*0.075;
else if(i<=400000) J=a+b+(i-200000)*0.05;
else if(i<=600000) J=a+b+c+(i-400000)*0.03;
else if(i<=1000000) J=a+b+c+d+(i-600000)*0.015;
else
J=a+b+c+d+e+(i-1000000)*0.01;
printf("奖金总数:%g\n",J);
return 0;
}追问

按你说的改了之后数额还是不对啊。。。为什么一直是负的。。。附图

追答


我这边运行没有什么问题,你运行的截图给我看一下

追问

我也很奇怪。。。

追答

你第5条还是没有改回来啊,是scanf("%f",&i); ,双引号“”里面是%f,不是&f,符号搞错了,%f和&f很明显的吧 --

本回答被提问者采纳
第2个回答  2019-04-29
#include <stdio.h>
int main()
{
double i,b;
float br[]={0.1,0.075,0.05,0.03,0.015,0.01};//奖金率数组
int ad[]={0,2500,7500,15500,24500,29500},j;//速算增加数数组
while(scanf("%lf",&i)!=EOF){//^Z结束输入
b=(double)(i*br[0]+ad[0]);//初始化奖金
for(j=0;j<6;j++)
{
if(b>(double)(i*br[j]+ad[j]))//取最小值
b=(double)(i*br[j]+ad[j]);
printf("%.2lf*%.3f+%d=%.2lf\n",i,br[j],ad[j],((double)(i*br[j]+ad[j])));//监视参数运行过程
}
printf("%.2lf\n",b);//求得奖金
}
return 0;
}

第3个回答  2015-01-04
程序已调试好。你的问题出在,整型数据a和浮点型数据相乘时,结果会以浮点型数据存放。你用长整型格式输出,结果程序就判定出错,就以0表示输出。所以,我把格式输出改成浮点型输出了。最后一个用.2f输出,没有表明数据长度,是因为超过了一百万,就有更大的数据,这样做会减少错误。 #include<stdio.h> void main() { long int a; scanf("%ld",&a); if(a<=100000) printf("%f\n",0.1*a); else { if(a<=200000) printf("%8.2f\n",0.075*(a-100000)+10000); else { if(a<=400000) printf("%8.2f\n",0.05*(a-200000)+17500); else { if(a<=600000) printf("%8.2f\n",0.03*(a-400000)+27500); else { if(a<=1000000) printf("%8.2f\n",0.015*(a-600000)+39500); else printf("%.2f\n",0.01*(a-1000000)+39500); } } } } } 补充: 我用你编的程序试着运行了一下,结果输出是0。我上面的对结果为0的解释是错的,不好意思。我也不太清楚是什么原因. 补充: 我这里的输出也是0.我上面已有修改的方法了,至于结果为什么是0,应该是 电脑 读取的问题吧。具体怎么读取,我也不大清楚。。
第4个回答  2022-03-28
#include <stdio.h>
main(){
float l,j;
printf("请输入利润:");
scanf("%f",&l);
if(l<=100000){
j=l*0.1;
printf("奖金:%f",j);
}
else if(l>100000||l<=200000){
j=(l-100000)*0.075+100000*0.1;
printf("奖金:%f",j);
}
else if(l>200000||l<=400000){
j=(l-200000)*0.05+100000*0.1+100000*0.075;
printf("奖金:%f",j);
}
else if(l>400000||l<=600000){
j=(l-400000)*0.03+100000*0.1+100000*0.075+200000*0.05;
printf("奖金:%f",j);
}
else if(l>600000||l<=1000000){
j=(l-600000)*0.015+100000*0.1+100000*0.075+200000*0.05+200000*0.03;
printf("奖金:%f",j);
}
else if(l>1000000){
j=(l-1000000)*0.01+100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015;
printf("奖金:%f",j);
}

}

C语言 “企业发放的奖金根据利润提成” 的问题
“企业发放的奖金根据利润提成” 的问题,用C语言表示应该为:\/\/ 企业发放的奖金根据利润提成。\/\/ i \/\/ 100000 \/\/ 200000 \/\/ 400000 \/\/ 600000 \/\/ i > 1000000 --- 超过1000000按1%。\/\/ 从键盘输入当月利润i,求应发奖金总数\/\/ if语句 #include int main(){ int i,j; printf("请...

C语言 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金...
bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",i); bonus1=*0.1;bonus2=bonus1+*0.75; bonus4=bonus2+*0.5; bonus6=bonus4+*0.3; bonus10=bonus6+*0.15; if(iC语言是一门通用计算机编程语言,应用广泛。

C语言:企业发放的奖金根据利润提成。利润低于或等于100000元的,奖金可...
num = 0; cout<<"请输入利润:"; cin>>i; if (i <= first) { num = i * first_rate; } else if (i <= second) { num = first * first_rate + (i - first) * second_rate; } else if (i <= third) { num = first * first_r...

经典C语言程序,企业根据利润发放奖金中的问题。
1 要求上写的很清楚,40万到60万之间的高于40万的部分,就是i-40万。这里你的问题也写错了。源程序上是 bonus=bonus4+(i-400000)*0.03;2 与第一问实质上是一样的。建议你好好看看要求。“高于”这两个字还不明显吗?

c语言编程
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可...

C语言企业发放奖金问题
include<stdio.h>void main(){ int i = 0 , j = 0; printf("请输入利润值") scanf("%d",&i); float total = 0 ; float k_hundred,k_sixty,k_forty,k_twenty,k_ten,k; if ( i > 10) { j = 10; else if ( i <= 20 && i > 10) j =...

C语言程序设计:奖金利润提成
{float lr,jj;scanf("%f",&lr);jj=0.1*MIN(lr,100000);if(lr>100000)jj+=0.075*MIN(lr-100000,100000);if(lr>200000)jj+=0.05*MIN(lr-200000,200000);if(lr>400000)jj+=0.03*MIN(lr-400000,200000);if(lr>600000)jj+=0.015*MIN(lr-600000,400000);if(lr>1000000)jj+=...

c语言编程
sum;scanf("%d %d",&a,&b);sum=a+b;do{scanf("%d",&c);n++;if(c==sum){printf("Right!\\n");break;}else{if(n<3){printf("Not correct! Try again!\\n");}else{printf("Not correct! You have tried three times! Test over!\\n");break;}}}while(n<3);return 0;} ...

c语言求编程:等比数列
int n[50]={0};int i=0;int x=0;int y=0;while(i<2){scanf("%d %f",&n[i],&q[i]);i++;} for(i=0;i<50;i++){ if(0==q[i])break;} double dum=0;for(x=0;x<i;x++){for(y=0;y<n[x];y++){ sum=1+sum*q[x];} printf("%0.3f\\n",sum);sum=1;}...

一道关于企业利润的简单的经典C语言题,求高手指教
float i; \/* i>0 单位:万元 *\/ switch((int)(i-1)\/10){ case 0: p=i*0.10;break;case 1: p=(i-10)*0.075+1;break;case 2:case 3: p=(i-20)*0.05+0.75+1;break;case 4:case 5: p=(i-40)*0.03+1+0.75+1;break;case 6:case 7:case 8:case 9:p=(i-60)...

相似回答