c语⾔顺序程序结构,C语⾔_04三种程序结构顺序,选择(分
⽀),循环结构
概念
在C语⾔程序中,⼀共有三种程序结构:顺序结构、选择结构(分⽀结构)、循环结构;
顺序结构,从头到尾⼀句接着⼀句的执⾏下来,直到执⾏完最后⼀句;
选择结构,到某个节点后,会根据⼀次判断的结果来决定之后向哪⼀个分⽀⽅向执⾏;
循环结构,循环结构有⼀个循环体,循环体⾥是⼀段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执⾏多少次。C语⾔循环控制语句是⼀个基于C语⾔的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。
switch的用法c语言但是三种结构并不是彼此孤⽴ 循环中可以有顺序, 选择(分⽀). 顺序中可以有选择,可以有循环. 选择中也可以有顺序有循环. ⼀段程序代码往往是这三者相互结合组成的.
1.顺序结构
C语⾔的顺序结构顾名思义, 就是程序⾃上⽽下执⾏, 没有分⽀,也没有循环.
#include
int main(){
int a = 3, b = 2;
int sum = a+b;
printf("a+b=%d\n", sum); //输出a+b的和
return 0;
}
像上述代码, 程序顺序执⾏求和a+b并输出, 没有循环也没有分⽀, 所以上述代码就是⼀个顺序结构.
2.选择(分⽀)结构
C语⾔选择结构⽤于判断给定的条件,根据判断的结果来控制程序的流程。
在C语⾔中, 选择结构有两种: 1. if-else语句, 2. switch-case语句;
1) if-else 语句
写法:
if(条件1){
//满⾜条件1执⾏此代码块
...
}else if(条件2){
//不满⾜条件1, 满⾜条件2执⾏此代码块
...
...
}
举个栗⼦, 成绩评级.
#include
int main(){
int score = 78; //模拟输⼊成绩
if (score >= 90){ //成绩 ⼤于90 A
printf("A");
}else if(score >= 80 && score < 90){ // 80-89 B
printf("B");
}else if(score >= 70 && score < 80){ // 70-79 C
printf("C");
}else if(score >= 60 && score < 70){ // 60-69 D
printf("D");
}else{ //⼩于60 E
printf("E");
}
return 0;
}
else if 可以有0个或多个, else 只能有0个或1个.
如果我们只需判断学⽣是否及各, 那么我们就可以这样写:
if (score >= 60){
printf("及格");
}else{
printf("不及格");
}
当然也可以只有if() 没有else , 只有if() 和 else if ()没有else.
2)switch-case 语句
在C语⾔中, 第⼆种分⽀结构就是switch-case, 只是⽤的地⽅不太多, 因为if语句可以轻松替代switch语句, 只是结构上没switch那么清晰.语法:
switch (变量或表达式){
case 常量表达式1: 语句块1; break;
case 常量表达式n: 语句块n; break;
default: 语句块n+1; break;
}
还是成绩评级的栗⼦:
#include
int main(){
int score = 78; //模拟输⼊
switch(score / 10){ //case匹配的数据就是score/10的结果
case 10:
case 9: printf("A"); break;
case 8: printf("B"); break;
case 7: printf("C"); break;
case 6: printf("D"); break;
default: printf("E"); break;
}
return 0;
}
score/10 得到的整数就是那个阶段的成绩, 我们会发现case 10: 也就是100分匹配后⾯没有任何的操作, 最主要的是, 没有break;
在switch语句中, 如果case匹配到了语句, 那么后⾯的语句都会执⾏知道出现第⼀个break, 或者执⾏完成.
如果我们将上⾯代码中的break全部去掉.score还是78, 那么输出就会变成 CDE, 也就是匹配到7 然后输出7之后的所有语句,知道碰到break;
default相当于else, 其他所有不匹配的情况, 因为⼀般是放在最下⾯, 所以default后⾯的break可以不写.
重点:switch的条件只能是整型和字符型(其实就是字符的ascii码)或者这些类型的表达式,case匹配的只能是整型或者字符型常量或者这两个类型的常量表达式, 也就是case不能匹配变量.
3.循环结构
循环结构是指在程序中需要反复执⾏某个功能⽽设置的⼀种程序结构。它由循环体中的条件,判断继续执⾏某个功能还是退出循环。
在C语⾔中有三种循环结构: for循环, while循环, do-while循环.
1) for循环
写法:
for(表达式1; 表达式2; 表达式3){
循环体;
}
语句1:初值表达式,常⽤于在循环开始前为循环变量赋初值
循环输出10个"hello world"
#include
int main(){
int i;
for (i = 1; i <= 10; i++){ //循环10次, i++为 i⾃增长1
printf("hello world\n");
}
return 0;
}
上诉for循环的执⾏过程:
1.执⾏表达式1, i = 1, 只执⾏⼀遍.
2. 执⾏表达式2, 判断 i <=10
3.如果表达式2成⽴, 执⾏循环体 { printf("hello world\n"); } 否则执⾏退出循环, 后续步骤都不执⾏.
4.执⾏完成循环体后,执⾏表达式3, i++, i的值⾃动增长1. 回到步骤2去判断.
for循环中的三个表达式都可以为空, 但是⼀定要写两个分号也就是 for( ; ; ) 这样就代表⽆限循环, 也就是死循环.不过⼀般不会这样⽤.⽽for循环常⽤的是对数组的操作,所以初始值⼀般是0.
int i;
int Stu[10] = {99, 87, 76, 59, 73, 45, 99, 39, 88, 19}; //班级10个学⽣的成绩
for(i = 0; i < 10; i++){ //循环10次, 0~9
printf("学号为:%d, 成绩为: %d\n", i+1, Stu[i]); //数组下标从0开始
}
其实可以发现, 正常的for循环可以很清晰的明⽩for循环的循环次数.
所以在你很清晰明⽩这次循环需要循环多少次的时候推荐使⽤for循环.
2) while 循环
while循环的语法简单易懂
while(表达式){
语句块
}
执⾏过程: 执⾏表达式, 如果成⽴执⾏语句块, 否则退出循环.
while循环也可以和for循环互换.
//for -> while
i++;
}
//while -> for
for (;l < r;){
}
for->while: 没有for循环那么清晰明了的知道循环次数.
while->for: 没有while循环那么简单易懂了.
所以while循环的⼀般⽤法是我们不太清楚循环在什么时候结束, 并且我们也不关⼼具体的循环次数的时候使⽤.
举个例⼦: ⼆分查
#include
int main(){
int a[10] = {12, 32, 34, 55, 76, 89, 99, 123, 345, 1234}; //递增的数组
int l = 0, r = 9, mid;
int res = 345; //查的⽬标
//⼆分查位置
while(l <= r){
mid = (l+r)/2;
if (res == a[mid]){ //到了输出位置, 并退出循环.
printf("位置: %d\n", mid+1); break;
}else if(res < a[mid]){
r = mid-1;
}else{
l = mid+1;
}
}
return 0;
}
我们只看while循环的内容, while(l<=r) 也就是当l>r时循环退出.
和for循环不同的是, 我们并不清楚程序在什么时候会退出, l和r在循环中是在不断变换的.这种情况使⽤while循环是个不错的选择.
3) do-while循环
do{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论