C语言解决n的阶乘问题

这篇具有很好参考价值的文章主要介绍了C语言解决n的阶乘问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.输入n,输出n的阶乘

二.输入n,输出1!+2!+3!+~~~~+n!

法一(两个for循环):

法二(用一个for循环):


一.输入n,输出n的阶乘

n的阶乘就是1乘以2乘以3········一直乘到n,这样就很明显,我们可以用循环来做,那我们就以for循环举个例子:
 

#include<stdio.h>
int main()
{
    int n=0;//
    scanf("%d",&n);//输入n,决定求哪个数的阶乘,以及为循环做准备
    int a=1;//定义一个变量,用来存储最后结果
    for (int i=1;i<=n;i++)//确定循环n次,形成1*2*···*n
    {
        a=a*i;
    }
    printf("%d的阶乘是:%d\n",n,a);
    return 0;
}

我们运行来看看:
C语言解决n的阶乘问题

 4!=4*3*2*1=24,所以结果正确,这里需要注意一下int类型的范围,一旦输入的n过大,就有可能会出错:
C语言解决n的阶乘问题

 如果需要求比较大的数的阶乘,可用long long类型,输出格式用‘lld’就行

二.输入n,输出1!+2!+3!+~~~~+n!

法一(两个for循环):

        这一题跟上一题相比,他把各个阶乘都加起来了,那么我们可以用两个for循环来解决这个问题:

#include<stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);//输入n,确定会有n个数的阶乘相加

    int he=0;//定义一个变量存放最后相加的结果
    for (int i=1;i<=n;i++)//循环n次
    {
        int a=1;//a定义这里特别重要
        for (int j=1;j<=i;j++)//这一个循环跟求n的阶乘是一样的
        {
            a=a*j;
        }//这一个循环结束就求出了一个数(i)的阶乘
        he=he+a;//把上面循环求出来的阶乘存起来,并不断累加
    }
    printf("%d个数各个数的阶乘和是:%d\n",n,he);
    return 0;
}

两个for循环,第二个循环它的本质就是求一个数的阶乘,第一个循环就是把各个数的阶乘累加起来,我们运行来看看:
C语言解决n的阶乘问题
1!+2!+3!+4!=1+2+6+24=33,所以结果正确,这里再提一点,第10行代码我注释它的位置很重要,我们把a定义在第6行试试:
C语言解决n的阶乘问题
我们运行看看:
C语言解决n的阶乘问题

 1!+2!+3!=9,但结果却变成了15,我们来分析看看:直接看第二个循环,i=1时,我们会有a=1*1=1;继续,i=2;也就是第二个循环要2次,第一次:a=1*1=1,第二次:a=1*2=2;一直到这里看似都没问题,接下来就出现问题了,当i=3;也就是第二个循环要循环三次,第一次:a=2*1=2,第二次:a=2*2=4;第三次:a=4*3=12;所以最后输出结果就是1+2+12=15;第三次循环出现了问题,问题出在a不再是从1开始求阶乘,因为a一直没有清空,它一直保留着上一次循环a存的值,所以a必须放到第10行也就是第二个for循环的前面,这样每循环一次就会把a重新赋值为1,那么第二个循环求阶乘就不会出错

法二(用一个for循环):

这个题用两个for循环感觉有点复杂且需要注意的地方有点多,容易出错,那我们试着能不能用一个循环就解决它:
 

#include<stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);//输入n,确定会有n个数的阶乘相加
    int a=1;
    int he=0;
    for(int i=1;i<=n;i++)//循环n次
    {
        a=a*i;
        he=he+a;
    }
    printf("%d个数各个数的阶乘和是:%d\n",n,he);
    return 0;
}

 结果是:
C语言解决n的阶乘问题

 这里的循环很有趣,来分析一下:第一次:i=1,a=1*1=1,he=0+1=1;第二次:i=2,a=1*2=2,he=1+2=3;第三次:i=3,a=2*3=6;he=3+6=9;第四次:i=4,a=6*4=24,he=9+24=33。之所以有趣是因为这个循环反而利用了a不清空这一特点,直接让a接着乘,这样也能算出正确答案。

 文章来源地址https://www.toymoban.com/news/detail-438829.html

到了这里,关于C语言解决n的阶乘问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2.C语言——输入输出

    1.输入:getchar() 字面意思, 接收单个字符 ,使用方法 2.输出:putchar() 1.输入:scanf() 格式: scanf(“格式控制字符串”,地址列表); 如果格式符之间添加了空格,那么按照规则, 会忽略掉全部的空白符 直到遇到下一个不是空白符的字符 格式说明符 意义 %d 输入有符号的十进制数

    2024年02月19日
    浏览(32)
  • R语言 | 输入与输出

    目录 一、认识文件夹 1.1 getwd()函数 1.2 setwd()函数 1.3 file.path()函数 1.4 dir()函数 1.5 list.files()函数 1.6 file.exists()函数 1.7 file.rename()函数 1.8 file.create()函数 1.9 file.copy()函数 ​1.10 file.remove()函数 二、数据输出:cat()函数 三、读取数据:scan()函数 四、输出数据:write()函数 五、数据

    2024年02月03日
    浏览(26)
  • C语言——数据的输入输出

    C语言中没有专门的输入输出语句,C语言的输入输出是靠库函数来实现的。 格式: printf(“格式控制字符串”,输出列表); 功能: 按格式控制字符串规定的格式,向输出设备(一般为显示器)输出,输出列表中各输出项的值。 如: 格式控制:由双引号括起来的字符串,

    2024年02月12日
    浏览(32)
  • 6、C语言:输入与输出

    使用输入/输出库函数的每个源程序文件必须包含: 许多程序只从一个输入流中读取数据,并且只向一个输出流中输出数据。对于这样的程序,只需要使用函数getchar、putchar和printf实现输入/输出即可。 格式化输出——printf函数 函数printf在输出格式format的控制下,将其参数进行

    2024年02月01日
    浏览(41)
  • C语言 链表输入输出数组

            链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一

    2024年02月08日
    浏览(39)
  • 多组的输入输出(C语言)

    当你想计算多组数字相加时,那就需要输入多个数字,在C语言中,一般一个scanf只能输入一组数据,那如何能同时输入多组数据呢? 例(一):  直接用while来解决,上代码: 例(二):     这个就更显而易见了,直接用while:  例(三):  例(四):     例(五):

    2024年02月08日
    浏览(28)
  • 【C语言】对文件的输入输出

    💗个人主页💗 ⭐个人专栏——C语言初步学习⭐ 💫点击关注🤩一起学习C语言💯💫 凡是用过计算机的人都不会对“文件”感到陌生,大多数人都接触过或使用过文件,例如: 写一篇文章把它存放到磁盘上以文件形式保存; 编写好一个程序,以文件形式保存在磁盘中; 用

    2024年02月08日
    浏览(36)
  • C语言入门篇——输入输出篇

    目录 1、printf()函数 1.1、printf()函数中的标记 1.2、输出最小宽度(width) 1.3、精度(.precision) 2、scanf()函数 2.1、scanf(“输入控制符”, 输入参数) 2.2、scanf(“输入控制符非输入控制符”, 输入参数); 2.3、字符串和转义字符 2.4、注意事项 printf()函数是C语言标准输出函数,用于将

    2024年02月04日
    浏览(34)
  • 【C语言基础】数据输入输出

    📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉 📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处 数据输入的作用:

    2024年02月11日
    浏览(34)
  • C语言学习笔记:输入&输出

    ✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教! 目录 scanf和printf gets和puts getchar和putchar printf是格式化的输出函数,scanf是C语言的输

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包