C语言求一到n的阶乘之和,n大于1小于等于16。

如题所述

第1个回答  2015-04-14
#include <stdio.h>
   
int main() {
    __int64 fact = 1,i,sum = 0;
    int n;
    scanf("%d",&n);
    for(i = 1; i <=n; ++i)    {
        fact *= i;
        sum += fact;
    }
    printf("sum = %I64d\n",sum);
    return 0;
}

注意类型 必须是8字节的整形 用__int64或者用long long (编译器相关)

本回答被网友采纳
第2个回答  2015-04-14
int main()
{
int a,n ,b;
b = 1;
a = 1;
printf("输入n(1-16)");

scanf("%d",&n);
if( n == 1)
{
printf("1到n的阶乘之和为1");
}
else
for (i = 2; i < n; i++)
{
a = a*i;

b = b+a;

}
printf("1到n的阶乘之和为 %d \n");
}
如果有疑问,可以追问
第3个回答  推荐于2018-03-20
#include <stdio.h>
int fun(int n)
{
    int sum = 0;
    if (n == 1)
        sum = n;
    else
        sum = n + fun (n-1);
    return sum;
}

void main()
{
    int n;
    while(1){
    scanf("%d",&n);
    if(n < 16 && n > 1){
    printf("%d",fun(n));
    break;
    }
}

本回答被网友采纳
第4个回答  2015-04-14
#include<iostream>
using namespace std;

int main()
{
    int num,temp=1;
    cin>>num;
    if(num<=1&&num>16)
        cout<<"input error"<<endl;
    else
    {
        while(num>0)
        temp*=num--;
        cout<<temp<<endl;
    }
    return 1;
}



第5个回答  2015-04-14
#include<stdio.h>
main()
{
int i,n,count=0,tem=1;

scanf("%d",&n);

for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++) tem*=j;
count+=tem;
tem=1;
}
printf("%d\n",count);
}追问

你的n取值范围没有啊

追答

这道题的意思应该是输入n,求一到n的阶乘之和(其中n大于1小于等于16)
这只是一句参考,让你编程的时候考虑数据大小的