c语言:流程控制语句
- 格式:rtf
- 大小:124.89 KB
- 文档页数:12
C语言是一种广泛应用的编程语言,其流程控制语句是编写程序中的重要部分。
流程控制语句用于控制程序的执行流程,包括顺序执行、条件执行和循环执行。
C语言中常用的流程控制语句主要包括顺序结构、选择结构和循环结构,下面将分别介绍它们的语法格式及使用方法。
1. 顺序结构顺序结构是程序中最简单的流程控制结构,也是最基本的结构。
顺序结构指的是按照代码的编写顺序依次执行,没有跳跃或分支。
在C语言中,顺序结构是程序的默认执行方式,没有特定的关键字或语法格式。
程序中的语句按照编写的顺序依次执行,直到程序结束。
例如:```cint m本人n() {int a = 1;int b = 2;int c = a + b;printf("The result is d\n", c);return 0;}```以上代码中的语句就是按照顺序依次执行的,没有条件判断或循环。
2. 选择结构选择结构是根据条件判断的结果决定程序执行的流程控制结构。
在C 语言中,选择结构有两种形式,分别是if语句和switch语句。
(1)if语句if语句用于根据条件判断的结果决定程序的执行流程。
其基本语法格式如下:```cif (condition) {// 当条件为真(非0)时执行此处的语句块} else {// 当条件为假(0)时执行此处的语句块}```在if语句中,condition代表一个表达式或逻辑判断,如果condition 的值为真(非0),则执行if后面的语句块;否则执行else后面的语句块。
例如:```cint score = 80;if (score >= 60) {printf("Pass\n");} else {printf("F本人l\n");}```以上代码中,根据score的值来判断是否及格,如果score大于等于60,则输出Pass,否则输出F本人l。
除了if和else关键字,还可以使用else if语句来实现多重条件判断:```cint score = 75;if (score >= 90) {printf("Excellent\n");} else if (score >= 80) {printf("Good\n");} else if (score >= 70) {printf("Average\n");} else {printf("F本人l\n");}```(2)switch语句switch语句也是一种选择结构,适用于有多个条件判断的情况。
3第三章控制语句第三章控制语句3.1程序的基本结构程序的基本结构有三种:顺序结构、分支结构、循环结构前面的例子都是顺序结构,大量的实际问题需要通过各种控制流程来解决。
分支和循环结构的控制语句有:条件语句:if语句开关语句:switch语句循环语句:for语句、while语句、do while语句转移语句:break、continue、goto语句•简单语句:均是以“;”结尾的语句。
z=x+y;c=getchar();•复合语句:复合语句是用花招号“{ }”把“说明”和若干个有序的简单语句组合在一起而构成的语句集合。
其一般形式是:{<内部数据说明><语句表>}•复合语句实例:{int i,j,k;i=i+1;j=j*2;i=k<<j;}•空语句:空语句的含义是什么动作都不执行,语句本身仅有一个分号。
while (putchar(getchar())!='\0'); 空语句选择结构(分支结构)◆“选择结构”也可以叫做“分支结构”。
在一个合理的“选择结构”中,总是先进行某个条件的判断,然后根据判断的结果选择执行预先设定的操作。
◆要想实现“选择结构”,需要2个条件:①能表达条件判断的运算符;②能实现判断并选择的控制语句。
A B?Yes No ab3.3 if 语句if 语句的三种形式 if 语句的嵌套if 语句◆if 语句是一种选择控制语句,而且是条件分支控制语句,即总是先进行一个条件的判断,然后根据判断的结果(成立或不成立)选择执行预先设定的操作。
◆if 语句中的条件判断都是用一个表达式来表示的。
在执行if语句时,会求解这个表达式的逻辑值,因为这个表达式的逻辑值代表了判断的结果:值为“T”,判断成立,值为“F”,判断不成立。
因此,if 语句根据判断的结果(成立或不成立)选择执行预先设定的操作,实际上是根据条件判断表达式的逻辑值是“真”是“假”来选择的。
浅析C语言中的goto语句C语言中的goto语句是一种流程控制语句,它允许程序无条件地跳转到程序中的任意位置。
虽然goto语句在现代编程中被广泛认为是不好的实践,但它仍然可以在某些情况下提供一种简洁的控制流程方式。
本文将对C语言中的goto语句进行浅析,探讨其使用场景、优缺点以及避免滥用的方法。
一、goto语句的基本用法在C语言中,可以使用goto语句将程序跳转到代码中任意标记处。
goto语句的一般语法格式为:```goto label;…label: statement;```label是用户自定义的标记,statement是要执行的语句。
当程序执行到goto语句时,会根据标记跳转到对应的语句处执行。
1. 出错处理:在程序中发生错误时,可以使用goto语句跳转到出错处理的位置,释放资源并进行错误处理。
2. 多重循环:在嵌套循环中,使用goto语句可以方便地跳出多重循环,提高代码的可读性。
3. 状态机:在状态机或者有限状态自动机的实现中,goto语句可以简化代码,提高可维护性。
三、goto语句的优缺点虽然goto语句在某些情况下可以提供简洁的解决方案,但它也有一些明显的缺点,因此在大多数情况下应尽量避免使用。
以下是goto语句的一些优缺点:优点:1. 简洁直观:在某些场景下,使用goto语句可以使代码更加简洁和直观。
2. 跳出多重循环:在嵌套循环中,使用goto语句可以方便地跳出多重循环。
缺点:1. 可读性差:过度使用goto语句会导致代码的可读性变差,使程序难以理解和维护。
2. 维护困难:过度使用goto语句会使程序结构混乱,增加程序的维护难度。
3. 容易引发错误:使用goto语句会增加程序出错的可能性,尤其是在跳转到未知位置时。
四、避免滥用goto语句的方法为了避免滥用goto语句,我们可以采取一些方法来限制其使用,并保持程序的可读性和可维护性:1. 使用结构化程序设计:尽量使用结构化的编程方式,避免使用goto语句。
C语言常见几种流程控制语句C语言中常见的流程控制语句有以下几种:1. 条件语句(if-else语句):根据条件的真假来决定执行哪个代码块。
```cif(condition)// code to be executed if condition is trueelse// code to be executed if condition is false```2. 循环语句(while循环语句):在条件为真时重复执行一段代码。
```cwhile(condition)// code to be executed```3. 循环语句(do-while循环语句):在条件为真时重复执行一段代码,至少会执行一次。
```cdo// code to be executed} while(condition);```4. 循环语句(for循环语句):在给定的条件为真时重复执行一段代码,通常用于迭代操作。
```cfor(initialization; condition; increment/decrement)// code to be executed```5. 跳转语句(continue语句):用于跳过循环中的当前迭代,继续下一次迭代。
```cfor(int i = 0; i < 5; i++)if(i == 2)continue;}printf("%d\n", i);```6. 跳转语句(break语句):用于跳出循环或者switch语句。
```cfor(int i = 0; i < 5; i++)if(i == 2)break;}printf("%d\n", i);```7. 跳转语句(switch语句):根据表达式的值跳转到一个或多个代码块。
```cswitch(expression)case constant1:// code to be executed if expression is constant1break;case constant2:// code to be executed if expression is constant2break;...default:// code to be executed if expression doesn't match any constant```8. 跳转语句(return语句):用于从函数中返回一个值,并结束函数的执行。
switch在c语言中的用法一、引言switch是C语言中的一种流程控制语句,它可以根据表达式的值来选择不同的分支执行不同的代码。
在程序中,我们经常需要根据某个变量或表达式的值来进行不同的处理,这时候就可以用到switch语句。
二、基本语法switch语句通常由一个表达式和多个case分支组成,其基本语法如下:```switch (expression) {case constant-expression1:statement1;break;case constant-expression2:statement2;break;...default:statementn;}```其中,expression为要判断的表达式,constant-expression1、constant-expression2等为常量表达式(即字面值或定义好的常量),statement1、statement2等为要执行的语句。
default为可选项,表示当所有case都不匹配时要执行的语句。
三、使用示例下面通过几个例子来说明switch语句的使用方法。
### 例1:根据星期几输出相应信息```#include <stdio.h>int main() {int day = 3;switch (day) {case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;case 4:printf("Thursday\n");break;case 5:printf("Friday\n");break;default:printf("Weekend\n");break;}return 0;}```在这个例子中,我们定义了一个整型变量day,并将其赋值为3。
流程控制
=======
知识点:
if-else语句使用
switch语句使用
break使用
正常情况下,程序从main函数开始,一句一句,自上而下执行每一条语句。
一些语句可以控制,修改程序的运行流程,称为流程控制语句。
一、条件判断语句if
if(表达式){
语句
}
如果……就……
【逻辑】当程序执行到if语句,首先计算表达式的值,如果为真,执行语句。
如果为假,不执行、跳过语句。
【逻辑假设】
if(表达式){
语句1
}else{
语句2
}
如果……就……否则……
【逻辑】当程序执行到if else语句,首先计算表达式的值,如果为真,执行语句1,不执行语句2。
如果为假,执行语句2,不执行语句1。
【逻辑二择】
例,明天考试,80分以下把代码抄写五遍,80分以上奖励棒棒糖一枚。
if(表达式1){
语句1
}else if(表达式2){
语句2
}else if(表达式3){
语句3
} else{
语句4
}
如果(表达式1成立),那么执行语句1
否则如果(表达式2成立),那么执行语句2
……
否则,执行语句4。
【逻辑】当程序执行到该结构,计算机表达式1,如果成立,执行语句1,跳出整个结构。
如果表达式2为假,计算表达式2,如果为真,执行语句2,跳出结构体。
直到表达式2为假,计算表达式3,依次类推,如果表达式都不成立,执行else下的语句。
如果不需要(即所有表达式都不成立,什么都不做),可以不写else。
else if的数量根据需求,任意增减,没有限制。
【注】在if else if结构中,每个else都是对前面每个表达式的否定。
【逻辑多择】
嵌套的if-else语句
我们可以在if语句内嵌套if语句,同样,我们也可以在if语句内嵌套if-else语句,在if-else 语句内嵌套if语句,以及在if-else语句内嵌套if-else语句。
int x;
scanf(“%d”,&x);
if(x<0){
printf(“error!\n”);
}else{
if(x%2)
printf(“jishu\n”);
else
printf(“oushu\n”);
}
练习
1、使用if else if,模拟下述分段函数。
x^2+1(x<0)
y= 2*x+6 (0<=x<=5)
3*x-1 (x>5)
2、输入一个字符,如果是大写字母,转成小写字母。
如果是小写字母,转成大写字母,如果不是字母,不变输出。
3、输入一个字符,判断这个字符是表示大写字母,小写字母,数字字符,还是其他。
A
a 9 %
二、逻辑跳转语句goto switch
1、goto语句
无条件跳转到指定标号的位置,向下执行。
goto 语句标号
printf(“————————1\n”);
printf(“————————2\n”);
goto A; //跳转到标号的位置
printf(“————————3\n”);
printf(“————————4\n”);
//标号的名字是标识符,这里使用大写是为了和变量相回避。
A: //这是一个标号,是一个位置的标记,本身是什么都不做。
printf(“————————5\n”);
B:
printf(“————————6\n”);
按正常顺序,应该是123456,但是goto可以打破这种顺序。
执行goto后,1256
//可以随意加标号,标号本身没有任何意义。
printf(“————————1\n”);
printf(“————————2\n”);
A:
printf(“————————3\n”);
printf(“————————4\n”);
goto A; //循环
printf(“————————5\n”);
printf(“————————6\n”);
【注】goto语句不常使用,因为它没有明确的套用关系。
而且不能跨栈。
goto不能跨函数。
练习:
4、使用goto语句,统计从键盘输入的字符个数。
int n=0;
A:
if(getchar()!=‘\n’)
{
n++;
goto A;
}
printf(“%d\n”);
2、多分支选择switch
switch(表达式){
case 常量表达式1:
语句1
case 常量表达式2:
语句2
case 常量表达式3:
语句3
……
default:
默认语句
}
【逻辑】当程序执行到switch,计算表达式。
表达式的值是几,就跳到对应的case处,向下执行。
如果没有对应的case,跳到default标号处,向下执行。
int a;
scanf a;
switch(a){
case 1:
printf(“1\n”);
case 2:
printf(“2\n”);
case 3:
printf(“3\n”);
default:
printf default;
}
//当输入2,输出2 3 default
由此,引进break;跳出switch。
switch(表达式){
case 常量表达式1:
语句1
break;
case 常量表达式2:
语句2
break;
case 常量表达式3:
语句3
break;
……
default:
默认语句
}
【注】break语句用于跳出switch和循环,不用来跳出if,无视if。
int a;
scanf a;
switch(a){
case 1:
printf(“1\n”);
case 2:
printf(“2\n”);
if(3>2){
break; //这里会直接跳出switch,无视if。
}
case 3:
printf(“3\n”);
default:
printf default;
}
【注】如果switch里面还有switch,break只能跳出一层switch。
switch(){
case 1:
case 2:
switch(){
case 1:
break;
case 2:
}
default:
}
【注】
switch语句中,如果case1、case2需要执行内容相同,可以省略case1。
switch(c){
case ‘a’:
case ‘A’:
printf(“a\n”);
break;
case ‘b’:
case ‘B’:
printf(“b\n”);
break;
default:
printf(“error\n”);
}
【注】
1、在case后的各常量表达式的值不能相同,否则会出现错误。
2、在case后,允许有多个语句,可以不用{}括起来。
3、各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
4、default子句可以省略不用。
练习
5、输出一个字母,判断这个字母表示星期几,如果一个字母不能表示,在输入一个字母,输出星期几。
Monday Tuesday Wensday Thursday Friday Saturday Sunday
输入M,输出Monday
输入S,要求输入第二个字母,u输出Sunday
6、输入一个时间,输出这个时间之后一秒
比如,输入23:59:59,输出00:00:00
*7、超难题
输入一个日期,输出这一天是这一年的第几天,考虑平均闰年
输入:2000-1-1 输出1
输入:2000-12-31 输出366。