- 简单版阶层计算
- 升级版阶层计算(c语言的基本类型不能存储)
简单版阶层计算:
其中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;
}
/* 你的代码将被嵌在这里 */
Factorial自定义函数的实现:
方法一:
int Factorial(const int N) {
int sum = 1;
if (N < 0)
return 0; //如果N是非负整数,返回0
else if (N == 0)
return 1; //如果N是0,则返回1
for (int i = 1; i <= N; i++) {
sum *= i;
}
return sum;
}
方法二:
int Factorial(const int N) {
if (N < 0)
return 0; //如果N是非负整数,返回0
else if (N == 0)
return 1;
return N * Factorial(N - 1); //用递归算法实现
}
升级版阶层计算(c语言的基本类型不能存储):
其中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;
}
/* 你的代码将被嵌在这里 */
Print_Factorial自定义函数的实现:
void Print_Factorial(const int N) {
char a[3000];
int alength = 1;
a[0] = 1;
if (N < 0)
{
printf("Invalid input\n");
return;
}
for (int i = 2; i <= N; i++)
{
int z = 0;
for (int k = 0; k < alength; k++)
{
int t = i * a[k] + z;
a[k] = t % 10;
z = t / 10;
}
while (z)
{
a[alength++]= z % 10;
z /= 10;
}
}
for (int i = alength - 1; i >= 0; i--)
printf("%d", a[i]);
}
标签:return,非负,int,Print,NF,C语言,Factorial,阶乘,const From: https://blog.csdn.net/qq_64468018/article/details/143438646