数码相机洗照片:请帮我看看这个程序有什么问题?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 23:29:39
#include <stdio.h>
main()
{double a,b,c,i,x,y,d,e;
a=1475.129046;b=147.3297081;c=0.025363621;
for(i=1400;i<=1460;i=i+20)
{x=a-i;y=b+c*x;printf("%f\t",i);scanf("%f\t",&d);e=y-d;printf("%f\n",e);}}
我在Microsoft Visual C++ 6.0上运行,执行是没什么问题啦,但是我输入一个数据后按回车它就换行了,再按还换行.我本来是想要它把我输入的数字和前面算出来的"y"算一个差再输出来的.请问该怎么办?(我是菜鸟,请尽量详细说明,谢谢)
看了你的答复,我把程序改成这样:
#include <stdio.h>
main()
{double a,b,c,i,x,y,d,e;
a=1475.129046;b=147.3297081;c=0.025363621;
for(i=1400;i<=1460;i=i+20)
{x=a-i;
y=b+c*x;
printf("%f\n",i);
scanf("%d",&d);
e=y-d;
printf("%f\n",e);}
}
但是执行的时候,我先输入135,可是输出来的答案却是:92559592117433530000...(后面好多个零).000000.根据计算,第一个y应该是一百四十九多,减去一百三十五怎么会得那么多呢?

#include <stdio.h>
main()
{
double a,b,c,i,x,y,d,e;
a=1475.129046;
b=147.3297081;
c=0.025363621;
//x=1;
for(i=1400;i<=1460;i=i+20)
{
x=a-i;
y=b+c*x;
printf("%f\n",i);
scanf("%f",&d);
e=y-d;
printf("%f\n",e);
}

}
你的问题主要是scanf("%f\t",&d);这一句,里面的参数格式是"%f\t",所以输入的格式一定要按这个格式输入,我不知道你这个\t干什么用的,但好象不可以经过键盘输入吧,还有你的x好象没用到过,然后最后一个,程序的风格,这个也很重要,习惯先吧