For循环

本文详细介绍了C语言中的FOR循环,包括基本流程、与IF的嵌套使用、基本内容和多个FOR循环的嵌套。重点讲解了FOR循环的自增问题、浮点数存储的不精确性以及嵌套循环的执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 FOR循环的流程

    以下是一个累加代码。

    if默认只控制一行语句,if也一样。

    先执行i=1,然后执行i<=100,如果成立,就执行sum,++i执行标志着循环一次结束。

   注意,i=1只执行一次。

#include <stdio.h>
int main(void)
{    
    int i,sum=0;//sum记得要赋值,不然就是变量没有初始化
    for(i=1;i<=100;++i)
        sum=sum+i;
    printf("sum=%d\n",sum);
    return 0;
}


二 for和if的嵌套使用

#include <stdio.h>
int main()
{
    int sum=0;
    for(i=3;i<=10;i++)
    {
        if(i%3==0)
            sum=sum+i;
        printf("sum=%d\n",sum);
    }
    return 0;
}

  输出结果就是:

  

sum=3
sum=3
sum=3
sum=9
sum=9
sum=9
sum=18
sum=18

  因为if默认只能控制一个语句,所以无论成不成立,都会输出printf语句

三 for循环的基本内容

   1.定义:某些代码会重复执行

   2.格式:for(1;2;3)

                      语句A;

                  1先执行,然后2,最后3,然后232323……,1只执行一次。

   3.强制转换符

       左/右 如果左右都是整数,那么输出也不会有小数点

       格式:(数据类型)(表达式)

       功能:把表达式的值强制转化为指定数据类型

#include<stdio.h>
int main()
{
	int i;
	float sum=0;
	for(i=1;i<=100;i++){
		sum=sum+1/(float)i;
		//也可以写成sum=sum+1.0/i; 
	     //  "/"号左右如果都是整数,结果输出也是一个整数 
		//sum=sum+(float)(1/i);这样写也是错的,因为前面是整型后面是整型,没有小数位 
				}
	printf("%f\n",sum);
	return 0;
	
 } 

   4.浮点数存储所带来的问题

      float和double都不能保证可以精确的存储一个小数。(浮点型存放的是近似值,例如存放5,实际上存放的可能是4.999999)

     Q1: 如何判断一个数是不是0

if(|x-0.000001|<0.0000001)

      可以理解为去心邻域(?)

    Q2:为什么循环更新的变量不能定义成浮点型?(即不能for(float i=0))

    因为for循环的自增中float的存储值不准确,即判断i<=100,可能float自增之后得到的值是100.00001,恰好不符合

四 多个for循环的嵌套使用

      1.格式:for(1;2;3)

                       for(4;5;6)

                           A;

                           B;

       2.流程

        1------2(成立)---4---5---A----6-----5(成立的话)-----A----6---……--5(不成立,脱离第二个for循环)----3------2(判断成立)---4----5-----A-----6……继续执行第二个里面的for循环,然后到5判断不成立脱离。直到2判断不成立,执行B。

           重点一:内部执行完毕才能执行3

           重点二:for默认只能控制一个,也就是说,绿色部分只能控制黄语句,和红色的B没关系。

           重点三:绿色里,1——2(成立)以后,直接进入黄色部分,黄色部分执行自己的for循环,直到黄色部分结束,继续绿色部分的for循环,绿色的for循环里嵌套黄色,就会再次执行黄色的循环,重新4——5——A——6,直到绿色部分结束,才会执行红色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值