【明解C语言】之for循环

✌️目录

一、我与for循环的爱恨情仇

1.for循环书写格式

2.代码示例

3.流程图

4.break在for循环中的作用

5.continue在for循环中的作用

6.for循环的循环变量控制

7.for循环表达式的省略

8.关于for循环嵌套初始化部分的省略

二、练习题目

1.编写程序计算1+2+3+......+100的值

2.在屏幕上打印用“*”组成的正方形

3.编写程序计算一下1~100中所有的整数有多少个数字9

4.输出9*9乘法表


【明解C语言】之do... while循环_马桶上看算法的博客-CSDN博客C语言、循环语句、初级、编程语言https://blog.csdn.net/m0_63033419/article/details/123704397?spm=1001.2014.3001.5501【明解C语言】循环语句之while_马桶上看算法的博客-CSDN博客C语言、while循环、编程语言、后端、初级、https://blog.csdn.net/m0_63033419/article/details/123677431?spm=1001.2014.3001.5501

一、我与for循环的爱恨情仇

1.for循环书写格式

for(表达式1;表达式2;表达式3)
{
    //循环语句;
}

表达式1是初始化部分,表达式2是判断部分,表达式3是调整部分。

若满足判断部分的判断条件,则进入循环执行循环语句;否则跳出。 

2.代码示例

#include<stdio.h>

int main()
{
    int i = 0;
    for(i=1; i<=10; i++)
    {
        printf("%d ",i);
    }
    return 0;
}

输出结果:

3.流程图

4.break在for循环中的作用

#include<stdio.h>

int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)
    {
        if (i == 5)//如果i等于5进入if语句
            break;//跳出循环,使循环结束

        printf("%d ", i);
    }
    return 0;
}

输出结果:

5.continue在for循环中的作用

#include<stdio.h>

int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)
    {
        if (i == 5)
            continue;//只跳过本次循环,并不会跳出整个循环

        printf("%d ", i);
    }
    return 0;
}

输出结果:

6.for循环的循环变量控制

1.不可再for循环体内部修改循环变量,防止for循环失去控制。

例1:

#include<stdio.h>

int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)
    {

        printf("%d ", i);
        i = 5;//for循环体内部循环变量被修改了
    }
    return 0;
}

 输出结果:

循环的调整部分可以放在循环体内

例2:

#include<stdio.h>

int main()
{
    int i = 0;
    for (i = 1; i <= 10; )
    {

        printf("%d ", i);
        i++;//判断部分
    }
    return 0;
}

输出结果:

前提是自己知道放在这里可以,尽管自己知道可以,别人在看代码的时候 发现调整部分没有内容,有可能会填补,就得不到我们想要的结果了。(语法允许,但是我们不提倡)

例3就是在别人发现没有调整部分填补后的例子

例3:

#include<stdio.h>

int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)//i自加1
    {

        printf("%d ", i);
        i++;//i自加1
    }
    return 0;
}

输出结果:

2. 建议for语句的循环控制变量的取值采用“左闭右开区间的写法”。

(1)左闭右开区间写法

#include<stdio.h>

int main()
{
    int arr[10]={0};
    int i=0;
    for(i=0; i<10; i++)//左闭右开区间写法更能直观地反映出循环次数
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

(2)左右都是闭区间

#include<stdio.h>

int main()
{
    int arr[10]={0};
    int i=0;
    for(i=0; i<=9; i++)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

 两种方法都是一样的(唯一的区别是判断部分,但都是循环了十次)。

不建议第二种写法,建议左闭右开的写法。

7.for循环表达式的省略

#include<stdio.h>

int main()
{
    //判断部分的省略-判断部分恒为真
    //结果死循环
    for (;;)//表达式可以省略,但是分号不可以
    {
        printf("hehe");
    }
    return 0;
}

输出结果:

8.关于for循环嵌套初始化部分的省略

(1)省略前:

#include<stdio.h>

int main()
{
    int i = 0;
    int j = 0;
    for (i = 0; i < 3; i++)//嵌套外循环打印3次内循环
    {
        for (j = 0; j < 3; j++)//前套内循环打印3次hehe
        {
            printf("hehe\n");
        }
    }
    return 0;
}

输出结果:

 (2)省略后:

#include<stdio.h>

int main()
{
    int i = 0;
    int j = 0;
    for (; i < 3; i++)
    {
        for (; j < 3; j++)
        {
            printf("hehe\n");
        }
    }
}

输出结果:打印了3次hehe

代码分析: 

当i=0,i<3的时候,进入循环语句,j加了3次,这个时候已经打印了3个hehe。

j变成3的时候,不满足判断条件了,要进入到i++,i变成了1,​​​i<3进入循环语句。

这个时候的j没有被初始化成0,j始终是3,3不小于3,不满足条件跳出循环。 也就跳过了printf,无法打印出hehe。


二、练习题目

1.编写程序计算1+2+3+......+100的值

#include<stdio.h>

int main()
{
    int i = 0;
    int sum = 0;//计算1+2+3+......+100的值
    for (i = 1; i <= 100; i++)
    {
        //把sum+i的值赋给sum并累加
        sum = sum + i;
    }
    printf("%d\n", sum);
    return 0;
}

输出结果: 

2.在屏幕上打印用“*”组成的正方形

#include<stdio.h>

int main()
{
	int i = 0;
	int j = 0;
	int n = 0;
	scanf("%d", &n);//n决定正方形的边长
	for (i = 0; i < n; i++)//打印正方形的宽
	{
		for (j = 0; j < n; j++)//打印正方形的长
		{
			printf("* ");
		}
		printf("\n");
	}
	return 0;
}

输出结果:

 

3.编写程序计算一下1~100中所有的整数有多少个数字9

#include<stdio.h>

int main()
{
    int a = 0;
    int count = 0;//统计9的个数
    for (a = 1; a <= 100; a++)
    {
        if (a % 10 == 9)//判断个位是9
        {
            count++;//若个位是9,count个数加1
        }
        if (a / 10 == 9)//判断十位是9
        {
            count++;//若十位是9,count个数加1
        }
    }
    printf("count=%d\n", count);
    return 0;
}

输出结果:

 

4.输出9*9乘法表

#include<stdio.h>

int main()
{
    int i = 0;//乘数
    for (i = 1; i <= 9; i++)
    {
        int j = 0;//被乘数
        for (j = 1; j <= i; j++)
        {
            //先打印i和j在打印i*j的结果
            printf("%d*%d=%d ", i, j, i * j);
        }
        printf("\n");//每一次换行
    }
    return 0;
}

输出结果:

 

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言双重for循环是指在程序中使用两个嵌套的for循环。在双重for循环中,外层循环控制内层循环的执行次数,内层循环在外层循环每次执行时都会完整地执行一次。通过双重for循环,我们可以实现对二维数组的遍历、多次嵌套的操作以及其他需要重复执行的任务。 在引用中,我们可以看到一个三层for循环的例子。该程序通过三层嵌套的循环输出了三层的循环变量i、j、k的值,以及相应的循环提示信息。外层循环每次执行一次,中层循环在外层循环每次执行时都会完整地执行三次,内层循环在中层循环每次执行时都会完整地执行三次。 在引用中,我们可以看到一个双层for循环的例子。该程序使用两个嵌套的for循环输出了循环变量i、j的值以及相应的循环提示信息。外层循环在每次执行时,会完整地执行一次内层循环,内层循环在外层循环每次执行时都会完整地执行三次。 在引用中,我们可以看到一个嵌套的for循环的例子,其中外层循环控制内层循环的执行次数。该程序输出了循环变量i、j、k的值以及相应的循环提示信息。外层循环在每次执行时,内层循环会根据外层循环的当前值限制内层循环的执行次数。 总之,C语言的双重for循环是一种常用的循环结构,可以用来实现对二维数组的遍历和其他需要多次嵌套的操作。通过控制外层循环和内层循环循环条件,我们可以灵活地控制循环的执行次数和顺序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C语言-多层for循环详解](https://blog.csdn.net/weixin_45571585/article/details/126698216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [C语言基础语法第三章流程控制 双层for循环示列](https://blog.csdn.net/Taylorswift_TS/article/details/130554436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与大师约会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值