关于C语言的程序设计问题
问题是:输入n(n<10)和a,计算下面数列前n项的和:S=1/a+ (-2/aa) +(3/aaa).......+(n*(-1)^(n-1)/aaa...a)
下面是我编写的代码,程序没有报错,但是调试运行之后我输入a和n后回车没有任何反应,我也找不出问题,这是为什么啊??
# include<stdio.h>
# include<math.h>
double pow(double X,double Y);
int main()
{
double S=0;
double i,n,a,X,term=0,sum=0;
scanf("%d %d\n",&a,&n);
for(i=1;i<=n;i++)
{
X=pow(-1.0,i-1);
term=term*10+a;
sum=sum+term;
S=S+(i*X/sum);
}
printf("S=%f\n",S);
return 0;
} 本帖最后由 zxcbcv 于 2020-4-9 12:58 编辑
在 scanf("%d %d\n",&a,&n)中 \n前加个 \0 就行了
我也总出现这种情况 ,求哪位大神解释一下这问题呗 你上面定义的是浮点型,输入的时候确实整型 问题1、scanf内最好不要有格式化字符以外的其他字符。若有其他字符,你就需要严格按照你写在里面的字符进行输入,否则就会出错。
问题2、你定义的各个变量都是double类型,scanf和printf时格式化字符应该用%lf或者%f,最好是用%lf
还有一个建议,X其实不必这样写,因为在循环里面,可以每次乘以-1,不就改变其符号了么
# include<stdio.h>
int main()
{
double S=0;
double i,n,a,X=-1,term=0,sum=0;
scanf("%lf%lf",&a,&n);
for(i=1;i<=n;i++)
{
X*=-1;
term=term*10+a;
sum=sum+term;
S=S+(i*X/sum);
}
printf("S=%lf\n",S);
return 0;
} zxcbcv 发表于 2020-4-9 12:50
在 scanf("%d %d\n",&a,&n)中 \n前加个 \0 就行了
你需要好好研究一下scanf函数的用法
可以看看这个帖子
这个帖子中还连接了其他帖子,都是我针对scanf的一些解答。应该会对你和楼主有帮助。 sunrise085 发表于 2020-4-9 14:05
你需要好好研究一下scanf函数的用法
可以看看这个帖子
这个帖子中还连接了其他帖子,都是我针对scanf的 ...
3q
页:
[1]