第四章 控制流_顺序结构 选择结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.4.2 if形式—— 单分支结构
if 形式是最简单的条件语句。
语法:
if (表达式)
条件表达式
语句1;
下一条语句; 功能:检测表达式,如果表达式的值为非0 (真),则执行语句1,然后执行下一条语句; 如果表达式的值为0(假),直接执行下一条语
句。
注意:
(1) 表达式必须用圆括号括起来,不能省略。 (2) 表达式可以使用关系表达式,
}
例4.7 请判断下面程序的执行结果。 #include "stdio.h" void main() { int a=30,b=20,x; if (a>b) { x=a; printf("%d\n",a); } else x=b; printf("%d\n",b); }
4.4.4 if语句的嵌套
例如我们要解决这样一个问题:输入一个整
数,根据输入值,输出数的范围属于大于0、小 于0还是等于0。 x的范围实际上是三种情况,我们先用if else 解决这个问题:
if (x==0) printf (" x=0"); else { if (x<0)
printf(" x<0");
else
printf("x>0");
}
else if的语法:
if (表达式1) 语句1; else if (表达式2) 语句2; [else if (表达式3) 语句3;] … [else if (表达式n) 语句n;]
[else 语句n+1;]
一条语句;
功能:按表达式的顺序进行判断,最早值为真 的表达式将引起执行相应语句,并且不再继续判断 其它条件,跳转到下一条语句执行。若全部 表达式 为假,则执行语句n+1。 if (x>0) printf (" x=0");
if (表达式1)
{
} else
if (表达式2)
语句1;
if (表达式1) && (表达 式2) 语句1; if (!表达式1) 语句2 ;
语句2;
if (表达式1)
{ if (表达式2) 语句1; else 语句2;
if (表达式1) && (表达式2)
语句1; if (表达式1) && (!表达式2) 语句2 ;
分支语句(if 和 switch)
循环语句(while,do-while,for)
转向语句(break,goto,continue,return)

熟练掌握控制语句是学会程序设计的基础。
空语句
C语言中有一个很特殊的语句,即空语句。空 语句,顾名思义,就是什么也不存在的语句,只有 一个分号: ;
尽管空语句不会有任何命令执行,但仍然是一 个有用的语句。常用于循环语句中,使循环体为空。 例如:for (sum=0,i=0;i<=9;i++;sum=sum+i);
例4.5解决求商的问题。 #include " stdio.h"
/*-----------a divided by b-------------*/
void main() { int a,b; scanf("%d%d",&a,&b); if (b==0)
printf("Divided by zero\n");
功能:首先计算条件表达式的值,然后找 到与其相等的常量表达式的case分支去执行 语句,然后退出switch语句,若没有与条件 表达式相等的常量表达式,则执行default 语句后面的语句n+1。default 语句可省略。 若语句i后不含break,继续执行下一条语句 i+1,不用判断常量表达式。
例如:if (x>10)表示如果x大于10;
(3)表达式可以使用逻辑运算符连接关系表达式, 例如:if (a>b) &&(b==c);还可以是一般的表达式, (4) 表达式甚至是一个常量或一个变量, 例如:if (x)和if (1) 只要x 或1的值为非0,表达式即为 真。
例4.2使用if形式编写程序:输入x,求出并输出 x的绝对值。 #include " stdio.h" /*----------abs(x)-----------*/ void main()
{
int a=10,b=20,x;
x=a;
if (a<b)
x=b; printf("%d\n",x); }
4.4.3 if else 形式——双分支结构
if else 形式的语法是:
if (表达式) 语句1;
else
语句2;
下一条语句;
功能:检测表达式,如果值为非0(真),则 执行语句1,然后执行下一条语句;如果值为0 (假),执行语句2,再执行下一条语句。
4.5 switch语句
switch语句属于多路分支结构。 switch的常用形式:
switch (条件表达式) { case 常量表达式1:语句1;break; case 常量表达式2:语句2;break; case 常量表达式3:语句3;break; … case 常量表达式n:语句n;break; default 语句n+1; [break;] }
}
if (表达式1) if (表达式2) 语句1;
else
语句2
else到底与哪个if结合呢?因为这时有两种可能,
这就产生了所谓的二义性。C语言规定:else与离
它最近的if 结合。
例4.9 输入一个数,若该数为正整数并且是偶数,打 印“是正的偶数”,否则打印“非正整数”。 #include “stdio.h” void main() { int x; printf("Please input one integer:"); scanf("%d",&x); if (x>0) { if (x%2==0) printf("positive and even\n"); } else printf("not positive \n"); }
else if (x<0)
printf("x<0"); else printf("x>0");
例4.8
根据输入的百分制按五分制的成绩输出。 百分制与五分制之间的关系见下表。 百分制 90 ~ 100 80 ~ 89 60 ~ 79 0 ~ 59 五分制 5 4 3 2
#include "stdio.h" void main() { int score; char grade; printf(“please input score:”);/*请输入分数*/ scanf("%d",&score); if (score>89) grade='5'; else if (score>79 ) grade='4'; else if (score>59) grade='3'; else grade='2'; printf("grade is %c",grade); }
else printf("%f",1.0*a/b); }
例4.6:将输入字符的大写字符转换成小写字符输出, 小写字符原样输出。 #include "stdio.h" /*-------------------lowercase--------------------------*/ void main() { int c; c=getchar(); if (c>='A' && c<='Z') putchar(c+32); else putchar( c);
选择结构是一种先对给定条件进行判断, 并根据判断的结果执行相应命令的结构。
(3) 循环结构
循环结构是指多次重复执行同一组命 令的结构。 具有循环结构的程序一般必须指定循 环的终止条件,以便对程序的循环进行有 效的控制,以免进入无限循环(或称死循 环)的状态。
4.2 语句与复合语句
C程序的执行部分由执行语句构成。 执行语句的种类 表达式语句 函数调用语句 控制流语句 复合语句(或称分程序) 空语句
第4章 顺序和选择结构程序设计





4.1 4.2 4.3 4.4 4.5 4.6
结构化程序设计 语句与分程序 顺序结构程序设计 选择结构程序设计 switch语句 程序举例
4.1 结构化程序设计
(1)顺序结构
顺序结构就是一组逐条执行的可执行 语句。按照书写顺序,自上而下的执行。
(2)选择结构(分支结构)
输入一个数,若该数为正整数并且是偶数,打印“是 正的偶数”,否则打印“正整数并且是奇数”。 #include “stdio.h” void main() { int x; printf("Please input one integer:"); scanf("%d",&x); if (x>0) if (x%2==0) printf("positive and even\n"); else printf(" positive and odd \n"); }
4.4
选择结构程序设计
4.4.1 问题的提出 4.4.2 if形式 4.4.3 if else 形式
4.4.4 else if 形式
4.4.5 嵌套的if语句
4.4.1 问题的提出
用数学公式可以这样描述: x x>=0 y= -x x<0 y是x的绝对值,如果x大于等于0,绝对值就 是x自己;否则,绝对值就是取x的负值。这个数学 问题用顺序结构是不能解决的。只有用选择结构才 能解决问题。
4.3
顺序结构程序设计
顺序程序设计的步骤可以归纳为:
(1) 用预处理命令包含文件或进行宏定义(不是 必须的,根据具体情况);
(2) 定义变量(分配内存空间);
(3)为变量赋初值(可以用赋值语句或输入函 数); (4) 计算; (5) 输出结果(用输出函数)。
例4.1 编写程序,输入x和y,交换它们的值,并输出 交换前后的数。 #include “ stdio.h“ void main() { int x,y,temp; printf("Please input to int number:"); scanf("%d%d",&x,&y); printf("\nbefore changed x=%3d y=%3d",x,y); temp=x; x=y; y=temp; printf("\nafter changed x=%3d y=%3d",x,y); }
{ int x;
scanf("%d",&x); if (x<0) x=-x; printf("|x|=%d\n",x);
}
源自文库
例4.3使用if形式编写程序:若a>b将两个数的位 置调换;否则,保持不变。 #include " stdio.h" /*-------------swap a and b--------------*/
修改例4.8,排除不可能的分数。
#include "stdio.h" void main() { int score; char grade; printf("please input score:"); scanf("%d",&score); if (score>=0&&score<=100) { if (score>89) grade='5'; else if (score>79 ) grade='4'; else if (score>59) grade='3'; else grade='2'; printf("grade is %c",grade); } else printf("data error\007\n"); }
void main()
{ int a,b,temp; scanf("%d%d",&a,&b); if (a>b) { temp=a; a=b; b=temp;}
printf("%d,%d\n",a,b);
}
例4.4请判断下面程序的执行结果,并解释该 程序的功能。 #include " stdio.h" void main()
复合语句和分程序结构
复合语句是用 { 和 }把数据说明语句和若干个有序 的执行语句组合在一起而构成。
其一般格式为:
{ [数据说明];
[语句];
}
复合语句在语法上相当于一个简单语句,在程序 中可以作为一个独立语句来看待,因此又称为分程 序。
控制流语句
控制流语句是用于控制程序流程的语句,控 制流语句一般指那些改变了顺序结构的语句。 C语言的控制语句
表达式语句
最简单的可执行语句。只要在表达 式后面加上分号就可以了。 例如: ++i; x=y; 尽量避免写无意义的表达式。
函数调用语句
由函数名、实际参数以及分号构成。
例如:
printf("welcome");
printf是函数名,“welcome”是实际参数。 函数名既可以是C语言提供的库函数名,也可 以是我们自己定义的函数名。
相关文档
最新文档