C语言当中所有的结构分三种,分别是:顺序结构,选择结构,循环结构。
顺序结构就是从前往后,从上到下,我们的写好的程序就是按顺序编译。
选择结构是面对同一个问题时,有不同的选择,选择其一。
循环结构是指程序去到某一处的地方,不断地循环往复执行。
图示:
在C语言中,分支语句有if语句和switch语句;循环语句有while语句,for语句,do while 语句;还有非常特别的goto语句。
分支语句
1. if - else 语句
if - else 语句是分支语句的一种,也是我们选择结构必须掌握的语句。if - else 语句又分为单 if 语句、if - else 双分支语句、if - else if - else多分支语句。
1.1 if 语句
if 语句的语法形式如下:
1.if(表达式)
2. 语句
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是0,则语句执⾏。
例如:
1 #include<stdio.h>
2 int main()
3 {
4 int age = 19;
5 if (age > 18)
6 printf("成年\n");
7 return 0;
8 }
代码分析:由于age=19,19>18,if后()里的条件判断为真,所以执行语句printf(“成年\n”);
1.2 if - else 语句
if - else 语句就是非if即else。
if - else 语句的语法形式式如下:
1 if(表达式)
2 语句1
3 else
4 语句2
例子:输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印数偶数。
1 #include <stdio.h>
2 int main()
3 {
4 int num = 0;
5 scanf("%d", &num);
6 if(num % 2 == 1)
7 printf("%d 是奇数\n", num);
8 else
9 printf("%d 是偶数\n", num);
10 return 0;
11 }
1.3 if - else 多分支语句
if - else 多分支语句的语法形式式如下:
1 if(表达式1)
2 {
3 语句1;
4 }
5 else if(表达式2)
6 {
7 语句2;
8 }
9 …
10 else if(表达式n)
11 {
12 语句n;
13 }
14 else
15 {
16 语句n+1;
17 }
例子:
1 #include <stdio.h>
2 int main()
3 {
4 int age = 0;
5 scanf("%d", &age);
6 if(age<18)
7 {
8 printf("少年\n");
9 }
10 else
11 {
12 if(age<=44)
13 {
14 printf("⻘年\n");
15 }
16 else
17 {
18 if(age<=59)
19 {
20 printf("中⽼年\n");
21 }
22 else
23 {
24 if(age<=90)
25 printf("⽼年\n");
26 else
27 printf("⽼寿星\n");
28 }
29 }
30 }
31 return 0;
32 }
循环语句
1.1 while循环语句
1 while(表达式)
2 {
3 语句;
4 }
实例:输⼊⼀个正的整数,逆序打印这个整数的每⼀位
1 #include <stdio.h>
2 int main()
3 {
4 int n = 0;
5 scanf("%d", &n);
6 while(n)
7 {
8 printf("%d ", n%10);
9 n /= 10;
10 }
11 return 0;
12 }
1.2 for 循环
for 循环的语法形式如下:
1 for(表达式1; 表达式2; 表达式3)
2 语句;
3 //表达式1 ⽤于循环变量的初始化
4 //表达式2 ⽤于循环结束条件的判断
5 //表达式3 ⽤于循环变量的调整
实例:在屏幕上打印1~10的值
1 #include <stdio.h>
2 int main()
3 {
4 int i = 0;
5 for(i=1; i<=10; i++)
6 {
7 printf("%d ", i);
8 }
9
10 return 0;
11 }
while循环和for循环的对⽐:for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部 分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些。
1.3 do-while 循环
在循环语句中 do while 语句的使⽤最少,它的语法如下:
1 do
2 语句;
3 while(表达式);
在 do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的 结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。 所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。
实例:
1 #include <stdio.h>
2 int main()
3 {
4 int i = 1;
5 do
6 {
7 printf("%d ", i);
8 i = i + 1;
9 }while(i<=10);
10
11 return 0;
12 }
break和continue语句
在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中 提供了 break 和 continue 两个关键字,就是应该到循环中的。
• break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执 ⾏。
• continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所 差异的。
break举例
1 #include <stdio.h>
2 int main()
3 {
4 int i = 1;
5 while(i<=10)
6 {
7 if(i == 5)
8 break;//当i等于5后,就执⾏break,循环就终⽌了
9 printf("%d ", i);
10 i = i+1;
11 }
12 return 0;
13 }
执⾏的结果:
打印了1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,不再循环。 所以 break 的作⽤就是永久的终⽌循环,只要 break 被执⾏, break 外的第⼀层循环就终⽌了。 那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break 来完成我们想要的效果。
1 #include <stdio.h>
2 int main()
3 {
4 int i = 1;
5 while(i<=10)
6 {
7 if(i == 5)
8 continue;
9 //当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅
10 //因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环
11 printf("%d ", i);
12 i = i+1;
13 }
14 return 0;
15 }
到这⾥我们就能分析出来, continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接 到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成 死循环。
完