C语言流程控制
一、流程控制结构
(1)顺序结构:按书写顺序执行每一条语句。
(2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码。
(3)循环结构:在给定条件成立的情况下,反复执行某一段代码。
二、选择结构-if
(一)if简单使用
1) 第一种结构:
a) 如果条件为真,就执行后面的语句,否则不执行。
if(条件)
{
语句1;
语句2;
····
}
2) 第二种结构:
a) 如果条件成立就执行语句1,否则执行语句2。
if(条件)
{
语句1;
}
else
{
语句2;
}
3) 第三种结构:
a) 先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2···,【注意】如果条件3成立,则说明前面的都不成立。所有的语句块只有一个会被执行。
if(条件1)
{
语句1;
}
else if(条件2)
{
语句2;
}
else (条件3)
{
语句3;
}
4) 第四种结构:
a) 在这种情况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。
If(条件)
语句1;
语句2;
(二)if使用注意
①. 比较大小时,可以把常量值放在左边,变量值放在右边以避免错误。因为if(a==0)也容易被写成if(a=0),而这种情况,编译器并不会报错,推荐使用if(0==a)这种写法。
②. 注意赋值运算符,不要把=写成是==。
③. If(条件)后面不要加分号,这代表是一个空语句,后面的代码块将成为一个独立的代码块。如if(条件);{.....}//需要多加注意
④. 注意作用域的问题,如果要在if后面定义新的变量,则一定要使用大括号。
if(10>6)
{
Int a;//a的作用域在代码块结束后失效
}
Printf(“a=%d”,a);//编译器报错,找不到标识符
if(10>6)
Int a; //这种情况下报错,a的作用域不明确
Printf(“a=%d”,a); //编译器报错,找不到标识符
⑤. If(0){...}随便挑一个数值也可以做条件
(三)If结构练习
问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。
A 90-100 B80-89 C70-79 D60-69 E0-60
代码:
复制代码
1 #include<stdio.h>
2
3 int main()
4
5 {
6
7 //定义变量存储分数值
8
9 int score;
10
11 //提示输入
12
13 printf("请输入分值:\n");
14
15 //接受输入
16
17 scanf("%d",&score);
18
19 //判断等级
20
21 if(score>=90&&score<=100)
22
23 printf("A\n");
24
25 else if(score>=80)
26
27 printf("B\n");
28
29 else if(score>=70)
30
31 printf("C\n");
32
33 else if(score>=60)
34
35 printf("D\n");
36
37 else
38
39 printf("E\n");
40
41 return 0;
42
43 }
三、选择结构-switch
(一)switch结构
Switch(值) //通常是变量
{
Case 数值1:
语句1;
Break;
Case 数值2:
语句2;
Break;
Case 数值3:
语句3;
Break;
Default :
语句4;
Break;
}
解说:该结构把数值与数值1进行比较,若相等,则执行后面的所有语句,直到遇见break语句跳出整个循环,若前面的条件都不满足,则最终会执行default后面的语句。如果不写break语句,则后面的语句会接连执行,直到遇到break语句或者是全部语句执行完毕,只要前面的条件成立,则后面的判断就直接被忽略。
(二)Switch使用注意
Char c=‘A’;
Switch(c)
{
Case ‘A’:
语句1;
Break;
Case 65://不能这样写,因为‘A’的ASCII值就是65,会报错
语句2;
Break;
Case 数值3:
Int a=10;
//a的作用域不明确报错,c语言检查变量的作用域根据{}决定,这里可以加{}
Break;
Default :
语句4;
Break;
}
注意:如果要在case后面的语句中定义变量,则必须使用大括号包住。
(三)switch结构练习
问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。
A 90-100 B80-89 C70-79 D60-69 E0-60
代码:
1 #include<stdio.h>
2
3 int main()
4
5 {
6
7 //定义变量存储分数值
8
9 int score;
10
11 //提示输入
12
13 printf("请输入分值:\n");
14
15 //接受输入
16
17 scanf("%d",&score);
18
19 //判断等级
20
21 switch(score/10)
22
23 {
24
25 case 10:
26
27 case 9:
28
29 printf("A\n");
30
31 case 8:
32
33 printf("B\n");
34
35 break;
36
37 case 7:
38
39 printf("C\n");
40
41 break;
42
43 case 6:
44
45 printf("D\n");
46
47 break;
48
49 default:
50
51 printf("E\n");
52
53 break;
54
55 }
56
57 return 0;
58
59 }