首页 > 代码库 > 【iOS开发基础】【C语言】03 - 流程控制
【iOS开发基础】【C语言】03 - 流程控制
一、流程控制结构
(1)顺序结构:按照书写顺序执行每一条语句。
(2)选择结构:对给定的条件进行判断,根据判断结果来决定执行哪一段代码。
(3)循环结构:在给定条件成立的情况下,反复执行某一段代码。
二、选择结构 - if
(一)if简单使用
1) 第一种结构:
如果条件为真,就执行后面的语句,否则不执行。
if(条件)
{
语句1;
语句2;
……
}
2) 第二种结构:
如果条件成立就执行语句1,否则执行语句2。
if(条件)
{
语句1;
}
else
{
语句2;
}
3) 第三种结构:
先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2……
【注意】如果条件3成立,则说明前面的都不成立。所有的语句块只有一个会被执行。
if(条件1)
{
语句1;
}
else if(条件2)
{
语句2;
}
else (条件3)
{
语句3;
}
4) 第四种结构:
在这种情况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。
if(条件)
语句1;
语句2;
(二)if使用注意
①.推荐使用if(0==a)这种写法。
②. 注意赋值运算符,不要把==写成是=。
③. If(条件)后面不要加分号。
④. 注意作用域的问题,如果要在if后面定义新的变量,则一定要使用大括号。
(三)if练习
输入一个整数score代表分数,根据分数输出等级(A-E)
A:90~100 B:80~89 C:70~79 D:60~69 E:0~60
1 #include<stdio.h> 2 3 int main(){ 4 5 //定义变量存储分数值 6 7 int score; 8 9 //提示输入10 11 printf("请输入分值:\n");12 13 //接受输入14 15 scanf("%d",&score);16 17 //判断等级18 19 if(score>=90&&score<=100)20 21 printf("A\n");22 23 else if(score>=80)24 25 printf("B\n");26 27 else if(score>=70)28 29 printf("C\n");30 31 else if(score>=60)32 33 printf("D\n");34 35 else36 37 printf("E\n");38 39 return 0;40 41 }
三、选择结构 - 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 B 80-89 C 70-79 D 60-69 E 0-60
1 #include<stdio.h> 2 3 int main() 4 { 5 // 定义一个变量score,用来存储用户输入的分数 6 int score ; 7 8 printf("请输入你的分数:"); 9 10 scanf("%d",&score);11 12 //用switch语句判断用户输入的分数是什么等级13 switch (score/10) {14 case 10://100分15 case 9://90~99分16 printf("等级是 A \n");17 break;18 case 8://80~89分19 printf("等级是 B \n");20 break;21 case 7://70~79分22 printf("等级是 C \n");23 break;24 case 6://60~69分25 printf("等级是 D \n");26 break;27 default://0~59分28 printf("等级是 E \n");29 break;30 }31 return 0;32 }33 34 代码
【对比】if与switch:
1. if语句能够完成的功能,switch有时并不能够完成,如判断if(a>100)
2. 在有些情况下,if语句和switch语句可以互换
3. switch语句能完成的功能,if语句都可以完成
四、循环结构-while
(一)while结构
while(条件)
{
语句;
}
解说:判断条件是否成立,成立则执行(判断条件 -> 执行代码块 -> 判断条件 -> 执行代码块……)
1.首先确定循环执行的操作,2.在确定约束条件,即需要循环多少次,3.定义一个变量来记录循环的次数。
提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判断)。
while结构的运行原理:
①. 如果一开始条件不成立,则永远不会执行循环体。
②. 如果条件成立,则执行一次循环体,执行完毕后再次判断条件是否成立。
③. break:直接退出整个循环。
④. continue:结束当前循环体,进行下一轮循环判断。
(二)使用注意
1) while(1){.....}是一个死循环
2) while(a<10);{...}在条件后面加逗号表示循环体是一个空语句,而非{}部分
3) while条件语句后推荐使用{},否则只有第一条语句时循环体
4) 最简单的死循环 while(1);//永远执行空语句,让程序崩溃
(三)while练习
编程实现,提示输入一个正整数n,计算1+2+3+...n的值。
1 #include<stdio.h> 2 3 int main(){ 4 5 //定义变量保存用户输入的整数 6 7 int n; 8 9 while(n<=0){10 11 //提示输入12 13 printf("请输入一个正整数:\n");14 15 //接受输入16 17 scanf("%d",&n);18 19 }20 21 int sum=0;22 23 int number=0;//默认被加的数值24 25 while(number<n){26 27 number++;28 29 sum=sum+number;30 31 }32 33 printf("计算结果为:%d\n",sum);34 35 return 0;36 37 }
五、循环结构-do while
Do
{
语句
}while(条件)
特点:do while循环至少会执行一次循环体
六、循环结构-for
(一)基本使用
for(语句1,条件,语句2)
{
循环体
}
语句1:一般为初始化语句
语句2:一般为增量语句(执行完循环体后再执行的语句)
for循环原理:
1) for循环一开始就会执行语句1(整个for循环只会执行一次)
2) 判断条件是否成立,若成立,则执行一次循环体,然后执行语句2,再次判断条件是否成立,若条件不成立则结束循环
3) 顺序为:(语句1 -> 判断条件 -> 循环体 -> 语句2 -> 判断条件 -> 循环体……)
【对比】for和while:
在性能上,for循环稍胜一筹,因为while循环只能使用外部的变量,而for循环可以对变量进行及时回收。
(二)for使用注意
①. 不要随便在for语句后面写上分号,如for();{....}
②. 定义变量的作用域不明确错误
for(int i = 0;i < 5;i++)
int a = 10; //编译器报错,变量作用域不明确
③. for语句中最简单的死循环for(;;);
④. 需要注意变量定义的作用域
int a = 10;
for(int i = 0,int a = 9;i < 5;i++)
{
int a = 10;
printf(“a = %d\n”,a);//这里打印的a的值是多少?
}
(三)for循环嵌套
用以输出特定格式的内容,如QQ好友列表等,提升可扩展性。
for(in i = 0;i < 5;i++)
{
//外面的循环控制行数
printf(“好友列表%d\n”,i);
//内部的循环控制列数
for(int j = 1;j< = 6;j++)
{
printf(“好友%d\n”,j);
}
}
(四)for练习
使用for循环输出九九乘法表。//先控制行数,在控制列数
代码:
1 #include<stdio.h> 2 3 int main() 4 5 { 6 7 for(int i=1;i<=9;i++) 8 9 {10 11 for(int j=1;j<=i;j++)12 13 {14 15 printf("%dx%d=%d\t",i,j,i*j);16 17 }18 19 printf("\n");20 21 }22 23 return 0;24 25 }
【iOS开发基础】【C语言】03 - 流程控制