阶乘计算学习
简单阶乘计算
本题要求实现一个计算非负整数阶乘的简单函数。
函数接口定义:
int Factorial( const int N );
其中N是用户传入的参数,其值不超过12。如果N是非负整数,则该函数必须返回N的阶乘,否则返回0。
裁判测试程序样例:
include <stdio.h>
int Factorial( const int N );
int main()
{
int N, NF;
scanf("%d", &N);
NF = Factorial(N);
if (NF) printf("%d! = %d\n", N, NF);
else printf("Invalid input\n");
return 0;
}
/* 你的代码将被嵌在这里 */
解答:本题目很简单,利用课本上的知识就能解答,也没有什么要特别注意的地方
int Factorial(const int N){
int i,p=1;
if(N>=0){
for(i=1;i<=N;i++){
p=p*i;
}
return p;
}
else if(N<0)return 0;
}
可下一题
阶乘计算升级版
本题要求实现一个打印非负整数阶乘的函数。
函数接口定义:
void Print_Factorial ( const int N );
其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。
裁判测试程序样例:
include <stdio.h>
void Print_Factorial ( const int N );
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
/* 你的代码将被嵌在这里 */
此题我还是享用上种方法,考虑到答案数字很长的问题还特意将数值设置为long long型
void Print_Factorial(const int N){
if(N>=0){
long long p=1;
for(int i=1;i<=N;i++)p=p*i;
printf("%lld",p);
}
else
printf("Invalid input");
}
可pta不认为我对
后来认识到100的阶乘是一个十分十分大的数字,即使时long long型也不能将它输出来,就要考虑到大数字的存储问题。
我的解决方法时:采用数组来存储每一位数,再逐次相乘,产生进位时用一个变量记录进位数。

浙公网安备 33010602011771号