以下是是小编根据自己的理解,对有关分支循环方面的相关内容进行的总结,若有不当之处,欢迎指正。
一、循环语句
1、for循环
for语句的语法结构:
for(表达式1;表达式2;表达式3)
{
语句;
}
表达式1⽤于循环变量的初始化;
表达式2⽤于循环结束条件的判断;
表达式3⽤于循环变量的调整;
for循环语句在需要明确控制循环次数的场景下非常方便,其执行流程是:执行初始化表达式(仅一次)—>执行循环条件(真执行,假退出)—>执行循环语句—>执行更新表达式—>执行循环条件,如此往复,直到输出结果。
我们在这里举个例子:
在屏幕上输入1~10的值
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
代码解析:先执行i=1,判断i是否小于等于10,如果是,则打印;如果不是,则退出循环。直到输出结果为1 2 3 4 5 6 7 8 9 10
2、while循环
while语句的语法结构:
while(表达式)
{
语句;
}
while循环是一种入口控制型循环,能够实现循环效果。其核心逻辑是:先判断条件,若条件为真,就执行循环体;倘若条件为假,就跳过循环体,继续执行后续代码。可以简单概括为:先判断,后执行;条件为真,循环不止。其条件表达式是一个布尔逻辑判断,每次进入循环前 ,都会先计算该表达式的值。真(非0)执行,假(0)则跳过循环体,继续执行循环后面的代码。
我们这里举一个例子:
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如: 输⼊:12345,输出:54321
输⼊:569,输出:965
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
while(n)
{
printf("%d ", n % 10);
n /= 10;
}
return 0;
}
代码解析:n%10就可以得到该数字的最低位数,12345得到的就是1234余5,然后执行循环1234得到123余4,如此往复,直到输出54321。数字569也是同样的道理。
for和while循环语句的区别:
for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是for循环三个部分非常集中,便于代码的维护,而如果代码较多的时候while循环的三个部分就比较分散,所以从形式上 for 循环要更优⼀些。
3、do-while循环
do-while语句的语法结构:
do
{
语句;
}while(表达式);
do-while循环语句是先执行循环体、后判断条件的循环控制语句,其核心特点是:至少执行一次循环体。适用于需要确保循环内容先运行的场景。其执行流程是:先执行do后面{}中的循环体(无论条件是否成立,这是与while循环的核心区别)—>判断while后面的条件表达式:如果真,则回到do的处;倘如为假,则跳出循环,执行后续代码。我们可以把他简单的称为:先执行,后判断,条件控制。
举例:
【例1】在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
}while(i <= 10);
return 0;
}
代码解析:i=1—>do循环—>打印—>判断i是否<=10(真则继续循环,假则退出),最后结果为1 2 3 4 5 6 7 8 9 10
【例2】输⼊⼀个正整数,计算这个整数是几位数?
例如: 输入:1234 输出:4 输入:12 输出:2
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int cnt = 0;
do
{
cnt++;
n = n / 10;
} while (n);
printf("%d\n", cnt);
return 0;
}
代码解析:变量初始化后进入do循环—>cnt为1,往下走,n为123—>开始循环,cnt为2,n为12—>cnt为3,n为1—>cnt为4,n为0,退出,最终结果为4
4、循环的嵌套
for、while、do-while循环语句往往嵌套在一起可以很好的解决问题。
【例子】找出100~200之间的素数,并打印在屏幕上。 注:素数⼜称质数,只能被1和本⾝整除的数字。
题目分析:
1.要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。
2.假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤ 循环解决。
3.如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。
#include <stdio.h>
int main()
{
int i = 0;
//循环产⽣100~200的数字
for(i = 100; i <= 200; i++)
{
//判断i是否为素数
//循环产⽣2~i-1之间的数字
int j = 0;
int flag = 1;//假设i是素数
for(j = 2; j < i; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
printf("%d ", i);
}
return 0;
}
二、分支
1、if语句
if语法的语法形式:
if(表达式)
{
语句;
}
if语句是最基础的条件判断语句,其根据指定条件的(真)或(假)来决定是否执行代码。
【例】输入一个整数,判断其是否为奇数
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
return 0;
}
代码分析:若输入的是奇数,则打印出来的是 “num 是奇数”;若输入的是偶数则直接退出。
如果我们同时要打印出是偶数,则要引入else,此时就成了:
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
else
printf("%d 是偶数\n", num);
return 0;
}
代码分析:输入的是奇数,返回“该数字 是奇数”;输入的是偶数,返回“该数字 是偶数”。
默认在if和else语句中只控制一条语句。在if else语句中,else可以和另外一个if语句连用,构成多重判断。如果有多个if和else语句,我们只需要记住,else总是跟最近的if相匹配。这时,{}它的作用就体现出来了。
2、switch语句
switch语句的语句结构:
switch (expression)
{
case value1: statement
case value2: statement
...
default: statement
}
switch语句是一种多条件分支语句,用于将一个变量或表达式的值与多个预设的case值进行匹配,匹配成功则执行对应代码块,switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。
上⾯代码中,根据表达式就执行expression不同的值,执行相应的case 分⽀。如果找不到对应的值,执行相应的 default 分⽀。
注: • switch 后的 expression 必须是整型表达式
• case 后的值,必须是整形常量表达式
三、其他
1、goto语句
goto语句是一种用于无条件跳转的控制结构,能直接跳转到程序中标记好的位置继续执行,简而言之就是goto语句可以实现在同一函数内跳转到设置好的标号处。
goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建 议是能不⽤尽量不去使⽤;但是 出,使⽤ goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳 goto 就⾮常的⽅便了。
for(...)
{
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
}
error:
//...
2、break和continue语句
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue两个关键字,就是应⽤到循环中的。
• break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行。
• continue 的作用是跳过本次循环中所差异的。
本期的内容要点就为大家整理到这里,感谢您的支持与鼓励。

913

被折叠的 条评论
为什么被折叠?



