欢迎来到小居数码网-一家分享数码知识,生活小常识的网站,希望可以帮助到您。

当前位置:生活小常识 > 数码知识 >
优质

阶乘c++语言程序函数(阶乘c语言程序函数)

数码知识

周孝聍优秀作者

原创内容 来源:小居数码网 时间:2024-07-29 14:06:01 阅读() 收藏:31 分享:73

导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有606个文字,大小约为3KB,预计阅读时间2分钟。

今天这道题目呢,又是我们的老朋友“阶乘计算”,不过相较于之前那道阶乘计算而言,这道题目的难度略有提升。

阶乘c语言程序函数

就是先需要对输入的整数N进行一个判断,该整数不超过1000,如果N是非负整数,则函数在一行中必须打印N!得到的值,否则打印“Invalid input”。

梳理逻辑

这道题目的逻辑很简单,不过针对函数篇的题目,我们还是按照固有形式来做。

就是进行倒推,根据题目给定的裁判测试程序样例,然后倒推得到逻辑。

但很显然,这道题目既然给定N的范围,就说明N的范围是要考虑在内的。

正如1000的阶乘等于超级大的数,很显然用double、long等数据变量类型都无法表示。

所以这道题目优先级最高的方法应该是选择数组。

很显然,如图所示,在用数组的方法来解决这道题目时,整道题目的逻辑就一下子变得清晰起来,难度也下降了不少,也为我们解决这道题提供了方向。

代码实现

//阶乘计算升级版#include <stdio.h>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<=1000&&N>=0){//N的值要不超过1000,且为非负        for(int i = 1; i <= N; i++){//从1开始,到N为止            for(int j = 0; j < digit; j++){//当digit=1时,当digit=2时;            //当digit=3时,当digit=4时,当digit=5时                every = Store[j]*i+M;//every = 1+0=1;every=1*2+0;every=2*3+0;                //every=6*4+0=24                Store[j] = every%10;//1,2,6,4                M = every/10;//0,0,0,2            }            while(M!=0){//M=2                Store[digit]=M%10;//0                M = M/10;//0                digit++;//+1            }        }        for(int i = digit-1; i >= 0;i--){            printf("%d",Store[i]);        }    }    else{        printf("Invalid input");    }}

结果测试

总结

在很多时候,数组真的非常好用,就拿今天这道题目来说,能够解决阶乘的一个超过数据变量范围的问题,数组就很值得称赞了!

上面就是小居数码小编今天给大家介绍的关于(阶乘c语言程序函数)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

94%的朋友还想知道的:

(473)个朋友认为回复得到帮助。

部分文章信息来源于以及网友投稿,转载请说明出处。

本文标题:阶乘c++语言程序函数(阶乘c语言程序函数):http://sjzlt.cn/shuma/152567.html

猜你喜欢