ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

100的阶乘实现方法(C语言)

2021-07-16 19:29:43  阅读:512  来源: 互联网

标签:10 int C语言 坐标 阶乘 100 进位


对于c语言中100的阶乘,由于共计158位,远远超过long long,所以不能用直接计算,所以选用数组接收数据。

思路:

首先创建一个数组,
1、使它里面每一个元素为1,
2、设置进位坐标、此时记录进位坐标初始为1,进位要比当前位置高1,每次进位后使进位加1
3、令当前位置数据开始乘以从1开始递增到100的数列,
4、设置临时变量num接收相乘后的值,超过10部分取整记为carry(作为进位的数值), 小于十的部分取余记录为此时a[i]的值;
5、检测每次进位数值carry是否大于10,若大于10,超过10的部分要向前进位,小于10的部分才是此时的进位值,进位后对需要进位坐标加1

int main(int argc,const char* argv[])
{
    short a[256] = {1};
    int cnt = 1; //最高进位数
    for(int i=2; i<101; i++)
    {
        int carry = 0;  //进位数值
        for(int j=0; j<cnt; j++)
        {
            short num = a[j]*i + carry;
            a[j] = num%10;
            carry = num/10;
        }
        while(carry)
        {
            a[cnt++] = carry%10;    //首先使当前进位获得个位数值,再使下一位获得十位数值
            carry /= 10;    //控制循环次数,最多为两次
        }
    }
    while(cnt--)
    {
        printf("%d", a[cnt]);   //逆序输出a
    }
}

输出结果
在这里插入图片描述

标签:10,int,C语言,坐标,阶乘,100,进位
来源: https://blog.csdn.net/qq_30348815/article/details/118817568

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有