1222carnivore  

阶乘计算学习
简单阶乘计算
本题要求实现一个计算非负整数阶乘的简单函数。

函数接口定义:
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型也不能将它输出来,就要考虑到大数字的存储问题。
我的解决方法时:采用数组来存储每一位数,再逐次相乘,产生进位时用一个变量记录进位数。

posted on 2024-07-13 21:58  作业-----  阅读(30)  评论(0)    收藏  举报