当前位置:
文档之家› 《C语言程序设计》第三章 语句与控制流
《C语言程序设计》第三章 语句与控制流
运行结果: 运行结果: x=3 y=2
2. if语句的嵌套 语句的嵌套 (1)在基本形式1的else后的语句2位置层层 在基本形式1 else后的语句2 后的语句 嵌套基本形式1语句。 嵌套基本形式1语句。 if(表达式1 语句1 if(表达式1) 语句1 else if(表达式2)语句2 if(表达式2 语句2 …… …… if(表达式n 语句n else if(表达式n)语句n 语句n+1; else 语句n+1;
语句1; break; 语句1; break; case 常量表达式2 常量表达式2:
语句2; break; 语句2; break; …… case
语句n; break; 语句n; break; [ defalt : 语句n+1 语句n+1 ] }
[3]:根据学生的考分, 例 [3] : 根据学生的考分 , 来判断划分成绩的 及格和不及格,分别用5 优、良、及格和不及格,分别用5,4,3,2来 表示,且按如下划分: 100~ 表示,且按如下划分: 100~95 5 94~ 94~80 79~ 79~60 59~ 59~0 完整的源程序如下: 完整的源程序如下:
多分支选择语句 无条件转移语句 当循环 直到型循环 for循环 for循环
凡以后在语法形式中出现的 )~ if( )~else ~ 条件分支语句
break,continue,return,goto
‘ 语句’ 一词, 均指以上表 语句 ’ 一词 ,
while( ) ~ 中的各种语句。 中的各种语句。 do ~ while( ) for( ) ~
接下页
4 3 2
void main(){ int snum, score; char grade; scanf("%d%d",&snum, &score ); if(score>94) 分层缩进对齐的形式, 分层缩进对齐的形式, grade='5'; 便于阅读,便于调试。 便于阅读,便于调试。 else if(score>79) else 总 是 与 它 前面 最 接 grade='4'; 近的还没有配对的if if配对 近的还没有配对的if配对 else if(score>59) 进入 if 语 句 后 至多执行 grade='3'; 其中的一个语句, 其中的一个语句 , 即使嵌 else 套形式也不例外; 套形式也不例外; grade='2'; %c\ printf("%d %c\n",snum, grade ); }
的大小,且把大者赋给变量x 例[1]:比较a, b 的大小,且把大者赋给变量x,小的 [1]:比较a, 赋给变量y 并打印输。 赋给变量y,并打印输。
#include <stdio.h> void main(){ int a,b,x,y; a=2; b=3; if(a>b){ x=a; y=b; } else{ x=b; y=a; } y=%d\ printf("x=%d y=%d\n",x, y); }
功能:根据表 达式的值是否 与某常量表达 相同, 式 i 相同 , 来选 择执行若干语 句中的一个语 句或一个语句 序列。若要真 正起到多分支 选择执行功能 ,须配合使用 break语句 语句。 break语句。
真正能起到多分支选择执行功能的形式: 真正能起到多分支选择执行功能的形式: switch(表达式){ switch(表达式){ 表达式 case case …… case } 常量表达式1 语句1; break; 常量表达式1:语句1; break; 常量表达式2 语句2; break; 常量表达式2:语句2; break; 常量表达式n 语句n; break; 常量表达式n:语句n; break;
//用户自定义函数原型说明 //用户自定义函数原型说明
sum=term=x;
while( fabs(term) > EPS ){ n=n+1;
ቤተ መጻሕፍቲ ባይዱ
信息科学技术学院 2)*(2*nterm=term*(-x*x)/((2*n-2)*(2*n-1)); term=term*(-x*x)/((2*n-C语言程序设计教学组
运行结果: 运行结果: x=3 y=2 x=3 y=2
二、条件语句(if) 条件语句(if)
非零(真) 非零(
1. 两种基本形式: 两种基本形式:
语句1 语句
表达式?
零
语句2 语句
基本形式1 基本形式1: if(表达式)语句1 语句2 if(表达式)语句1 else 语句2 表达式
非零(真) 非零( 零
break语句用于终止 switch break 语句用于终止switch 语 语句用于终止 句的执行,跳出switch 结构。 句的执行,跳出switch 结构。
:语句 语句n+1 [ defalt :语句n+1 ]
说明: 说明:
switch(表达式){ switch(表达式){ 表达式 case 常量表达式1 常量表达式1: 表达式和常量表达式i 表达式和常量表达式 i 要求是 整形或字符形, 整形或字符形,且两者类型相 同; 常量表达式i 常量表达式 i 的值必须互不相 同,它们只起相当于语句入口 标号的作用, 标号的作用,没有条件判断分 常量表达式n 常量表达式n: 支执行的功能; 支执行的功能; 执行时若常量表达式i 执行时若常量表达式 i 的值与 表达式相等, 表达式相等,就顺序执行其后 的 语 句 , 否 则 执 行 defalt 后 的语句n+1; 的语句n+1; n+1
标号语句 以上语句添加标号,构成标号语句, 以上语句添加标号,构成标号语句,
C语句的分类
函数调用语句 简单的顺 表达式语句 序执行语 空语句 句 复合语句 流 程 控 制 语 句 分 支 转 移 循 环 switch 函数调用加分号构成 表达式加分号构成 花括号括起来的语句
约定:为叙述简捷方便, 约定:为叙述简捷方便 , 只有一个分号的语句
基本形式1 基本形式1: if(表达式)语句1 if(表达式)语句1 表达式 语句2 else 语句2 基本形式2 基本形式2: if(表达式)语句1 if(表达式)语句1 表达式
2. if语句的嵌套 语句的嵌套 (3)在基本形式1的语句1位置嵌套基本形式2 在基本形式1的语句1位置嵌套基本形式2 if(表达式1 if(表达式1) if(表达式2)语句1 if(表达式2 语句1 语句2 else 语句2
基本形式1 基本形式1: if(表达式)语句1 if(表达式)语句1 表达式 else 语句2 语句2 基本形式2 基本形式2: if(表达式)语句1 if(表达式)语句1 表达式
else究竟与哪一个if配对? else究竟与哪一个if配对? 究竟与哪一个if配对
基本形式1 if(表达式 语句1 表达式) 基本形式1: if(表达式)语句1 基本形式2 if(表达式 语句1 表达式) 基本形式2: if(表达式)语句1
三、多分之选择语句(switch) 多分之选择语句(switch) switch语句形式: switch语句形式: 语句形式 switch(表达式){ switch(表达式){ 表达式 case case …… case } 常量表达式n 语句n 常量表达式n:语句n :语句 语句n+1 [ default :语句n+1 ] 常量表达式1 语句1 常量表达式1:语句1 常量表达式2:语句2 常量表达式2 语句2
复合语句: 复合语句:在程序中用大括号括起来的若干语 句成为复合语句。一般形式: 句成为复合语句。一般形式:
{ 数据说明部分; 数据说明部分; 执行语句部分; 执行语句部分; }
执行语句可以是简 单语句、 构造语句, 单语句 、 构造语句 , 还可以是复合语句。 还可以是复合语句。 在复合语句内部定 义的变量, 义的变量 , 其作用域 仅限于该复合语句的 内部; 内部;
语句2 else 语句2
注意: 注意:
● 语法规定else总是与它前面最接近的还没 语法规定else总是与它前面最接近的还没 else 有配对的if配对; 有配对的if配对; if配对 ● 进入if语句后,不管其层层嵌套有多复杂, 进入if语句后,不管其层层嵌套有多复杂, if语句后 最多只执行其中的一个语句。 最多只执行其中的一个语句。
第三章 语句与控制流
内容提要: ★ 内容提要:
C语句的分类 语句的分类 空语句与复合语句 条件分支语句 循环控制语句与嵌套 执行流程强制转移 编程常用技巧 语句分类表 空语句与复合语句 条件分支语句 循环控制语句 程序示例 流程强制转移
第三章 语句与控制流
C 语言是一种很好的结构化程序设计 语言,它提供了比FORTRAN PASCLE更丰 FORTRAN、 语言 , 它提供了比 FORTRAN、PASCLE更丰 富的流程控制语句, 富的流程控制语句 , 还提供了将多个语 句组合成一个语句的复合语句。 句组合成一个语句的复合语句。
标号语句 以上语句添加标号,构成标号语句, 以上语句添加标号,构成标号语句,
一、空语句与复合语句 空语句:只有一个分号的语句, 空语句:只有一个分号的语句,属于不进行任 何操作的语句。 何操作的语句。
过滤掉输入字符流中的空白、 过滤掉输入字符流中的空白、 回车换行和制表符的 语句。循环体是一个空语句: 语句。循环体是一个空语句: '||c=='\n'||c=='\ while((c=getchar())==' '||c=='\n'||c=='\t') ; 计算字符串的长度语句,其循环体是一个空语句: 计算字符串的长度语句, 循环体是一个空语句: a[i]!='\ for( i=0; a[i]!='\0'; i++ ) ;