C语言编写程序求和sum=-1!+2!-3!+4!…+n! 其中n由用户输入,其正负号由其奇偶性决定,n<=12。
连续乘就可以得到阶乘了啊。奇偶判断正负
#include <stdio.h>
int main()
{
int n,i,flag = -1;
long long k=1,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
k*=i;
sum += k*flag;
flag *= -1;
}
printf("%lld",sum);
return 0;
}
写个计算阶乘的函数即可,不需要math.h
代码如下:
#include <stdio.h>
long long jc(int n)
{
long long s=1;
int i=1;
for (i=1;i<=n;i++)
{
s*=i;
}
return s;
};
int main()
{
long long sum = 0;
int i,flag = -1;
int n;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
sum += flag * jc(i);
flag = -flag;
}
printf("%lld",sum);
return 0;
}
#include <stdio.h>
long long calc(int num){
if(num==1){
return 1;
}else{
return num*calc(num-1);
}
}
int main(){
int i,n;
long long sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
if(i%2==1){
sum-=calc(i);
}else{
sum+=calc(i);
}
}
printf("sum的值是:%lld\n",sum);
return 0;
}
float fact(float n)
{
float res = 1.0f;
while(n) res *=n--;
return res;
}
int main()
{
int n;
float res=0.f;
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
if(i%2)
res += -fact(i);
else
res += fact(i);
}
printf("%f",res);
return 0;
}
不能使用<math.h>
为了提高效率, 我建议打表:
#include <stdio.h>
#define MAX_N 12
int main(int argc, char** argv) {
int ans[MAX_N] = {
-1, 1, -5, 19,
-101, 619, -4421,
35899, -326981, 3301819,
-36614981, 442386619,
};
printf("Input a number n (1 <= n <= 12):\n");
int n = 0;
while (1 == scanf("%d", &n)) {
if (1 > n || n > MAX_N) {
printf("Wrong input!\n");
continue;
}
printf("Sum(%d)= %d\n", n, ans[n - 1]);
}
return scanf("%*s%*s");
}