《C语言语句类型与基本控制结构.ppt》由会员分享,可在线阅读,更多相关《C语言语句类型与基本控制结构.ppt(60页珍藏版)》请在装配图网上搜索。
1、第5章,C语言语句类型与基本控制结构,5.1 C语言语句类型 5.2 程序的三种基本结构 5.3 if语句 5.4 switch语句 5.5 while语句 5.6 do-while语句 5.7 for语句 5.8 循环嵌套 5.9 break语句和continue语句,5.1 C语言语句类型,C语句分为,空语句 只有一个分号(;)的语句 (什么也不做),表达式语句 语句形式: 表达式; 例如:a*=10; (a+b*5)20; 注意:一个表达式可以成为另一个更复杂的表达式的一部分,而表达式语句则不能。 例如:a=b(表达式),可以写(a=b)0 a=b;(表达式语句),不可以写(a=b;)0。
2、,复合语句 用一对 括起来的语句 z=x+y; t=z/100; printf(“%f”,t); 注意:复合语句中最后一个语句中最后的分号不能忽略不写。,函数调用语句 语句形式: 函数名(实参列表); 例如:scanf(“%d”,控制语句 用于完成一定的控制功能 C语言有9中控制语句: if() else/条件语句,实现选择结构 switch/多分支选择语句 while()/当型循环语句,实现循环结构 do while()/直到型循环语句 for()/循环语句 continue/结束本次循环语句 break/中止执行switch或循环语句 goto/转向语句 return/从函数返回语句,5.。
3、2 程序的三种基本结构,程序的基本结构有三种: (1) 顺序结构:各操作步骤顺序执行,是一种最简单的基本结构。 (2) 选择结构 (3) 循环结构,例 交换两个变量的值 #include void main() int a=3,b=5,c; printf(“交换前:a=%d,b=%d”,a,b); c=a;a=b;b=c; printf(“交换后:a=%d,b=%d”,a,b); ,顺序结构程序设计举例,例 输入三角形的三边 长,求三角形面积。 假设:三个边长a,b,c能构 成三角形。 已知面积公式: area= s=(a+b+c)/2,#include#includevoid main()f。
4、loat a,b,c,s,area;scanf(“%f%f%f”,数学函数库 因为要用到其中的sqrt函数,运行情况:3.4 4.5 5.6a= 3.40, b=4.50, c=5.60area=7.65,5.3 if语句5.3.1 if语句的3种形式,If语句形式 if(表达式) 语句 表达式为条件判断表达式, 结果为逻辑值 例: if(xy) printf(“%d”,x);,if的内嵌语句通常多于一条语句,这时必须使用 把这些语句括起来,形成复合语句,使其在语法上成为一条单语句 例如: if (x0) y=1; z=10; printf(“y=%d,z=%dn”,y,z); 如果不加 ,程。
5、序会有什么变化,例:输入一个学生的两门课程考试成绩,如果两门课程成绩均在90分以上,则显示“优秀”。 分析: 输入两门课程的考试成绩(scanf) 判断两门课程成绩是否均在90分以上 如果“是”,则显示“优秀”,if,需要定义两个变量x1、x2存放输入的成绩 用scanf接受输入的数据存放到x1、x2中 判断是否是x190并且x290 如果是,则printf(“优秀”);,if,#include main() float x1,x2; printf(“请输入两门课程的考试成绩:”); scanf(“%f%f”, ,if-else语句形式 if(表达式) 语句1 else 语句2 例: if (。
6、xy) printf(“%d”,x); else printf(“%d”,y);,开始,输入a,b,输出z,ab,z=a,z=b,结束,#include void main() int a,b,z; scanf(“%d,%d”,a,b); if (ab) z=a; else z=b; printf(“最大数是:%d”,z); ,Yes,No,例:输入一个英文字母,判断是否为大写字母,若是,则转换成小写字母输出,否则不转换直接输出。 分析: 输入一个英文字母存放在变量ch中 判断ch是否为大写字母 如果是则需要将其转换为小写字母 输出字母,char ch; printf(请输入一个英文字母:);。
7、 scanf(%c,例:输入三个整数,将其中最大的整数显示输出。 分析: 输入的三个整数分别放在三个变量a、b、c中。 需要进行两次比较,首先比较a、b谁大,然后用a、b中较大的数再和c比较,因此这里需要有个变量(max)暂时存放a、b中较大的数,并用它来保存最后的最大值。,输入三个数据,放入变量a、b、c中 判断: 如果ab,则max=a,否则max=b; 再判断: 如果maxc,则max=c,int a,b,c,max; printf(输入三个整数:); scanf(%d%d%d,if-else if语句形式: if(表达式1)语句1 else if(表达式2)语句2 else if(表达。
8、式3)语句3 else if(表达式m)语句m else 语句n,例: scanf(“%d”,例: scanf(“%d”,例:求解下面的分段函数并显示结果。 分析: 分段函数中需要用到两个变量x、y 判断x的范围,根据判断结果选择使用哪个公式计算y的值,声明变量x、y 输入x的值 判断:如果x10,则y=2*x; 否则再判断是否x=0并且x=10,如果是,则y=x+1; 否则y=x-10; 输出y的值,int x,y; printf(请输入x的值:); scanf(%d,例 输入某人的身高和体重,根据下面的计算公式判断此人的体重是标准、过胖还是过瘦。 (1)标准体重=(身高-110)公斤; (。
9、2)超过标准体重5公斤为过胖; (3)低于标准体重5公斤为过瘦。,步骤: 将输入的身高存放到变量h中,体重存放到变量w中 计算标准体重,放到变量bw 中(bw=h-110)。 如果w-bw5,则体重过胖,否则进一步进行判断,如果bw-w5,则体重过瘦,否则体重为标准。,#include main() float h,w,bw; printf(请输入某人的身高和体重(公斤):); scanf(%f%f, ,if语句的嵌套 在if语句中又包含一个或多个if语句 称为if语句的嵌套。 形式: If(表达式1) if(表达式2) 语句1 else 语句2 Else if(表达式3) 语句3 else 。
10、语句4,内嵌if,例 输入三个数x,y,z,然后按从大到小输出。 如果xy printf(请输入三个数字:); scanf(%f%f%f,if(x=y ,else printf(%ft,z); if(x=y) printf(%ft%fn,x,y); else printf(%ft%fn,y,x); ,例 输入三个数a,b,c,要求按由大到小的顺序输出。,If ab 将a和b对换 If ac 将a和c对换 If bc 将b和c对换,n,#include void main ( ) float a,b,c,t; scanf(“%f,%f,%f”,匹配规则: Else总是与它上面的,最近的, 同一复。
11、合语句中的,未配对的 if语句配对。,例: If() if() 语句1 else if() 语句2 else 语句3,例: If() if() 语句1 else if() 语句2 else 语句3,当if和else数目不同时,可以加花括号来确定配对关系。,-1 (x0) #include void main() int x,y; scanf(“%d”, ,上例中的程序段有四个,请判断哪个是正确的? 程序1: 程序2: if(x=0) y=-1; if(x0) y=1; else else y=0; if(x= =0) y=0; else y=-1; else y=1; 程序3: 程序4: y=。
12、-1; y=0; if(x!=0) if(x=0) if(x0) y=1; if(x0) y=1; else y=0; else y=-1;,正 确,正 确,条件运算符和条件表达式,格式: 表达式?表达式表达式 功能: 判断表达式1的值,如果成立就执行表 达式2,否则就执行表达式3,例: if () max=; else max; 当ab时将a的值赋给max,当ab时将b的值赋给max, 可以看到无论ab是否满足,都是向同一个变量赋值。 可以用下面的条件运算符来处理: ()?;,输入一个整数c,判断c是否大于10,如果大于10,则输出“c10”,否则,输出“c10) printf(“c10”)。
13、; else printf(“c10?”c10”:”c=10”);,说明: (1).条件运算符优先级高于赋值运算符 ,低于关系 运算符、逻辑运算符和算术运算符。 max=ab?a:b+1 相当于: max=(ab)?a:(b+1) 不等于: max=(ab?a:b)+1,说明: (2).条件运算符的结合方向为“自右至左”。 (3).“表达式2”和“表达式3”不仅可以是数值表达式, 还可以是赋值表达式或函数表达式。 (4).条件表达式中,表达式的类型可以与表达式 和表达式的类型不同。,例 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 #。
14、include void main ( ) char ch; scanf(%c, ,5.4 switch语句,switch (表达式) case常量表达式:语句序列 case常量表达式:语句序列 case常量表达式i:语句序列i case常量表达式:语句序列 default :语句序列 功能:当switch后的表达式的值与某case分支中的 常量表达式i相等时,执行该case分支后语句序列直 到退出switch结构,否则执行default后的语句序列。,例: 要求按照考试成绩的等级输出百分制分数段,用 switch语句实现: switch(grade) case printf(); break。
15、;/表示退出switch结构 case printf (); break; case printf (); break; case printf (); break; default printf ( ); ,说明: (1)switch和case语句中的表达式需要是整型、字符类型或者枚举类型。 (2) 每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。 (3) 执行完一个case后面的语句后,流程控制转移到下一个case继续执行。不再判断表达式与“case常量表达式”是否相等。为避免执行后面case分支中的语句,应该在一个cas。
16、e分支后, 用一个break语句来终止switch语句的执行。,switch(grade) case printf(); case printf (); case printf (); case printf (); default printf ( ); ,(4) 良好的程序逻辑结构应该有default分支,但也可以没有这个分支,如果没有default,那么在找不到与表达式相等的常量表达式时,不执行任何分支。default语句的位置没有要求。 (5) 多个case可以共用一组执行语句。,int i=10; switch(i) default: printf(“defaultn”); case。
17、 1: printf(“1n”); break; case 2: printf(“2n”); break; ,最终显示: default 1,switch (day) case 1: case 2: case 3: case 4: case 5:printf( “工作日 n); break; case 6: case 7:printf( “休息日 n); break; default:printf( “输入不在(17)中 n); break; ,例 编程实现两个整数的算术运算。 分析: 算术运算的基本形式为: 根据操作符的不同会有不同的计算结果 因此需要判断的是操作符的种类,根据这个判断来选择不同的计算公式 操作符的可能种类有:+、-、*、/、%,是有限的几种情况,可以在进行选择判断时使用switch语句,变量声明: 操作符:char op;操作数:int x,y; 输入算术运算: scanf(%d%c%d, ,#include main() int x,y; char op; scanf(%d%c%d,。