当前位置: 代码迷 >> C语言 >> 大侠们帮着看看,这个小程序运行为什么会这样?
  详细解决方案

大侠们帮着看看,这个小程序运行为什么会这样?

热度:52   发布时间:2008-03-09 10:10:28.0
大侠们帮着看看,这个小程序运行为什么会这样?
#include "stdio.h"
#include"stdlib.h"
int main(void)
{
double i;
double ticheng,t1,t2,t3,t4,t5;

t1=100000*0.1;
t2=t1+100000*0.075;
t3=t1+t2+200000*0.05;
t4=t1+t2+t3+200000*0.03;
t5=t1+t2+t3+t4+400000*0.015;

printf("Please input the total value:");
scanf("%lf\n",&i);   

if(i<=100000)
{ticheng=i*0.1;}
else if(100000<i<=200000)
{ticheng=t1+(i-100000)*0.075;}
else if(200000<i<=400000)
{ticheng=t2+(i-200000)*0.05;}
else if(400000<i<=600000)
{ticheng=t3+(i-400000)*0.03;}
else if(600000<i<=1000000)
{ticheng=t4+(i-600000)*0.015;}
else if(i>1000000)
{ticheng=t5+(i-1000000)*0.01;}

printf("your ticheng is :%lf\n",ticheng);

system("PAUSE");

return 0;
}
运行的时候输入完数字按回车没用,不输出结果,只有输入一个字符再按回车才有结果,这是为什么呀?
搜索更多相关的解决方案: 运行  

----------------解决方案--------------------------------------------------------
scanf("%lf\n",&i);   这句话应该这样写:scanf("%lf",&i);   
----------------解决方案--------------------------------------------------------
scanf格式是很严格的。[size=5][/size]
----------------解决方案--------------------------------------------------------
回复 3# 的帖子
谢谢!
我基础太差了,以后还得多多学习呀!
----------------解决方案--------------------------------------------------------
ticheng=i*0.1;}
else if(100000<i<=200000)
{ticheng=t1+(i-100000)*0.075;}
else if(200000<i<=400000)
{ticheng=t2+(i-200000)*0.05;}
else if(400000<i<=600000)
{ticheng=t3+(i-400000)*0.03;}
else if(600000<i<=1000000)
{ticheng=t4+(i-600000)*0.015;}
else if(i>1000000)

红色字体的是错误的表达式,应该是  “if(i>400000&&i<600000)”  这样的格式。  

你再改改,应该成功的。
----------------解决方案--------------------------------------------------------
你说的算是一个错误,前提是在TC环境下!
但在vc编译环境下不算错误!我已经运行出结果了!
主要还是scanf函数使用的不对!
这里还是很感谢!
----------------解决方案--------------------------------------------------------
饿看还是要规范书写 scanf(" ",& );  比如 scanf("%d%d"&a,&b); 里面最好不要加入换行等字符
----------------解决方案--------------------------------------------------------
饿错了 是 scanf("%d%d",&a,&b);
----------------解决方案--------------------------------------------------------
回复 8# 的帖子
呵呵,我觉得应该这么写,否则小程序还行,如果输入字符多了,键盘存在缓冲问题:

scanf("  %d %d",&a,&b);
puts(" ");
----------------解决方案--------------------------------------------------------
  相关解决方案