今天这道题目呢,又是我们的老朋友“阶乘计算”,不过相较于之前那道阶乘计算而言,这道题目的难度略有提升。
就是先需要对输入的整数N进行一个判断,该整数不超过1000,如果N是非负整数,则函数在一行中必须打印N!得到的值,否则打印“ input”。
梳理逻辑
这道题目的逻辑很简单,不过针对函数篇的题目,我们还是按照固有形式来做。
就是进行倒推,根据题目给定的裁判测试程序样例,然后倒推得到逻辑。
但很显然,这道题目既然给定N的范围,就说明N的范围是要考虑在内的。
正如1000的阶乘等于超级大的数,很显然用、long等数据变量类型都无法表示。
所以这道题目优先级最高的方法应该是选择数组。
很显然,如图所示,在用数组的方法来解决这道题目时,整道题目的逻辑就一下子变得清晰起来,难度也下降了不少,也为我们解决这道题提供了方向。
代码实现
//阶乘计算升级版
#include
void Print_Factorial ( const int N );
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
void Print_Factorial ( const int N ){
int Store[10000];//用数组的方法
Store[0] = 1;//数组下标第一个元素应该是从1开始的
int every = 0;//每一位的结果
int M = 0;//进位
int digit = 1;//各个位数
if(N=0){//N的值要不超过1000,且为非负
for(int i = 1; i <= N; i++){//从1开始,到N为止
for(int j = 0; j = 0;i--){
printf("%d",Store[i]);
}
}
else{
printf("Invalid input");
}
}
结果测试
总结
在很多时候,数组真的非常好用,就拿今天这道题目来说,能够解决阶乘的一个超过数据变量范围的问题,数组就很值得称赞了!
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666
声明: 本站内容转载于网络,版权归原作者所有,仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任,若侵犯到你的版权利益,请联系我们,会尽快删除处理!