当前位置:
文档之家› 第四章 控制流_顺序结构 选择结构
第四章 控制流_顺序结构 选择结构
修改例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"); }
例如我们要解决这样一个问题:输入一个整
数,根据输入值,输出数的范围属于大于0、小 于0还是等于0。 x的范围实际上是三种情况,我们先用if else 解决这个问题:
if (x==0) printf (" x=0"); else { if (x<0)
printf(" x<0");
else
printf("x>0");
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的负值。这个数学 问题用顺序结构是不能解决的。只有用选择结构才 能解决问题。
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 ;
{ 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--------------*/
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); }
{
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,再执行下一条语句。
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);
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语言规定:e.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"); }
分支语句(if 和 switch)
循环语句(while,do-while,for)
转向语句(break,goto,continue,return)
熟练掌握控制语句是学会程序设计的基础。
空语句
C语言中有一个很特殊的语句,即空语句。空 语句,顾名思义,就是什么也不存在的语句,只有 一个分号: ;
尽管空语句不会有任何命令执行,但仍然是一 个有用的语句。常用于循环语句中,使循环体为空。 例如:for (sum=0,i=0;i<=9;i++;sum=sum+i);
表达式语句
最简单的可执行语句。只要在表达 式后面加上分号就可以了。 例如: ++i; x=y; 尽量避免写无意义的表达式。
函数调用语句
由函数名、实际参数以及分号构成。
例如:
printf("welcome");
printf是函数名,“welcome”是实际参数。 函数名既可以是C语言提供的库函数名,也可 以是我们自己定义的函数名。
例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");
选择结构是一种先对给定条件进行判断, 并根据判断的结果执行相应命令的结构。
(3) 循环结构
循环结构是指多次重复执行同一组命 令的结构。 具有循环结构的程序一般必须指定循 环的终止条件,以便对程序的循环进行有 效的控制,以免进入无限循环(或称死循 环)的状态。
4.2 语句与复合语句
C程序的执行部分由执行语句构成。 执行语句的种类 表达式语句 函数调用语句 控制流语句 复合语句(或称分程序) 空语句
功能:首先计算条件表达式的值,然后找 到与其相等的常量表达式的case分支去执行 语句,然后退出switch语句,若没有与条件 表达式相等的常量表达式,则执行default 语句后面的语句n+1。default 语句可省略。 若语句i后不含break,继续执行下一条语句 i+1,不用判断常量表达式。
}
例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语句的嵌套
复合语句和分程序结构
复合语句是用 { 和 }把数据说明语句和若干个有序 的执行语句组合在一起而构成。
其一般格式为:
{ [数据说明];
[语句];
}
复合语句在语法上相当于一个简单语句,在程序 中可以作为一个独立语句来看待,因此又称为分程 序。
控制流语句
控制流语句是用于控制程序流程的语句,控 制流语句一般指那些改变了顺序结构的语句。 C语言的控制语句
例如:if (x>10)表示如果x大于10;