【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)

​​​​​​​​​​​​​​

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第1张图片

或许不是今天,或许不是明天,或许不是下个月,但是,有一件事是确定的,有一天我肯定会成为冠军。—莫雷诺


目录

C语言循环结构的三种循环语句

1、for语句语句循环结构

1.1for语句的循环结构

1.2for语句的执行步骤 

1.3for语句里的break和continue

1.4练习

1.4.1练习1

1.4.2练习2

2、while语句循环结构

2.1while语句的结构​​​​​​​

2.2while语句的执行步骤

2.3while语句中的break和continue

2.4练习 

2.4.1练习

3、do-while语句循环结构

3.1do-while语句执行步骤

3.2do-while语句中的break和continue

控制循环结构的两个语句

1、break语句

2、continue语句

3、嵌套循环

练习

1、计算n的阶乘

2、计算1!+2!+3!+...+10!

3、尝试用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形


C语言循环结构的三种循环语句

在日常生活中我们许多事物离不开循环。像超市的收银系统,学校的学生管理系统等。都是重复一些类似的操作来录入信息,这时候就需要用到循环控制语句完成。下面我就来介绍这几种循环语句:


1、for语句语句循环结构

1.1for语句的循环结构

‍♀️通过以下程序来看下它的结构:

//for语法结构
#include 
int main()
{
	for(表达式1;表达式2;表达式3)
	{
		循环体;
	}
}
  • 表达式1是程序始初我们定义的值,它经过循环过后会改变我们称之循环变量
  • 表达式2根据条件来判断true或false(继续或结束程序)我们称之为循环判断
  • 表达式3它也会随着程序的运行不断自增,我们也称它为循环变量
  • 循环体内容一般就是我们要求的内容也就是程序的目的

for语句流程图: 

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第2张图片


1.2for语句的执行步骤 

//for语法结构
#include 
int main()
{
	for(表达式1;表达式2;表达式3)
	{
		循环体;
	}
}

执行步骤

第一,给表达式1进行循环变量初始化,表达式2设置循环终止条件,表达式3设置循环变量增量或减量;

第二,执行表达式2,判断结果为true(真),则进入表达式3循环变量增量或减量,否则为false(假)退出循环;

第三,执行循环体内容;

第四,转入第二步;


注意

for语句里面的每个表达式都用英文分号;隔开 


例子:求0的9的和

//求0到9的和
#include

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

输出:45 


第一次:i=0;i<10;i++,执行循环体内容,此时s=0;

第二次:i=1;i<10;i++,执行循环体内容,此时s=1;

此处省略多次

最后一次:i=10;i!<9,退出循环,此时s=45;


我们可以理解为每一次判断过后,i都要自增。自增后的i作为下一次判断条件,直到判断终止。


1.3for语句里的break和continue

首先我们要了解到break和continue的用法。在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。而continue则是退出本次循环,不终止循环,继续下一次循环。

我们来看break在for语句中的用法:

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

输出:1 2 3 4 


这个程序比较容易理解,循环体内输出4次i后,i自增到5。if语句判断i==5为正则运行break语句,退出了整个循环。


‍♀️continue在for语句中的用法:

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

输出:1 2 3 4 6 7 8 9 10


可以看到,与break不同之处是。当i自增到5时候,continue语句执行退出了当次的循环后,for语句还并未结束。所以输出的结果也是截然不同的。 


相信大家都已经懂得了for循环的结构、运行流程和for中break和continue的用法,我们来练习一下吧。


1.4练习

1.4.1练习1

有以下程序输出的结果是什么

#include 
int main()
{
	int a = 0, b = 0;
	for (a = 1, b = 1; a <= 100; a++)
	{
		if (b >= 20) break;
		if (b % 3 == 1)
		{
			b = b + 3;
			continue;
		}
		b = b-5;
	}
	printf("%d\n", a);
	return 0;
}

输出: 8


第一次循环:a = 1,b=1->b<20,if不成立,b%3==1%3==1成立,b=b+3, 此时b的值为4

第二次循环:a = 2,b=4->b<20,if不成立,4%3==1成立,b=b+3, 此时b的值为7

第三次循环:a = 3,b=7->b<20,if不成立,7%3==1成立,b=b+3, 此时b的值为10

第四次循环:a = 4,b=10->b<20,if不成立,10%3==1成立,b=b+3, 此时b的值为13

第五次循环:a = 5,b=13->b<20,if不成立,13%3==1成立,b=b+3, 此时b的值为16

第六次循环:a = 6,b=16->b<20,if不成立,16%3==1成立,b=b+3, 此时b的值为19

第七次循环:a = 7,b=19->b<20,if不成立,19%3==1成立,b=b+3, 此时b的值为22

第八次循环:a = 8,b=22->b>20,if成立,循环break提出


最后打印a:8


1.4.2练习2

‍♀️找到10个数里面最大的值使用for循环

#include

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int rat = sizeof(arr) /sizeof(arr[0]);
	int max = 0;
	for (int i = 0; i < rat; i++)
	{
		if (arr[i] > max)
			max = arr[i];
	}
	printf("%d\n", max);
	return 0;
}

输出:10


sizeof是求字节数,sizeof(arr)求出arr数组总字节数,sizeof(arr[0])求出arr单个元素字节数。那么sizeof(arr) /sizeof(arr[0])就是arr数组的长度了。

上述程序 ,输出的结果是正确的。但这个程序是由漏洞的,这个程序固定设计了十个整数。那么自行输入呢。输入的数可以是整数、负数。那时候,最大的值该怎么求呢?


 我们可以这样改:

#include

int main()
{
	int n = 0;
	int arr[10] = {0};
	int rat = sizeof(arr) / sizeof(arr[0])-1;
	for (int i = 0; i < rat; i++)
	{
		scanf("%d ", &arr[i]);
	}
	int max = arr[0];
	for (int j = 0; j < rat; j++)
	{
		if (arr[j] > max)
			max = arr[j];
	}
	printf("%d\n", max);
}

输入:-1 -2 -3 -4 -5 -1 -6 -10 -9 -10

输出:-1


我们可以看到上述程序中的max=arr[0]了,防止我输入的全都是负数,因此我干脆将第一个元素先最为最大值。


2、while语句循环结构

2.1while语句的结构​​​​​​​

//while语法结构
#include                       
int main()                              
{                                       
	表达式1;
  	while (表达式2)                                                      
	{
		语句;
		表达式3;
	}
}

注意不知道各位发现没有for语句与while语句有着同工异曲之处。那么如果我们会了for语句或者while语句其中一个是不是就掌握了两种语句呢?


while流程图 :

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第3张图片

2.2while语句的执行步骤

//while语法结构
#include                       
int main()                              
{                                       
	表达式1;
  	while (表达式2)                                                      
	{
		语句;
		表达式3;
	}
}

执行步骤

第一,给表达式1进行循环变量初始化,表达式2设置循环终止条件,表达式3设置循环变量增量或减量;

第二,执行表达式2,判断结果为true(真)执行语句,否则为false(假)退出循环;

第三,表达式3循环变量增量或减量

第四,转入第二步;


while语句我们理解为先判断再执行


例子:求0到9的和

//求0到9的和
#include 
int main()
{
	int i = 0;
	int s = 0;
	while (i < 10)
	{
		s = s + i;
		i++;
	}
	printf("%d\n", s);
	return 0;
}

 输出:45


和for语句执行的结果一样都是45,我们可以认为掌握for语句后就掌握了while语句,所以for语句与while语句有着同工异曲之处。


2.3while语句中的break和continue

上面已经讲到了break和continue的区别

那么break在while中的用法:

#include
int main()
{
	int i = 1;
	while(i <= 10)
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

 输出:1 2 3 4


和刚刚讲解for的语句一样,输出4次i的值,当i自增到5时,满足了if判断为真执行break语句退出整个循环。


‍♀️continue在while中的用法:

#include 
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

输出:1 2 3 4 光标一直闪烁


与for语句中不同的是,i自增的位置发生了改变。导致每次退出的时候i始终是=5,所以if判断一直是真就一直执行continue语句。最终导致程序不能终止。


2.4练习 

2.4.1练习

打印数字字符个数跳过其余字符​​​​​​​

#include 
int main()
{
	char ch = '\0';
	while ((ch = getchar()) != EOF)
	{
		if (ch < '0' || ch > '9')
			continue;
		putchar(ch);
	}
	return 0;
}

输入:abcd1234fafa567​​​​​​​

输出:1234567


EOF文件结束标志,我们理解EOF=-1

||是或的意思​​​​​​​


3、do-while语句循环结构

这里我们可以引用一句话:“东厂不敢杀的人我杀,东厂不敢管的事我管。一句话,东厂管得了的我要管,东厂管不了的我更要管,先斩后奏,皇权特许!”开个玩笑,其实这句话没什么用。主要是显现出do它不管后面的while满不满意先做了再说。


3.1do-while语句执行步骤

#include 
int main()
{
	表达式1;
	do
	{
        语句;   
		表达式2;

	}while(表达式3);
	return 0;
}

先执行循环里面语句和表达式2,在判断表达式3。因此我们理解 do-while为先执行再判断

do-while流程图 :

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第4张图片

我们直接来看代码:

//简单的while循环
#include 
int main()
{
	int a = 0;
	int b = 1;
	do
	{
		a = a + b;
		b++;
		printf("%d ", a);
	} while (a<100);
	printf("\n");
	return 0;
}

输出:1 3 6 10 15 21 28 36 45 55 66 78 91 105


 我们可以看到,最后一次结果为105,超出了a<100。可见do-while确实是先执行循环体后判断。


3.2do-while语句中的break和continue

break语句在do-while中的用法:

#include 
int main()
{
	int i = 1;
	do
	{
		if (5 == i)
			break;
		printf("%d ", i);
		i = i + 1;
	} while (i <= 10);

	return 0;
}

 输出:1 2 3 4


与上面for循环,while循环都有一样,输出4次i,i自增到5满足if判断语句退出循环。可见判断语句在程序中的重要性。


‍♀️continue语句在do-while中的用法:

#include 
int main()
{
	int i = 1;

	do
	{
		if (5 == i)
			continue;
		printf("%d ", i);
		i = i + 1;
	} while (i <= 10);

	return 0;
}

输出:1 2 3 4 光标闪烁不停


do-while语句中的continue语句跟上面while程序中continue语句功能是一样的。都是每次退出的时候i始终是=5,所以if判断一直是真就一直执行continue语句。最终导致程序不能终止。


控制循环结构的两个语句

1、break语句

  • beeak语句我们理解为退出循环,结束程序。

我们直接看代码:

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第5张图片

 执行break操作,跳出所在的当前整个循环,到外层代码继续执行。

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第6张图片

执行break操作,跳出所在的当前整个循环,到外层代码继续执行。可以跟上述continue语句对比。


2、continue语句

  • continue语句咱们理解为退出本次循环,继续执行程序。

‍♀️咱们直接看代码:

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第7张图片

执行continue操作,跳出本次循环,从下一个迭代继续运行循环,内层循环执行完毕,外层代码继续运行。 

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第8张图片

 上面可以看两个不同的语句实现同一种功能,都跳过了3然后继续打印下个一个数字直到程序结束。


3、嵌套循环

嵌套循环:将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环

最经典之一的嵌套循环有9*9乘法口诀,来吧展示:

#include 
int main()
{
	int i = 1;
	int j = 1;
	while (j < 10)
	{
		for (i = 1; i <=j; i++)
		{
			printf("%d*%d=%d ", i, j,i*j);
		}
		printf("\n");
		j++;
	}
}

可以看到结果非常的漂亮:

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第9张图片


 C语言循环结构语句,控制循环语句你会了吗?

    总结

  • 1、while语句先判断后执行
  • 2、do-while语句先执行后判断(先斩后奏)
  • 3、for语句跟while语句有着同工异曲之处
  • 4、break语句退出本次循环结束程序
  • 5、continue语句退出本次循环继续执行程序

练习

1、计算n的阶乘

#include
int main()
{
	int n = 0;
	int s = 1;
	scanf("%d", &n);
	for (int i = 1; i <=n; i++)
	{
		s = s * i;
	}
	printf("%d\n", s);
	return 0;
}

输入:5

输出:120


2、计算1!+2!+3!+...+10!

#include
int main()
{
	int n = 0;
	int s = 0;
	int m = 0;
	scanf("%d", &n);
	for (int i = 1; i <=n; i++)
	{
		m = 1;
		for (int j = 1; j <= i; j++)
		{
			m = m * j;
		}
		s = s + m;
	}
	printf("%d\n", s);
	return 0;
}

输入:6

输出:873


3、尝试用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形

#include
int main()
{
    int i,j,k,n;
    n=3;
    char a;
    scanf("%c",&a);
    for(i=1;i<=n;i++)
    {
        for(j=0;j

输入:*

输出:

【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第10张图片


本期博客到这就结束,如有帮助还请给博主点个小小的关注
【C语言】循环语句(while语句,do-while语句,for语句)控制循环语句(continue语句,break语句)_第11张图片

 “我真的恨死训练了。但我告诉自己,‘别放弃,忍受当下的苦,然后这辈子都像一个冠军一样活着。’”——阿里 


 

这个是拳击哥的博客主页

你可能感兴趣的:(C语言入门到进阶,c语言,算法)