在C语言中循环结构是很重要的,它主要由while语句do...while语句和for语句构成,下面是我的一些理解。
1.while语句
while(表达式)
{
语句块;
}
while语句格式很简单,当条件为真时(即表达式返回值为非零时)会反复执行语句块直到条件为假时停止循环。
如:求1~100所有数字的和
#include<stdio.h>
int main()
{
int n = 1, sum = 0;
while (n <= 100)
{
sum = sum + n;
n = n + 1;
}
printf("sum=%d", sum);
return 0;
}
运行结果为:sum=5050
注意:while语句只会循环紧跟着while后的一条语句,如果需要循环多条语句需要用{ }括起来。
2.do...while语句
do
{语句块;
}while(表达式);
do...while语句与while语句相似,与while语句不同的是do...whlie语句是先执行一次语句块再去判断表达式的,表达式为真则继续循环语句块直到表达式为假则停止循环。
如:
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
运行结果为:1 2 3 4 5 6 7 8 9 10
注意:while的末尾是有分号的。
3.for语句
for(表达式1;表达式2;表达式3)
{
语句块;
}
在for语句中
表达式1为初始化部分,用于初始化循环变量的,首先被执行,且只会执行一次。这一步允许声明并初始化任何循环控制变量。也可以不在这里写任何语句,只要有一个分号出现即可。
表达式2 表达式2为条件判断部分,用于判断循环时候终止。表达式2将进行判断,如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
表达式3为调整部分,用于循环条件的调整。该语句允许更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
执行流程为:先执行表达式1,再执行表达式2,如果表达式2成立则执行下面的语句块,然后执行表达式3,再判断表达式2成立继续循环,不成立则跳出循环,执行for后面的语句。
如:
#include<stdio.h>
int main()
{
int n , sum = 0;
for (n = 1; n <= 100; n++)
{
sum = sum + n;
}
printf("sum=%d", sum);
return 0;
}
运行结果为:sum=5050
注意:for语句中的表达式用“;”隔开,不用“,”隔开。
4.循环的嵌套
循环的嵌套,顾名思义就是循环里面再套一个循环,下面用几个例子说明:
(1)while嵌套
#include<stdio.h>
int main()
{
int a=1,b=4;
while(a<=4){
a++;
printf("a的值:%d\n",a);
while(a<=b){
printf("b的值:%d\n",b);break;
}
}
}
运行结果为:
(2)do...while嵌套
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
do {
// 外层循环代码
do {
// 内层循环代码
j++;
} while (j < 5);
i++;
} while (i < 3);
printf("i=%d j=%d", i,j);
return 0;
}
运行结果为:
(3)for嵌套
循环次数为外循环次数*内循环次数
#include<stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 3; i++)
{
for (j = 1; j <= 2; j++)
{
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
运行结果为:
5.break与continue在循环中的作用
循环中遇到break,就停止后期的所有的循环,直接终止循环,continue是用于终止本次循环的。
(1)在while语句中的作用
while中的break是用于永久终止循环的
如:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("%d ", i);
i = i + 1;
}
return 0;
}
运行结果为:1 2 3 4
continue是用于终止本次循环的,本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
如:
#include<stdio.h>
int main()
{
int sum = 0;
for (int i = 1; i <= 5; i++)
{
if (i % 2 == 1) continue;
sum = sum + i;
}
printf("sum=%d", sum);
return 0;
}
运行结果为:sum=6
注意:在while()循环中使用continue时,可能会跳过循环中的调整部分,导致死循环。
如:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i = i + 1;
}
return 0;
}
可以发现函数没有结束,死循环了。
(2)在do...while语句中的作用
与在while中区别不大,也存在使用continue可能导致代码死循环的情况。
如:break:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
break;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
运行结果为:1 2 3 4
continue:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
continue;
printf("%d ", i);
i++;
} while (i < 10);
return 0;
}
与while一样,出现了死循环。
(3)在for语句中的作用
整体上与在while循环中差别不大,不过在for循环中使用continue不会跳过调整部分,不会出现像while循环中不当使用continue导致的死循环。
如:break:
#include<stdio.h>
int main()
{
int n, sum = 0;
for (n = 1; n <= 100; n++)
{
sum=sum+n;
if(sum>=2000)
break;
}
printf("sum=%d", sum);
return 0;
}
运行结果为:sum=2016
continue:
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
return 0;
}
未陷入死循环。
注意:循环中所有表达式后面都只循环最靠近它的一条语句,如果需要执行多条语句需要用{ }括起来。
好了,以上就是我对循环结构的一些理解啦,希望对大家有所帮助,如果有不足或不对的地方还请大家指正。