c语言编程运行出现两个结果

我的程序:为什么运行后后会出现两个一样的值

#include <stdio.h>
#include <math.h>
#define a 10000
#define b 7500
#define c 10000
#define d 6000
#define e 6000
void main ()
{
double i,w;
printf("请输入利润:");
scanf("%lf",&i);
if (i>=1000000)
{
w=(i-1000000)*0.01+a+b+c+d+e;
printf("应发奖金总数为:%.4f\n",w);
}
else
if (i>=600000)
{
w=(i-600000)*0.015+a+b+c+d;
printf("应发奖金总数为:%.4f\n",w);
}
else
if (i>=400000)
{
w=(i-400000)*0.03+a+b+c;
printf("应发奖金总数为:%.4f\n",w);
}
else
if (i>=200000)
{
w=(i-200000)*0.05+a+b;
printf("应发奖金总数为:%.4f\n",w);
}
else
if (i>100000)
{
w=(i-100000)*0.075+a;
printf("应发奖金总数为:%.4f\n",w);
}
else
w=i*0.1;
printf("应发奖金总数为:%.4f\n",w);
}

第1个回答  2013-10-10
有2处错误:
#include <stdio.h>
#include <math.h>
#define a 10000
#define b 7500
#define c 10000
#define d 6000
#define e 6000
void main ()
{
double i,w;
printf("请输入利润:");
scanf("%lf",&i);
if (i>=1000000)
{
w=(i-1000000)*0.01+a+b+c+d+e;
printf("应发奖金总数为:%.4f\n",w);
}

else if (i>=600000 && i<1000000) //错误1:程序逻辑要严谨
{
w=(i-600000)*0.015+a+b+c+d;
printf("应发奖金总数为:%.4f\n",w);
}
else if (i>=400000 && i<600000)
{
w=(i-400000)*0.03+a+b+c;
printf("应发奖金总数为:%.4f\n",w);
}

else if (i>=200000 && i<400000)
{
w=(i-200000)*0.05+a+b;
printf("应发奖金总数为:%.4f\n",w);
}
else if (i>100000 && i<200000)
{
w=(i-100000)*0.075+a;
printf("应发奖金总数为:%.4f\n",w);
}
else
{
w=i*0.1;
printf("应发奖金总数为:%.4f\n",w);
} //错误2:else后面,超过1个语句,要加括号。
}本回答被提问者采纳
第2个回答  2013-10-10

最后的else少了大括号:改为如下

           else{

              w=i*0.1;

             printf("应发奖金总数为:%.4f\n",w);
           }

第3个回答  2013-10-10
因为你最后一个else没用大括号括起来,所以打印了两次
第4个回答  2013-10-10
用if else 太多了,肯定是哪一步错了,果断换成swtich case.追问

嗯,我用switch可以的,可是换成if就这样了

第5个回答  2013-10-10
最好少了个大括号
相似回答