为什么c语言运行时回车没反应

#include <stdio.h>
#include <stdlib.h>

int sat(int n)
{
long i,m=-1,s=1;
for(i=1;i<=n-1;i++)
s=s*m;
return (s);
}
double qin(int n,double x)
{
long i; double q=1;
for(i=1;i<=(2*n-1);i++)
q=q*x;
return (q);
}
double pin(int n)
{long i;double p=1;
for (i=1;i<=(2*n-1);i++)
p=p*i;
return (p);
}

int main()
{double x,e,sin=0;int n;
scanf("%lf %lf\n",&x,&e);
for (n=1;qin(n,x)/pin(n)>=e;n++)
sin=sin+sat(n)*qin(n,x)/pin(n);
printf("%lf\n",sin);
system("pause");
return 0;
}
已知求正弦 sin(x) 的近似值的多项式公式为:

sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)! + …

编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。

    没有反应的原因有很多种。比如错误输入,类型错误,代码逻辑错误。不同的情况应该分开分析。

    例如 scanf("%lf %lf\n",&x,&e);
    这样的语句在回车后就没有反应,必须输入\n后才会有反应。

    因为非输出控制符必须原样输入。\n在scanf函数当中并不是控制符,这里没当成换行符使用。用scanf 不要加入“\n”非输入控制符,系统在运行时会自动换行。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-07
scanf里的东西除了%带的格式控制以外,在输入时其余的必须照样输入,所以去掉/n应该就可以了
建议:scanf里除了%和它所带的格式控制字符以外不要有别的东西,之间也不要用任何诸如逗号,空格之类的隔开,因为没有隔开的话输入的时候很自由,可以输一个按回车,也可以输入一个之后用逗号,空格,Tab键将输入的东西隔开,输入完之后用回车结束就可以了
第2个回答  2010-04-07
把scanf("%lf %lf\n",&x,&e);的\n去掉
改为scanf("%lf %lf",&x,&e);
另外,sat函数不用那么复杂,可改为:
int sat(int n)
{
if (n%2) return -1;
else return 1;
}
qin函数里面应该是q=q+x吧
第3个回答  2010-04-07
scanf("%lf %lf\n",&x,&e);
里面的\n去掉本回答被提问者采纳