题目

随机输入一个整数n,求出n的阶乘

思路

阶乘,每次乘的数依次递增,直到第n个数,因此我们可以设置一个变量result,用于储存每一次的运算结果。且每次乘的数都依次递增,可以使用for循环语句,所以需引入一个新变量i 来控制for循环。

源代码

// 计算n的阶乘
int main(){
	int result=1;
	int n;
	printf("请输入你想计算的阶乘数:");
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		result*=i; //相当于result=result*i
	}
	printf("阶乘结果为:%d\n",result);
	system("pause");
	return 0;
}

输出结果(以5!为例)

注意事项

用int类型时,n≤12
因为 13!已经62亿+, 会使int溢出!

n的阶乘再求和

思路:
将上述求n的阶乘定义为一个函数,再在主函数中调用求和即可。

代码附上:

// 求n的阶乘的函数
int factor(n){
	int result=1;
	for(int i=1;i<=n;i++){
		result*=1;
	}
	return result;
}
//阶乘求和
int main(){
	int sum=0;
	int num=0;
	printf("请输入你想求和的阶乘数:");
	scanf("%d",&num);
	for(int i=1;i<=num;i++){
		sum+=factor(i);
	}
	printf("阶乘和为:%d\n",sum);
	system("pause");
	return 0;
}

解析如下:

循环过程:

更多推荐

C语言 求n的阶乘及阶乘和