前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、分支结构
分支结构可以粗略地理解为分叉选择,一旦满足某个条件就执行某个特定行为,拿生活中的例子:有个人有100元,如果他把这100给你,就可以去购物;要是没给,就回家。而在c语言中,我们可以使用if,switch来实现分支结构.
1.if语句
1.1,if
if语句的语法形式如下:
1 if(表达式)
2 语句
表达式成立(C语言中,1表示真),则语句执行,表达式不成立(0为假),则语句不执行。如果表达式不为0,则为真,语句执行。
例子:输入一个整数,判断是否为3的倍数
1 #include<stdio.h>
2 int main()
3 {
4 int num=0;
5 scanf("%d",&num);
6 if(num%3==0)
7 printf("%d是3的倍数",num)
8 return 0;
9 }
1.2,else
else语句是在if或else if等前面表达式都不满足的情况下,则els内部语句执行。
1 if(表达式)
2 语句1
3 else
4 语句2
例子:输入商品价格和拥有金额,判断找零的金额大小
1 #include<stdio.h>
2 int main()
3 {
4 printf("请输入金额");
5 int price = 0;
6 int mill = 0;
7 scanf("%d %d", &price, &mill);
8 if (price<= mill)
9 printf("找您%d元", mill-price);
10 else
11 printf("你的余额不足");
12 return 0;
13 }
1.3,分支中包含多条语句
1 #include<stdio.h>
2 int main()
3 {
4 printf("请输入金额");
5 int price = 0;
6 int mill = 0;
7 scanf("%d %d", &price, &mill);
8 if (price<= mill)
9 printf("找您%d元", mill-price);
10 else
11 printf("你的余额不足");
12 printf("谢谢惠顾");
13 return 0;
14 }
金额充足时,输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/667881c15b3486af86db526201d2e2a9.png)
观察结果可以发现,无论金额是否充足,都会打印"谢谢惠顾",这一点可验证if和else默认控制语句数。
1.4,if嵌套
嵌套从字面可以理解为:一层套一层,类似于俄罗斯套娃;先从第一个条件语句判定,如果成立执行语句;如果不成立,则对另外的else if继续判断,知道条件成立,至此构成多重判断。初步理解嵌套后,开始实践理解下,比如:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。请看如下代码:
1 #include <stdio.h>
2 int main()
3 {
4 int num = 0;
5 scanf("%d", &num);
6 if(num == 0)
7 printf("输⼊的数字是0\n");
8 else if(num > 0) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
9 printf("输⼊的数字是正数\n");
10 else
11 printf("输⼊的数字是负数\n");
12 return 0;
13 }
2.switch语句
2.1.switch
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。再拿分支结构中的给钱例子,陌生人给你100元,你可以把这100元分成不同的若干份,去购买不同的商品,同时也可以一分不花存起来。而你所决定花费的金额可以作为switch的参数,不同的参数可以执行不同的语句,下面就用switch打印星期几的例子:
1 #include <stdio.h>
2 int main()
3 {
4 int day = 0;
5 scanf("%d", &day);
6 switch(day)
7 {
8 case 1:
9 printf("星期⼀\n");
10 break;
11 case 2:
12 printf("星期⼆\n");
13 break;
14 case 3:
15 printf("星期三\n");
16 break;
17 case 4:
18 printf("星期四\n");
19 break;
20 case 5:
21 printf("星期五\n");
22 break;
23 case 6:
24 printf("星期六\n");
25 break;
26 case 7:
27 printf("星期天\n");
28 break;
29 }
30 return 0;
31 }
2.2.switch中的break
前⾯的代码中,如果我们去掉case语句中的break,会出现什么情况呢?
1 #include <stdio.h>
2 int main()
3 {
4 int day = 0;
5 scanf("%d", &day);
6 switch(day)
7 {
8 case 1:
9 printf("星期⼀\n");
10 case 2:
11 printf("星期⼆\n");
12 case 3:
13 printf("星期三\n");
14 case 4:
15 printf("星期四\n");
16 case 5:
17 printf("星期五\n");
18 case 6:
19 printf("星期六\n");
20 case 7:
21 printf("星期天\n");
22 }
23 return 0;
24 }
观察运行结果,发现输出总会多出还几个星期。这是为什么呢?
原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。
2.3.switch中的default
default与case类似,但又有区别,它是囊括除列举case的所有情况外的情况。不得已再拿上面给钱的例子,case的条件都是商品的价格,那么当金额远大于100的情况或除已经列举的商品价格外属于default的范畴。将上述打印星期的程序加入default,程序如下:
1 #include <stdio.h>
2 int main()
3 {
4 int day = 0;
5 scanf("%d", &day);
6 switch(day)
7 {
8 case 1:
9 printf("星期⼀\n");
10 break;
11 case 2:
12 printf("星期⼆\n");
13 break;
14 case 3:
15 printf("星期三\n");
16 break;
17 case 4:
18 printf("星期四\n");
19 break;
20 case 5:
21 printf("星期五\n");
22 break;
23 case 6:
24 printf("星期六\n");
25 break;
26 case 7:
27 printf("星期天\n");
28 break;
29 default:
30 printf("输入错误\n");
31 break;
32 }
33 return 0;
34 }
看到这,你或许有些小疑问,switch语句中case和default的位置顺序是固定的吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。不过一般情况下还是把 default ⼦句放在最后处理的。
二.循环结构
循环结构可以理解为绕着操场跑道跑圈,但达到一定条件时(体力不支)就听着跑圈(循环结束)。在c语言中,使⽤ for 、 while 、 do while 来实现循环结构。
3.for语句
3.1.语法形式
for 循环的语法形式如下:
1 for(表达式1;表达式2;表达式3)
2 语句;
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
3.2.for循环的流程
⾸先执行 表达式1 初始化循环变量,接下来就是执行 表达式2 的判断部分, 表达式2 的结果如果==0,则循环结束; 表达式2 的结果如果!=0则执行循环语句,循环语句执行完后,再去执行表 达式3 ,调整循环变量,然后再去表达式2 的地方执行判断, 表达式2 的结果是否为0,决定循环是否继续。整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。
3.3.for循环实践
练习:打印1-100的奇数
代码如下:
1 #include <stdio.h>
2
3 int main()
4 {
5 int i = 0;
6 for(i=1; i<=10; i++)
7 {
8 printf("%d ", i);
9 }
10 return 0;
11 }
运行结果:
4.while语句
C语⾔提供了3种循环语句, while 就是其中⼀种,接下来就介绍一下 while 语句。while 语句的语法结构和 if 语句非常相似。
4.1.语法形式
1 while(表达式)
2 语句;//多条语句用大括号
4.2.while循环的过程
⾸先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语 句,语句执行完后再继续判断,是否进行下⼀次判断。
4.3.while循环的实践
练习:打印1-100的数字
代码如下:
1 #include <stdio.h>
2 int main()
3 {
4 int i = 1;
5 while(i<=10)
6 {
7 printf("%d ", i);
8 i = i+1;
9 }
10 return 0;
11 }
5.do-while语句
5.1.do-while语法形式
在循环语句中 do while 语句的使⽤最少,它的语法如下:
1 do
2 语句;
3 while(表达式);
区别:while 和 for 这两种循环都是先判断,条件如果满足就进⼊循环,执行循环语句,如果不满足就跳出循环;而do while 循环则是先直接进⼊循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下⼀次,表达式为假,则不再继续循环。
5.2.do-while循环过程
在 do while 循环中先执行“语句”,执⾏完语句,在去执行“判断表达式”,判断表达式的结果是!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。所以在 do while 语句中循环体是⾄少执行⼀次的,这是 do while 循环比较特殊的地方。
5.3.do-while循环的实践
实践:输入一个正整数,计算这个正整数是几位数?
1 #include <stdio.h>
2 int main()
3 {
4 int n = 0;
5 scanf("%d", &n);
6 int cnt = 0;
7 do
8 {
9 cnt++;
10 n = n / 10;
11 } while (n);
12 printf("%d\n", cnt);
13 return 0;
14 }