【C语言】第四期——循环语句

目录

前言

[1 for循环](#1 for循环)

[1.1 基本结构](#1.1 基本结构)

[1.2 应用](#1.2 应用)

[1.2.1 输出0-10之间的所有整数](#1.2.1 输出0-10之间的所有整数)

[1.2.2 打印1-10之间的所有整数(包含1和10)](#1.2.2 打印1-10之间的所有整数(包含1和10))

[1.2.3 求 1+2+3+4 +...100的和](#1.2.3 求 1+2+3+4 +...100的和)

[1.2.4 计算5的阶乘](#1.2.4 计算5的阶乘)

[1.2.5 打印一个3*4的矩形](#1.2.5 打印一个3*4的矩形)

[1.2.6 打印一个5*5的直角三角形](#1.2.6 打印一个5*5的直角三角形)

[1.2.7 for循环打印一个九九乘法表](#1.2.7 for循环打印一个九九乘法表)

[2 while 循环](#2 while 循环)

[2.1 基本结构](#2.1 基本结构)

[2.2 应用](#2.2 应用)

[2.2.1 输出三句话](#2.2.1 输出三句话)

[2.2.2 输出0-10之间的所有整数](#2.2.2 输出0-10之间的所有整数)

[2.2.3 求 1+2+3+4 +...100的和](#2.2.3 求 1+2+3+4 +...100的和)

[3 do...while 循环](#3 do...while 循环)

[3.1 基本结构](#3.1 基本结构)

[3.2 应用](#3.2 应用)

3.2.1输出三句话

[3.2.2 求 1+2+3+4 +...100的和](#3.2.2 求 1+2+3+4 +...100的和)

[4 do...while 和while的区别](#4 do...while 和while的区别)

[5 无限循环 (死循环)](#5 无限循环 (死循环))

[6 循环控制语句(break、 continue 、 goto)](#6 循环控制语句(break、 continue 、 goto))

[6.1 break语句](#6.1 break语句)

[6.2 continue 语句](#6.2 continue 语句)

[6.3 goto 语句(了解)](#6.3 goto 语句(了解))


前言

在前面的课程中,我们已经会使用顺序结构和选择结构了

但是,在实际开发中,只使用这两种结构是不够的,还需要使用到循环结构,也被称为重复结构因为在开发中经常需要处理重复问题,如:

(1)求 1+2+3+4 +...100的和

(2)输出0-50之间所有的偶数

像这样的问题就需要使用到C语言的循环语句

C语言中的循环语句有 for 循环、while循环、do...while循环


1 for循环

1.1 基本结构

cpp 复制代码
for (初始语句;条件表达式;控制条件语句){
循环体语句
}

条件表达式返回true时循环体不停地进行循环,直到条件表达式返回false时自动退出循环


1.2 应用

1.2.1 输出0-10之间的所有整数

写法一:

cpp 复制代码
 #include <stdio.h>

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

写法二:

cpp 复制代码
 #include <stdio.h>

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

1.2.2 打印1-10之间的所有整数(包含1和10)

cpp 复制代码
 #include <stdio.h>

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

1.2.3 求 1+2+3+4 +...100的和

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     int sum;
     for (int i = 1; i <= 100; i++)
     {
         sum += i;
     }
     printf("sum=%d\n", sum);
     return 0;
 }

1.2.4 计算5的阶乘

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     int sum = 1;
     for (int i = 1; i <= 5; i++)
     {
         sum *= i;
     }    
     printf("sum=%d\n", sum);
     return 0;
 }

1.2.5 打印一个3*4的矩形

写法一:

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     for (int i = 1; i <= 12; i++)
     {
         printf("*");
     }
     if (i % 4 == 0)
     {
         printf("\n");
     }
    return 0;
 }

写法二:

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
    int line = 3;
    int num = 4;
    for (int i = 1; i <= line; i++)
    {
        for (int j = 0; j < num; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
 }

1.2.6 打印一个5*5的直角三角形

cpp 复制代码
#include <stdio.h>
 int main(void)
 {
    int line = 5;
    for (int i = 1; i <= line; i++)
    {
        for (int j = 0; j < i; j++)
        {
            printf("* ");
        }
        printf("\n");
    }
    return 0;
 }

1.2.7 for循环打印一个九九乘法表

cpp 复制代码
#include <stdio.h> 

int main(void) {
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            printf("%dx%d=%d\t", i, j, i * j);
        }
        printf("\n");
    }
    return 0;
}

2 while 循环

2.1 基本结构

cpp 复制代码
while(表达式)
 {
语句
}

2.2 应用

2.2.1 输出三句话

cpp 复制代码
#include <stdio.h> 

int main(void) {
    int i = 0;
    while (i < 3)
    {
        printf("第%d句话\n", i + 1);
        i++;
    }
    return 0;
}

2.2.2 输出0-10之间的所有整数

cpp 复制代码
 #include <stdio.h>

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

2.2.3 求 1+2+3+4 +...100的和

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     int i = 1;
     int sum = 0;
     while (i <= 100)
     {
         sum += i;
         i++;
     }
     printf("sum=%d", sum);
     return 0;
 }

3 do...while 循环

3.1 基本结构

cpp 复制代码
do{
语句/循环体
}while(表达式/循环条件);

注意:

1、最后的分号不要忘记

2、循环条件中使用的变量需要经过初始化

3、循环体中,应有结束循环的条件,否则会造成死循环

4、do...while和while的功能基本一样,唯一的区别就是第一次循环条件不成立的情况下do...while会先执行一次,while不会执行


3.2 应用

3.2.1输出三句话

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     int i = 0;
     do
     {
         printf("第%d句话\n", i + 1);
         i++;
     } while (i < 3);
     return 0;
 }

3.2.2 求 1+2+3+4 +...100的和

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     int i = 1;
     int sum = 0;
     do
     {
         sum += i;
         i++;
     } while (i <= 100);
     printf("sum=%d", sum);
     return 0;
 }

4 do...while 和while的区别

第一次循环条件不成立的情况下do...while会先执行一次,while不会执行
while

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     int i = 10;
     while (i < 2)
     {
         printf("执行");
     }
     return 0;
 }
 //不会输出任何内容

do...while

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     int j = 10;
     do
     {
         printf("执行");
     } while (j < 2);
     return 0;
 }
 //输出:执行            
//说明:无论条件是否成立都会执行一次

5 无限循环 (死循环)

while

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     while (1)
     {
         printf("一直执行\n");
     }
     return 0;
 }

for

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
     for (;;)
     {
         printf("This loop will run forever.\n");
     }
     return 0;
 }

如果条件永远不为假,则循环将变成无限循环。

for 循环在传统意义上可用于实现无限循环。

由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。


6 循环控制语句(break、 continue 、 goto)

循环控制语句主要用于跳出循环体

6.1 break语句

break用于跳出本次循环,遇到break 循环终止,后面代码也不会执行

break可以用在switch case中 也可以用在 for 循环和 while循环中

示例:

cpp 复制代码
#include <stdio.h> 

int main(void) {
    int i = 0;
    while (i < 10)
    {
        if (3 == i)
        {
            break; // 结束当前循环
        }
        printf("i=%d\n", i);
        i++;
    }
    return 0;
}

在多层循环中,一个break语句只能向外跳出一层

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
    for (int i = 0; i < 5; i++)
    {
        printf("外层%d\n", i);
        for (int j = 0; j < 3; j++)
        {
            if (j == 1)
            {
                break;
            }
            printf("---里层%d\n", j);
        }
    }
    return 0;
 }

提示:

1、如果在循环中已经执行了break语句,就不会执行循环体中位于break后的语句

2、在多层循环中,一个break语句只能向外跳出一层


6.2 continue 语句

主要用于跳过当次循环,只能在循环语句中使用

continue可以用在for循环以及 while循环中,但是不建议用在while循环中,不小心容易死循环

cpp 复制代码
 #include <stdio.h>

 int main(void)
 {
    int i;
    for (i = 0; i < 10; i++)
    {
        if (3 == i)
        {
            continue; // 跳过本次循环
        }
        printf("i=%d\n", i);
    }
    return 0;
 }

continue 也可以用在while中,但是要注意死循环 (下面代码就是死循环)

cpp 复制代码
#include <stdio.h>

int main(void)
{
	int i = 0;
	while (i < 10)
	{
		if (3 == i)
		{
			continue; // 结束当前循环
		}
		printf("i=%d\n", i);
		i++;
	}
	return 0;
}

正确写法

cpp 复制代码
#include <stdio.h>

int main(void)
{
	int i = 0;
	while (i < 10)
	{
		if (3 == i)
		{
			i++;
			continue; // 结束当前循环
		}
		printf("i=%d\n", i);
		i++;
	}
	return 0;
}

6.3 goto 语句(了解)

在任何编程语言中如果能使用break或者continue解决的问题,不建议使用goto语句,因为它使程序的控制流难以跟踪,使程序难以理解和难以修改

但是在某些场合下goto语句还是比较有用的,例如一次跳出两层或多层循环

这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层循环

cpp 复制代码
#include <stdio.h>

int main()
{
	printf("你好,中国!\n");
	goto end;
	printf("hello United States!\n");
end:
	printf("hello world!");
	return 0;
}
cpp 复制代码
#include <stdio.h>

int main()
{
	for (int i = 0; i < 4; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			printf("*");
			if (j == 9)
			{
				printf("\n");
				goto err;
			}
		}
		printf("/n");
	}
err:
	printf("error stop...");
	return 0;
}
相关推荐
许科大3 小时前
【笔记ing】C语言补充、组成原理数据表示与汇编实战、操作系统文件实战(高级阶段)
c语言
时时三省4 小时前
【时时三省】(C语言基础)求多项式1-1/2+1/3-1/4+...+1/99-1/100的值 用C语言表示
c语言
我不是程序猿儿10 小时前
【C】识别一份嵌入式工程文件
c语言·开发语言
子豪-中国机器人14 小时前
2月17日c语言框架
c语言·开发语言
张胤尘14 小时前
C/C++ | 每日一练 (2)
c语言·c++·面试
醉城夜风~15 小时前
[C语言]指针进阶压轴题
c语言
weixin_5358542215 小时前
oppo,汤臣倍健,康冠科技,高途教育25届春招内推
c语言·前端·嵌入式硬件·硬件工程·求职招聘
宋康17 小时前
C/C++ 指针避坑20条
c语言·开发语言·c++
仟濹17 小时前
【二分搜索 C/C++】洛谷 P1873 EKO / 砍树
c语言·c++·算法
YH_DevJourney18 小时前
Linux-C/C++《C/8、系统信息与系统资源》
linux·c语言·c++