基础内容|循环结构

循环结构

1.for循环

1.1 表达式结构

1
2
3
4
for(表达式1;表达式2;表达式3)
{
语句;
}
  • 表达式1:设置初始条件,只执行一次。可以为零个,一个,多个变量设置初值;

  • 表达式2:是循环条件表达式,用来判断是否继续循环。在每次执行循环 (for后由一对花括号括起来的)体前先执行此表达式,决定是否继续执行循环;

  • 表达式3:在执行完循环体后才进行此语句; 所以可以理解为:

1
2
3
4
for(循环变量赋初值;循环条件;循环变量增值)
{
语句;
}

需要注意的是:

  1. 表达式1可以省略,但后面的分号不能省略;

  2. 表达式2可以省略(但后面的分号不能省略),不设置和检查循环的条件,此循环可以终止的进行下去,也就认为表达式2始终为真值;

  3. 表达式3可以省略,但是应该在保证该程序能正常结束;

  4. for循环与while循环无条件等价;

1.1.1 例子
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main()
{//用for循环求从1到100的和
int i, sum = 0;
for (i = 1; i <= 100; i++)
{
sum += i;
}
printf("sum=%d\n", sum);
return 0;
}
1.1.2 解读例子

for循环的执行顺序如下: 步骤1. 执行i=1,把i初始化为1 步骤2. 判断i<=100是否满足,满足则执行sum += i;(把i的值和sum相加然后赋值给sum),否则退出循环 步骤3. 执行i++,然后i变成2,然后继续执行步骤2,直到退出循环位置

1.2 for循环的嵌套

表达式基本结构:

1
2
3
4
5
6
7
for(;;)
{
for(;;)
{
...
}
}

总循环次数:外循环次数内循环次数; ******

2.while循环

基本框架:

1
2
3
4
5
6
表达式1
while(表达式2)
{
语句;
表达式3
}
  1. while后面的语句称为循环体;

  2. 循环体执行的次数由循环条件表达式(表达式2)来确定;

  3. 当循环条件表达式为真值时就执行循环体;

  4. while(1)//是一个死循环

2.2 运算符

运算符 含义
&&
||
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于

2.3 例子

1
2
3
4
5
6
int i=0,sum=0;
while(i<=100)
{
sum+=i;
i++;
}
  1. 一定要给i赋初值;

  2. 如果没有i++那么这个while循环就是个死循环;

只要循环条件表达式为真,就执行循环体;


3. do while循环

基本框架

1
2
3
4
5
6
表达式1
do
{
语句;
}
while(表达式2);
  1. 先执行一次指定的循环体语句,再判别表达式是否为真,若为真返回重新执行循环体语句。
  2. 注意while后的()后是有的

3.1 例子

1
2
3
4
5
6
7
8
int i=0,sum=0;
do
{
sum+=i;
i++;
}
while(i<=100);

与while循环的区别:

  1. while循环先判断再执行;

  2. do...while循环先执行再判断;

  3. 只要第一次进入循环的条件就不满足,那么这两种循环的结果可能不同;

3.2 while与do while的例子

3.2.1 while
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<windows.h>
int main()
{
int i=0, sum = 0;
scanf_s("%d", &i);
while (i < 5)
{
sum += i;
i++;
}
printf("sum=%d", sum);
system("pause");
return 0;
}
3.2.2 do while
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<windows.h>
int main()
{
int i=0, sum = 0;
scanf_s("%d", &i);
do
{
sum += i;
i++;
} while (i < 5);
printf("sum=%d", sum);
system("pause");
return 0;
}

4.switch语句

关于C语言中我们做判断的时候一般是会想到if else,常见的if else的写法为:

1
2
3
4
5
6
if(表达书)
{}
else if(表表达式)
{}
else
{}

当出现更多的if else嵌套的时候通常会使我们的代码变的较为繁琐,使得我们在观看自己的代码的时候容易逻辑混淆,所以就有了switch的用法,switch的用法在代码中的运用广度没有if else 较强,

4.1 基本结构

1
2
3
4
5
6
7
8
9
switch(变量或者表达式)
{
case 变量情况或者表达式情况1:语句1;break;
case 变量情况或者表达式情况2:语句2;break;
case 变量情况或者表达式情况3:语句3;break;
……
default: 语句;//default情况就是指,除了你写的case的情况外的情况

}

一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。

4.2 例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main(){
int a;
printf("Input integer number:");
scanf("%d",&a);
switch(a){
case 1: printf("Monday\n"); break;
case 2: printf("Tuesday\n"); break;
case 3: printf("Wednesday\n"); break;
case 4: printf("Thursday\n"); break;
case 5: printf("Friday\n"); break;
case 6: printf("Saturday\n"); break;
case 7: printf("Sunday\n"); break;
default:printf("error\n"); break;
}
return 0;
}

5.break与continue

5.1 break

作用:可以使流程跳到循环之外(结束整个循环过程),接着执行循环体下面的语句。

但是:break语句只能用于循环语句和switch语句,不能单独使用 在多层循环中,一个break语句只向外跳一层 在 C语言 的 switch(开关语句)中,break 语句还可用来在执行完一个 case(分支)后立即跳出当前 switch 结构

5.1.1例子
1
2
3
4
5
for(;;){// A
for(;;) {// B
break; // 只跳出B的for循环
}
}
1
2
3
4
5
6
7
8
9
int i;
switch(i){
case 1:
break; // 跳出Switch
case 2:
break; // 跳出Switch
default:
break; // 跳出Switch
}

5.2continue

作用:并不是终止整个循环,只是提前结束本次循环,继续执行下次循环; continue 语句的作用是跳过本次循环中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。

在 while 和 do-while 循环中,continue 语句使得流程直接跳到循环控制条件的测试部分,然后决定循环是否继续进行。在 for 循环中,遇到 continue 后,跳过循环体中余下的语句,而去对 for 语句中的“表达式3”求值,然后进行“表达式2”的条件进行条件测试,最后根据“表达式2”的值来决定 for 循环是否执行。

在循环体内,不论 continue 是作为何种语句中的语句成分,都将按上述功能执行,这点与 break 有所不同。

5.2.1例子
1
2
3
4
5
6
7
8
9
int i = 0;
while(i < 10)
{
i++;
if(i == 5)
continue;
printf("%d\n",i);

}

这段代码输出为:1 2 3 4 6 7 8 9 10

所以continue的总结:continue是用于终止本次循环的,也就是本次循环中continue后边的代码都不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。