C语言基本语法-循环结构

发布时间:2024年01月17日

目录

介绍

1? for循环

1.1? for循环的语法格式

2.2? for循环的执行流程

2? while循环

2.1? while循环的语法格式

2.2? while语句的执行流程

3? do...while循环

3.1? do...while循环的语法格式

3.2??do...while循环的执行流程

3? 结构之间的比较

3.1??if和while的比较

3.2? while和for的比较?

4? break与continue

4.1? for循环的break和continue

?4.2? while循环的break和continue

4.3? do...while循环的break和continue

5? 循环的嵌套

介绍

人生是日复一日的过着,每天都有相同或者相似的事情要去做。

我们在解决实际问题的时候会常常遇见相同的工作要去重复做,C语言中的循环语句包括三种,分别是:for循环,while循环和do...while循环。同时循环之间还可以嵌套。在需要用到循环的问题中我们要分清楚相应的语句位于那一层循环,时刻保持思路的清晰,使问题思路在循环的帮助下更加通俗、明了。

1? for循环

for循环是三种循环中使用频率最大的循环语句。

1.1? for循环的语法格式

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

执行过程:

1、初始化:在循环开始之前,会执行表达式1(循环变量),进行循环变量的初始化,这个阶段也称为预处理阶段。

2、判断:表达式2是用来判断循环是否继续执行的表达式,如果该表达式的值为真(即非零)则循环继续执行,否则循环终止。

3、调整:表达式3会在每一次循环的最后执行用于调整循环变量。

说明:表达式1、表达式2、表达式3任意一个都可以省略。省略表达式1表示循环变量无需做预处理,省略表达式2表示该表达式2的值永远不为零此时程序将会无限循环,省略表达式3表示一次循环过后不需要对循环变量执行额外的内容。在整个循环中表达式1只被执行一次。

2.2? for循环的执行流程

首先执行表达式1初始化循环变量,接着对表达式2进行判断如果为值为0(即为假)终止循环,如果不为0,接着执行循环体中的语句,接着执行语句3,执行完之后此次循环结束。下次循环开始时直接执行表达式2按照上面的流程接着开始循环。

下面看两个例子帮助我们理解。

例1:从0递增显示直到输入的正整数为止。

#include<stdio.h>
int main() {
	int num = 0;
	scanf("%d", &num);
	for (int i = 0; i <= num; i++) 
	{
		printf("%d ",i);
	}
	return 0;
}

例2:输出从零到输入数的和与均值。

#include<stdio.h>
int main() {
	int num=0;
	int sum = 0;
	scanf("%d", &num);
	for (int i = 1; i <= num; i++)
	{
		sum += i;
	}
	printf("%d ", sum);
	printf("%d", sum / num);
	return 0;
}

2? while循环

while循环和if的语法格式很类似。

2.1? while循环的语法格式

while(表达式){
    语句;
}

与if语句不同的是while在表达式为真的情况下重复执行代码块中的语句而if在条件表达式为真的情况下代码块中的语句只执行一次。

例3:从输入的数开始倒数到零

#include<stdio.h>
int main() {
	int num;
	scanf("%d", &num);
	while (num + 1) {   //这里的num加1是为了把0也打印出来
		printf("%d ", num);
		num--;
	}
	return 0;
}

2.2? while语句的执行流程

如果表达式的判断结果为真,或者表达式的值不为0,则执行语句,执行完语句之后再进行判断,如果表达式的结果为假则结束循环。

例4:逆序打印整数

#include<stdio.h>
int main() {
	int num;
	scanf("%d", &num);
	while (num) 
	{
		printf("%d", num  % 10);
		num = num / 10;
	}
	return 0;
}

3? do...while循环

3.1? do...while循环的语法格式

do
{
    语句;
}while(表达式);

和上面两种循环不同的是do...while循环先执行一次do程序块中的语句,再判断表达式,如果表达式为真则接着执行语句依此循环,若为假则停止执行语句退出循环。

例5:打印输出1~10的值

#include<stdio.h>
int main() {
	int num=1;
	do {
		printf("%d ", num);
		num++;
	} while (num <= 10);
	return 0;
}

3.2??do...while循环的执行流程

在do...while循环中循环体中的语句是至少被执行一次的。

例6:逆向显示输入的非负整数

#include<stdio.h>
int main() {
	int num = 0;
	scanf("%d", &num);
	do {
		printf("%d", num % 10);
		num /= 10;
	} while (num);
	return 0;
}

3? 结构之间的比较

if和while的比较、while和for的比较?

3.1??if和while的比较

#include<stdio.h>
int main() {
	if (1) {
		printf("happy ");
	}
	return 0;
}
#include<stdio.h>
int main() {
	while (1) {
		printf("happy ");
	}
	return 0;
}

这两段的调试结果:

if表达式判断为真,代码块只执行一次。while表达式判断为真,代码块重复执行。

3.2? while和for的比较?

for循环中对循环变量初始化,判断,和调整的操作在形式上比较集中,而while循环比较分散。

打印输出1~10

#include<stdio.h>
int main() {
	int num = 1;//初始化
	while (num <= 10) { //判断
		printf("%d ", num);
		num++; //调整
	}
	return 0;
}
#include<stdio.h>
int main() {
	for (int i = 1; i <= 10; i++) {  //初始化,判断,调整在同一个括号中
		printf("%d ", i);
	}
	return 0;
}

4? break与continue

如果执行循环的过程中希望执行到某次循环时终止,就需要用到break或continue。

break是结束整个循环过程,举个栗子,老师每天都在循环的上课直到某一天退休了以后再也不用去上课了,break和退休的作用效果一样。

continue是结束本次循环continue后的程序接着进行下一轮的循环,举个栗子,老师每天都在循环的上课某一天生病了请假一天,明天继续循环上课,请假一天的效果相当于continue。

4.1? for循环的break和continue

#include<stdio.h>
int main() {
	for (int i = 1; i <= 10; i++) {
		if (i == 6)
			break;
		printf("%d ", i);
	}
	return 0;
}
#include<stdio.h>
int main() {
	for (int i = 1; i <= 10; i++) {
		if (i == 6)
			continue;
		printf("%d ", i);
	}
	return 0;
}

运行结果:

?4.2? while循环的break和continue

#include<stdio.h>
int main() {
	int i = 1;
	while (i <= 10) {
		if (i == 6) {
			break;
		}
		printf("%d ", i);
		i++;
	}
	return 0;
}
#include<stdio.h>
int main() {
	int i = 1;
	while (i <= 10) {
		if (i == 6) {
			continue;
		}
		printf("%d ", i);
		i++;
	}
	return 0;
}

?

第二个 while循环中加上continue,当i等于6时跳过本次循环但由于循环中还有一个i++也被跳过了因此i将一直等于5,程序陷入了一个死循环的过程。

4.3? do...while循环的break和continue

#include<stdio.h>
int main() {
	int i = 1;
	do {
		if (i == 6)
			break;
		printf("%d ", i);
		i++;
	} while (i <= 10);
	return 0;
}
#include<stdio.h>
int main() {
	int i = 1;
	do {
		if (i == 6)
			continue;
		printf("%d ", i);
		i++;
	} while (i <= 10);
	return 0;
}

do...while循环中的break和continue的作用效果和while中的一样。

5? 循环的嵌套

do...while语句、while语句、for语句可以任意的进行嵌套,将一个循环语句嵌套在另一个循环语句中成为二重循环,还有三重循环、四重循环...等称之为多重循环。

下面通过例子进行嵌套的运用。

例7:打印99乘法表

#include<stdio.h>
int main() {
	for (int i = 1; i <= 9; i++) {
		for (int j = 1; j <= i; j++) {
			printf("%d * %d = %d", i, j, i * j);
			printf("    ");
		}
        printf("\n");
	}
	return 0;
}

运行结果:

例8:求1-100之间的素数及其个数并打印。

#include<stdio.h>
int main() {
	int flag=0;//标记
	int count=0;//计数
	for (int i = 1; i <= 100; i++) {
		for (int j = 2; j < i; j++) {
			if (i % j == 0) {
				flag = 0;
				break;
			}
			else
				flag = 1;
		}
		if (flag == 1) {
			count++;
            printf("%d ", i);
		}
	}
	printf("\n%d", count);
	return 0;
}

运行结果:

文章来源:https://blog.csdn.net/m0_74068144/article/details/135606533
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。