用c语言计算并输出1!,1!+2!,1!+2!+3!,1!+2!+3!···+n!的值
4个回答
展开全部
#include<stdio.h>
void
main()
{
int
i;
int
j;
int
n;
int
num=1;
int
sum=0;
printf(
"please
input
a
num:\n"
);
scanf(
"%d",
&n
);
for(
i=1;
i<=n;
i++
)
{
/*
这部分是打印格式的,1!+2!+3!+...n!
*/
if(
i
<
n
)
{
printf(
"%d!+",
i
);
}
else
{
printf(
"%d!=",
i
);
}
/*
注释之间是打印格式的
*/
/*
外循环得到的是1!+2!+3!+n!..中的1,2,3..n这个数
*/
num
=
1;
//每次这里都清1是因为每次从外循环得到的数都要从1开始取阶乘
for(
j=1;
j<=i;
j++
)
{
num
=
num
*
j;
//内部循环是通过外部循环的到得数再次取这个数的阶乘
}
sum
=
sum
+
num;
//在外循环得到这些阶乘的和
}
printf(
"%d\n",
sum
);
}
void
main()
{
int
i;
int
j;
int
n;
int
num=1;
int
sum=0;
printf(
"please
input
a
num:\n"
);
scanf(
"%d",
&n
);
for(
i=1;
i<=n;
i++
)
{
/*
这部分是打印格式的,1!+2!+3!+...n!
*/
if(
i
<
n
)
{
printf(
"%d!+",
i
);
}
else
{
printf(
"%d!=",
i
);
}
/*
注释之间是打印格式的
*/
/*
外循环得到的是1!+2!+3!+n!..中的1,2,3..n这个数
*/
num
=
1;
//每次这里都清1是因为每次从外循环得到的数都要从1开始取阶乘
for(
j=1;
j<=i;
j++
)
{
num
=
num
*
j;
//内部循环是通过外部循环的到得数再次取这个数的阶乘
}
sum
=
sum
+
num;
//在外循环得到这些阶乘的和
}
printf(
"%d\n",
sum
);
}
展开全部
这个太大了,估计结果会不正确,因为就算是unsigned
long型也很难符合这个范围,不过还是写一个吧
#include
<stdio.h>
//这个函数用递归求阶乘
long
Fact(int
n)
{
if(n==1)
return
1;
else
return
Fact(n-1)*n;
}
void
main()
{
int
i,j=1;
long
result=0,sum=0;
printf("请输入n的值\n");
scanf("%d",&i);
while(j<=i)
{
result=Fact(i);
sum=sum+result;
++j;
}
for(j=1;j<=i;j++)
{
printf("%d!",j);
if(j>1)
printf("+");
}
printf("结果是:%u",sum);
}
long型也很难符合这个范围,不过还是写一个吧
#include
<stdio.h>
//这个函数用递归求阶乘
long
Fact(int
n)
{
if(n==1)
return
1;
else
return
Fact(n-1)*n;
}
void
main()
{
int
i,j=1;
long
result=0,sum=0;
printf("请输入n的值\n");
scanf("%d",&i);
while(j<=i)
{
result=Fact(i);
sum=sum+result;
++j;
}
for(j=1;j<=i;j++)
{
printf("%d!",j);
if(j>1)
printf("+");
}
printf("结果是:%u",sum);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include
<stdio.h>
long
factorial(unsigned
int
n)
{
long
product=
1;
while(n>1){
product
*=
n--;
};
return
product;
}
int
main(
void)
{
unsigned
int
ui,i;
printf("n=");
scanf("%ud",
&ui);
for(i=1;
i<=
ui;
++i){
printf("1!+...+%u!=%lu\n",i,
factorial(i));
}
return
0;
}
效率低了点儿,灵活性好,毕竟是学习一下,如果纯粹要结果还是二楼的效率最高
<stdio.h>
long
factorial(unsigned
int
n)
{
long
product=
1;
while(n>1){
product
*=
n--;
};
return
product;
}
int
main(
void)
{
unsigned
int
ui,i;
printf("n=");
scanf("%ud",
&ui);
for(i=1;
i<=
ui;
++i){
printf("1!+...+%u!=%lu\n",i,
factorial(i));
}
return
0;
}
效率低了点儿,灵活性好,毕竟是学习一下,如果纯粹要结果还是二楼的效率最高
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include
<stdio.h>
void
main()
{
int
n,
i,
k;
long
s=0,
temp=1;
//最好定义为long
数比较大
printf("请输入n的值")
scanf("%d",
&n);
for(i=1;
i<=n;
i++)
//计算n!
{
for
(k=0;k<n;k++)
temp
*=
i;
s
+=
temp;
}
printf("%d\n",
s);
}
<stdio.h>
void
main()
{
int
n,
i,
k;
long
s=0,
temp=1;
//最好定义为long
数比较大
printf("请输入n的值")
scanf("%d",
&n);
for(i=1;
i<=n;
i++)
//计算n!
{
for
(k=0;k<n;k++)
temp
*=
i;
s
+=
temp;
}
printf("%d\n",
s);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询