c语言循环结构
1.while
在C语言中,while循环是一种迭代结构,它允许我们重复执行一段代码,直到给定的条件变为假。while循环的基本语法如下:
while (condition) {
// 循环体
}
在每次循环开始之前,首先会对条件进行评估。如果条件为真,则执行循环体中的代码。执行完循环体后,再次检查条件。如果条件仍然为真,则继续执行循环体,以此类推。只有当条件变为假时,循环才会终止,程序将继续执行循环之后的代码。
下面是一个简单的示例,演示了如何使用while循环计算1到10的和:
#include <stdio.h>
int main() {
int i = 1;
int sum = 0;
while (i <= 10) {
sum += i;
i++;
}
printf("Sum is: %d\n", sum);
return 0;
}
在上面的例子中,我们初始化变量i
为1,并将变量sum
初始化为0。然后,while循环检查条件i <= 10
,如果条件为真,则执行循环体中的代码。循环体中的代码将当前的i
值加到sum
中,并递增i
的值。循环继续进行,直到i
的值超过10时,条件变为假,循环终止。最后,我们打印出计算得到的sum
的值。
需要注意的是,如果循环条件一开始就为假,那么循环体中的代码将不会执行,直接跳过循环。因此,在使用while循环时,要确保循环条件能够在某个时刻变为假,以避免无限循环的情况发生。
例子whie循环实现1~100的相加
你可以使用一个 while 循环来实现 1 到 100 的相加。下面是一个示例代码:
total = 0
num = 1
while num <= 100:
total += num
num += 1
print("1 到 100 的和为:", total)
这段代码中,我们首先初始化变量 total
和 num
,分别表示累加的总和和当前要累加的数字。然后,在 while 循环中,我们判断 num
是否小于等于 100,如果是,则将 num
加到 total
中,并将 num
自增 1。循环会一直执行,直到 num
大于 100。最后,我们打印出累加的结果。
运行这段代码,你将得到输出:1 到 100 的和为: 5050。
2.do~while
在 C 语言中,do-while 循环是一种后测试循环结构,它先执行一次循环体,然后再根据条件判断是否继续执行循环。这种结构确保循环体至少会被执行一次。
do-while 循环的语法如下:
do {
// 循环体
} while (条件);
首先,使用 do
关键字来指示开始一个 do-while 循环。然后,在花括号 {}
内编写循环体的代码。循环体是需要重复执行的代码块。接着,使用 while
关键字指定循环的条件,条件是一个表达式,用于判断是否继续执行循环。如果条件为真,则继续执行循环;如果条件为假,则结束循环。
下面是一个更详细的示例代码,演示了 do-while 循环的使用:
#include <stdio.h>
int main() {
int num = 0;
do {
printf("当前数字:%d\n", num);
num++;
} while (num < 5);
printf("循环结束\n");
return 0;
}
在这个示例中,我们声明并初始化一个整型变量 num
,初始值为 0。然后,使用 do-while 循环,循环体中打印出当前数字的值,并将 num
值递增。循环条件为 num < 5
,即当 num
小于 5 时继续循环。当 num
的值达到 5 时,条件不满足,循环结束。
运行这段代码,你将得到以下输出:
当前数字:0
当前数字:1
当前数字:2
当前数字:3
当前数字:4
循环结束
可以看到,循环体至少执行了一次,并且在满足条件的情况下继续执行了四次,直到条件不再满足。最后,循环结束并打印出 “循环结束”。
3.for循环(执行顺序)
在 C 语言中,for 循环是一种常用的循环结构,它可以用于重复执行一段代码块,直到满足退出循环的条件。for 循环通常用于遍历数组、计数器等场景。
for 循环的语法如下:
for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体
}
首先,在小括号 ()
中编写三个表达式,用分号 ;
隔开:
- 初始化表达式:在循环开始前执行一次,用于初始化循环变量。
- 条件表达式:在每次循环开始前判断条件,如果条件为真,则继续执行循环;如果条件为假,则结束循环。
- 更新表达式:在每次循环结束后执行,用于更新循环变量。
然后,在花括号 {}
中编写循环体的代码,循环体是需要重复执行的代码块。
下面是一个示例代码,演示了 for 循环的使用:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 5; i++) {
printf("当前数字:%d\n", i);
}
printf("循环结束\n");
return 0;
}
在这个示例中,我们声明并初始化一个整型变量 i
,初始值为 0。然后,使用 for 循环,循环条件为 i < 5
,即当 i
小于 5 时继续循环。在每次循环开始前,都会判断条件表达式 i < 5
的值,只有在条件为真时才会执行循环体。循环体中打印出当前数字的值,并将 i
值递增。循环结束后,打印出 “循环结束”。
运行这段代码,你将得到以下输出:
当前数字:0
当前数字:1
当前数字:2
当前数字:3
当前数字:4
循环结束
可以看到,循环体重复执行了五次,直到 i
的值达到 5,循环条件不再满足,循环结束。
重点:
for 循环的执行顺序
在 for 循环中,代码的执行顺序遵循以下步骤:
-
执行初始化表达式:在循环开始前,初始化表达式会被执行一次。这通常用于初始化循环变量,例如
int i = 0
。 -
执行条件表达式:在每次循环开始前,条件表达式会被求值。如果条件表达式的结果为真(非零),则继续执行循环体;如果条件表达式的结果为假(零),则跳出循环,不再执行循环体。
-
执行循环体:如果条件表达式的结果为真,循环体会被执行。循环体是包含在花括号
{}
中的代码块,它是需要重复执行的部分。 -
执行更新表达式:在每次循环结束后,更新表达式会被执行一次。更新表达式通常用于更新循环变量的值,例如
i++
。 -
跳回步骤 2:执行完更新表达式后,程序会跳回步骤 2,重新判断条件表达式的结果。如果条件仍然为真,则继续执行循环体;如果条件为假,则跳出循环。
这个过程会不断重复,直到条件表达式的结果为假,才会跳出循环。
下面是一个示例代码,展示了 for 循环的执行顺序:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 5; i++) {
printf("当前数字:%d\n", i);
}
printf("循环结束\n");
return 0;
}
在这个示例中,循环的执行顺序如下:
- 执行初始化表达式
i = 0
,将i
初始化为 0。 - 执行条件表达式
i < 5
,判断i
是否小于 5。由于i
的初始值是 0,条件为真,继续执行循环。 - 执行循环体,打印出当前数字的值。
- 执行更新表达式
i++
,将i
的值递增。 - 跳回步骤 2,重新判断条件表达式。如果
i
的值仍然小于 5,继续执行循环;否则跳出循环。 - 重复步骤 3-5,直到
i
的值达到 5,条件不再满足,跳出循环。 - 执行循环结束后的代码,打印出 “循环结束”。
运行这段代码,你将得到以下输出:
当前数字:0
当前数字:1
当前数字:2
当前数字:3
当前数字:4
循环结束
可以看到,循环体重复执行了五次,直到循环条件不再满足。
4.终止语句(break,continue)
终止语句(break 和 continue)是在编程中用于控制循环语句执行流程的关键字。
- break语句:当break语句出现在循环语句(如for、while、do-while)中时,会立即终止当前循环的执行,并跳出循环体,执行循环之后的代码。break语句通常与条件语句结合使用,用于提前结束循环。
示例:
for i in range(1, 10):
if i == 5:
break
print(i)
输出:
1
2
3
4
在上述示例中,当i等于5时,break语句被执行,循环终止,因此只输出了1到4。
- continue语句:当continue语句出现在循环语句中时,会终止当前迭代的执行,并跳过该次循环中continue语句之后的代码,开始下一次迭代。
示例:
for i in range(1, 6):
if i == 3:
continue
print(i)
输出:
1
2
4
5
在上述示例中,当i等于3时,continue语句被执行,跳过了输出3的步骤,直接进入下一次迭代。
需要注意的是,break和continue语句都只能在循环语句中使用,否则会引发语法错误。另外,它们通常用于条件判断,以便在满足某些条件时提前结束循环或跳过当前迭代。
循环示例金字塔打印
金字塔打印是一个常见的循环示例,可以使用嵌套循环来实现。以下是一个使用Python语言实现金字塔打印的示例代码:
rows = 5 # 金字塔的行数
for i in range(rows):
# 打印空格
for j in range(rows - i - 1):
print(" ", end="")
# 打印星号
for k in range(2 * i + 1):
print("*", end="")
print() # 换行
输出结果:
*
***
*****
*******
*********
在上述示例中,外层循环控制金字塔的行数,内层循环分别用于打印每一行的空格和星号。具体步骤如下:
- 外层循环(i循环)从0到rows-1,控制金字塔的行数。
- 内层循环(j循环)用于打印每一行的空格,通过计算每一行的空格数量,即rows-i-1,来控制空格的个数。
- 内层循环(k循环)用于打印每一行的星号,通过计算每一行星号的数量,即2*i+1,来控制星号的个数。
- 在打印完每一行的空格和星号后,使用print()进行换行。
通过嵌套循环的方式,逐行打印空格和星号,就可以实现金字塔的打印效果。你可以根据需要修改rows的值来控制金字塔的高度。
同理多层金字塔打印:
#include<stdio.h>
void printPyramid(int);
int main()
{
int n1,n2;
scanf("%d",&n1);
scanf("%d",&n2);
printPyramid(n1);
printPyramid(n2);
return 0;
}
void printPyramid(int n)
{
int i,j,mid;
mid=(2*n-1)/2;
// 控制行
//一开始扩张的范围为0
int r=0;
for(i=0;i<n;i++)
{
// 一开始的范围为0
for(j=0;j<mid+r;j++)
{
if(j<=mid+r&&j>=mid-r)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
r++;//扩大扩张的范围
}
}
可以打印俩层金字塔,一个空格,然后一个 ’ * '逐步打印空格和 ’ * ',这就是金字塔的核心实现>
本文作者:2c237c6
本文链接:https://www.cnblogs.com/27dCnc/p/18568693
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步