首页 > 其他分享 >5.1.1 第三种循环----for循环

5.1.1 第三种循环----for循环

时间:2024-09-14 09:53:06浏览次数:14  
标签:5.1 int scanf ---- 循环 printf 阶乘 fac

如图

结果闺女买了两袋包子,一袋十二个,一共24个包子.为啥?4!=24.n!表示阶乘,n!=1*2*3*...*n如果我们要写一个程序,计算一个数n的阶乘并打印结果,要怎么设计呢? 变量:我们需要输入一个整数n.然后需要一个fac来记录n累乘得结果,最后一个整数i,来让他在fac累乘之后每次加1,在i大于n时退出循环.用我们学过的while循环来做,代码如下:

#include<stdio.h>
int main()
{
    int fac=1;
    int n;
    scanf("%d",&n);

   int i=1;
    while(i<=n)
    {
        fac*=i;
        i++;
    }
    printf("%d的阶乘为%d",n,fac); 
}

我们看到在我们这个程序里,先是把i初始化,然后再进行判断,在循环的每一步我们让i++.如果我们写出了这样的循环,在c语言中,还有一种语句可以用来表示这种循环,那就是for.

for语句的结构

for(初始动作;循环条件;循环每轮要做的事情)

{

循环体

}

顺序:第一次执行 1 2 4 3  后面每次执行 2 4 3.

for循环就像一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,不断重复循环,而每执行一次循环,计数器的值都会以一定步进做调整,比如加一或者减一.

用for换成while,代码如下:

#include<stdio.h>
int main()
{

    int fac=1;
    int n;
    scanf("%d",&n);

    int i=1
    for(i=1;i<=n;i++)
    {
        fac*=i;
    } 
    printf("%d的阶乘为%d",n,fac); 
}

变量i只参与了循环,那我们可以这样简化他.把

     int i=1
    for(i=1;i<=n;i++)

改成

for(int i=1;i<=n;i++)

我们还注意到,在第一次循环的时候,fac=1*1=1,可是fac本来的值就是1了,这样做不是无意义吗,那如果我们把i改为2呢.我们来看看当n=1时,特殊情况,刚刚好合适,因为一开始就不满足循环条件,直接跳过循环,最后刚好输出fac最开始的值1.

我们知道n!是从开始的,那我们可不可以反过来,从n开始呢?可以.改动如下:

    int fac=1;
    int n;
    scanf("%d",&n);
    for(int i=n;i>1;i--)
    {
        fac*=i;
    } 
    printf("%d的阶乘为%d",n,fac); 

既然i是等于n的,那我们可不可以直接用n来做循环?可以,n=n;但前面应该要有一个变量来存储n原始始的值,否则最后输出的结果会出错.同时,在for中,像是n=n;这样的初始条件可以省略.所以,最终可以表示为

    int fac=1;
    int n;
    scanf("%d",&n);

    int=n;
    for(;n>1;n--)
    {
        fac*=n;
    } 
    printf("%d的阶乘为%d",i,fac); 

对于for循环来说,它的三个表达式是都可以省略的,但需要加上其他操作.
小套路:做求和的程序时,初始值应设为0;做求积的程序时,初始值应设为1.

标签:5.1,int,scanf,----,循环,printf,阶乘,fac
From: https://blog.csdn.net/qq_73908174/article/details/142248476

相关文章

  • IP 地址查询,给网络公关来点“真”的
    现在网络普及越来越广,影响力也越来越大,然而一些人为的操纵的负面事件也浮出水面,其中最为突出的便是“水军”操纵下的虚假网络公关战以及各种“刷量”服务。从“花5万就能上热搜”的非法生意被警方打击,到刷量公司被微博平台以不正当竞争为由告上法庭,网络世界中的“虚假繁荣”正......
  • 稀土抗菌剂在医疗方面的应用
    稀土抗菌剂在医疗领域有着广泛的应用,主要是因为其独特的抗菌性能和较低的毒性。以下是稀土抗菌剂在医疗方面的一些应用:医疗器械涂层:稀土抗菌剂可用于医疗器械的表面涂层,如手术器械、医用导管和植入物等。通过在这些器械表面形成抗菌层,能够有效抑制细菌、真菌等微生物的生长和......
  • Qt 实战(10)模型视图 | 10.3、模型数据索引
    文章目录一、模型数据索引1、什么是模型数据索引?2、模型3、获取`QModelndex`3.1、获取列表数据项索引3.2、获取表格数据项索引3.3、获取树数据项索引4、模型数据更新前言:在Qt框架中,模型/视图(Model/View)架构是一种强大的机制,它允许开发者将数据的存储(Model)与数据......
  • 铺先生:选址时需要注意什么因素?这三点要避免
    选址时需要注意什么因素?我们在做店铺选址的时候非常容易被外界因素所误导,导致所选择出来的地址与经营需求不符,导致出现这些情况的原因就是你没能注意到某些因素,为了避免再次出现此类情况,下面小编就来跟大家说说吧。1. 缺乏流量缺乏流量的地段对经营产生的危害是非常大的,任何一家脱......
  • 稀土紫外屏蔽剂在注塑件中的应用
    稀土纳米紫外屏蔽剂的工作原理稀土纳米紫外屏蔽剂具有光、热稳定性好,能够有效吸收和散射紫外线,无二次氧化过程的缺点,解决产品因为紫外线的原因造成的变质和老化问题。在注塑件材料中添加稀土纳米紫外屏蔽剂时,它们可以吸收和反射紫外光,保护注塑件免受紫外线的直接伤害,减少因紫......
  • 内网穿透技术的思考--反向代理、TCP 隧道、 UDP 打洞--C++代码示例
    概述内网穿透是一种技术,用于在私有局域网(LAN)中的设备与外部网络(如互联网)之间建立通信通道,使得外部设备可以访问内网中的服务。由于内网设备通常位于防火墙或NAT(网络地址转换)设备之后,外部网络无法直接访问它们。因此,内网穿透技术旨在解决这一问题。本文将讨论如何使用C++实现......
  • 【Fellow 领衔 | 高校认可会议 | 高录用 | EI检索 | 大会报告 | 人工智能、计算机、图
    重要信息大会网站:https://ais.cn/u/UFFvEb【投稿参会】截稿时间:以官网信息为准大会时间:2024年11月8-10日大会地点:中国-南京提交检索:EICompendex、Scopus*现场可领取会议资料(如纪念品、参会证书等),【click】投稿优惠、优先审核!支持单位:征稿主题智能信息检索技......
  • 当代码遇上“意外”:Python中的异常引发艺术
    引言异常处理是软件开发不可或缺的一部分。良好的异常管理不仅能够提升程序的稳定性与可靠性,还能显著改善用户体验。在Python中,“异常的引发”是指主动抛出一个错误信息,以通知调用者当前操作出现了问题。掌握这一技巧,对于编写高效、可维护的代码至关重要。基础语法介绍在Python......
  • verilog-1| 仲裁器
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录前言一、固定优先级仲裁器(FixedPriorityArbiter)1、case/if语句实现2、for循环语句实现参数化3、展开for循环的变体 4、补码相与法二、轮询仲裁器(RoundRobinArbiter)1、优先级仲裁器+优先级......
  • Python 入门教程(3)基础知识 | 3.2、数据类型、变量与常量
    文章目录一、数据类型、变量与常量1、数据类型2、变量3、常量一、数据类型、变量与常量1、数据类型Python的数据类型可以分为不可变类型和可变类型。不可变类型包括整数、浮点数、布尔值和元组,一旦创建,其值就不能改变。可变类型包括列表、字典和集合,它们的值可以......