这个程序哪里错啦。求解说。多谢啦
这个程序哪里错啦。求解说。谢谢啦。
#include <stdio.h>
main()
{
int q=1,z,i,n,t=1,s=0,m=1;
scanf ("%d",&n);
for (i=1;i<=n;i++)
{ t=2*i-1;
for (z=1;z<=t;z++)
m=m*z;
q=(-1)^(i-1);
s=s+q/m;
}
printf("s=%d\n",s);
}
题目:编程计算1-1/3!+1/5!-1/7!+...+(-1)^(n-1)/(2n-1)!,其中n的值在程序运行时由键盘输入。
------解决方案--------------------
你用的都是整形int,除完以后小数点都被忽略了.还有q=(-1)^(i-1);这个也不对,C语言中貌似^表示异或吧.
------解决方案--------------------
s=s+q%m;
printf("s=%f\n",s);
另 s定义为float试试
------解决方案--------------------
1. 除用于循环记数的变量用int外,其它的都用double或者float吧
2. 去查查C语言的书,看看^是啥意思。
#include <stdio.h>
main()
{
int q=1,z,i,n,t=1,s=0,m=1;
scanf ("%d",&n);
for (i=1;i<=n;i++)
{ t=2*i-1;
for (z=1;z<=t;z++)
m=m*z;
q=(-1)^(i-1);
s=s+q/m;
}
printf("s=%d\n",s);
}
题目:编程计算1-1/3!+1/5!-1/7!+...+(-1)^(n-1)/(2n-1)!,其中n的值在程序运行时由键盘输入。
------解决方案--------------------
你用的都是整形int,除完以后小数点都被忽略了.还有q=(-1)^(i-1);这个也不对,C语言中貌似^表示异或吧.
------解决方案--------------------
s=s+q%m;
printf("s=%f\n",s);
另 s定义为float试试
------解决方案--------------------
1. 除用于循环记数的变量用int外,其它的都用double或者float吧
2. 去查查C语言的书,看看^是啥意思。