首页 4.选择结构

4.选择结构

举报
开通vip

4.选择结构null第四章 选择结构程序设计一、 C语句的概念 二、回顾条件判断 三、 if语句的三种形式 四、 switch语句第四章 选择结构程序设计主要内容:null一、 C语句概述 C语句:以“;”作分隔符,编译后产生机器指令. C语句分类 函数调用语句:printf(),max() 表达式语句:表达式加分号构成。空语句: ;程序控制语句(9种):复合语句:用 {…}括起来的一组语句 为什么要用? 分支语句是控制程序执行选择结构的语句 是程序实现逻辑判断的唯一形式如果你在家,我去拜访你; 如果考试不及格,要补考...

4.选择结构
null第四章 选择结构程序设计一、 C语句的概念 二、回顾条件判断 三、 if语句的三种形式 四、 switch语句第四章 选择结构程序设计主要内容:null一、 C语句概述 C语句:以“;”作分隔符,编译后产生机器指令. C语句分类 函数调用语句:printf(),max() 表达式语句:表达式加分号构成。空语句: ;程序控制语句(9种):复合语句:用 {…}括起来的一组语句 为什么要用? 分支语句是控制程序执行选择结构的语句 是程序实现逻辑判断的唯一形式如果你在家,我去拜访你; 如果考试不及格,要补考;自然语言:如果… 那么… 否则… C语言: if语句为什么要用?if语句(条件选择语句)二、回顾条件判断二、回顾条件判断1.关系运算符及其优先次序 C语言提供6种关系运算符: < <= > >= == != 关于优先次序: 前4种关系运算符的优先级别相同,后两种也相同。前4种高于后2种。 2.逻辑运算符及其优先次序2.逻辑运算符及其优先次序C语言提供三种逻辑运算符: (1)&&逻辑与 (2)||逻辑或 (3)!逻辑非逻辑运算的“真值表”逻辑运算的“真值表”例:a=5>3&&2||8<4-!0例:a=5>3&&2||8<4-!0 3.四种运算符优先级比较 结果为1null例:要判别用year表示的某一年是否闰年,闰年的条件应符合下面二者之一: (1) 能被4整除,又能被400整除,如2000年。 (2)能被4整除,但不能被100整除,如2008年; 判断闰年的逻辑表达式: year%400==0||(year%4==0&&year%100!=0) 判断非闰年的逻辑表达式: !(year%400==0||(year%4==0&&year%100!=0)) 三、 if语句三、 if语句 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if语句的3种形式if语句的3种形式C语言提供了3种形式的if语句。 1、if (表达式) 语句 (语句也可以是复合语句) 例如:if (x>y) printf(“%d”, x);#include void main() { float a,b,t; scanf(″%f,%f″,&a,&b); if(a>b) {t=a; a=b; b=t;} printf(″%5.2f,%5.2f\n″,a,b); } #include void main() { float a,b,t; scanf(″%f,%f″,&a,&b); if(a>b) {t=a; a=b; b=t;} printf(″%5.2f,%5.2f\n″,a,b); } 例:输入两个实数,按代数值由小到大的顺序输出这两个数(4-5.c)例:输入三个数a,b,c,要求按由小到大的顺序输出。例:输入三个数a,b,c,要求按由小到大的顺序输出。If a>b 将a和b对换 If a>c 将a和c对换 If b>c 将b和c对换#include void main ( ) { float a,b,c,t; scanf(″%f,%f,%f″,&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf("%5.2f,%5.2f,%5.2f\n",a,b,c); }#include void main ( ) { float a,b,c,t; scanf(″%f,%f,%f″,&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf("%5.2f,%5.2f,%5.2f\n",a,b,c); }例:输入三个数a,b,c,要求按由小到大的顺序输出。null2、if (表达式) 语句1 else 语句2 例如: if (x>y) printf(“%d”, x); else printf(“%d”, y);null#include #include main() { double a,b,c,s,area; scanf("%lf,%lf,%lf",&a,&b,&c); s= (a+b+c) /2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f\narea=%7.2f\n",a,b,c,area); }例 输入三角形边长,求面积输入:9.89,12.65,8.76  输出:a= 9.89, b= 12.65, c= 8.76 area= 43.17null#include #include main() { double a,b,c,s,area; scanf("%lf,%lf,%lf",&a,&b,&c); if(a+b>c&&b+c>a&&c+a>b) { s= (a+b+c) /2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%7.2f\n",area); } else printf(“It is not a trilateral.\n”); }输入:2,3,4  输出:area= 2.90 输入:2,3,6  输出: It is not a trilateral.构成三角形的必要条件是两边之和大于第三边,因此在计算 三角形面积之前应当进行该条件的判断。(4-1.c)null3、使用嵌套的if语句实现多层判断 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 …… else if (表达式m) 语句m else 语句n有的选择结构中又包含一个或多个选择结构, 称为选择结构的嵌套。nullnull例 将百分制成绩S1转换为5分制成绩S2.(4-6.c)#include main() { int s1,s2; printf("Enter s1:"); scanf("%f",&s1); if(s1<60) s2=1; else if(s1<70) s2=2; else if(s1<80) s2=3; else if(s1<90) s2=4; else s2=5; printf(“s2=%d\n”,s2);}运行:Enter s1:86  s2=4 运行:Enter s1:68  s2=2假设把前三个else去掉,会有什么情况出现? 运行:Enter s1:68  s2=4 (错误结果) 假设把四个else都去掉,会有什么情况出现? 运行:Enter s1:68  s2=5 (错误结果) null if语句嵌套: 一般形式:null说明: if ~ else 配对原则:缺省{ }时,else总是和它上面离它最近的未配对的if配对null例: if (a>b) if(bb) { if(b main() { int x,y; printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y) if(x>y) printf("X>Y\n"); else printf("XY Enter integer x,y:12,12 X==Y null如:if(a==b&&x==y) printf(“a=b,x=y”); if(3) printf(“OK”); 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf : a)if后面的表达式类型任意,一般为逻辑表达式或关系表达式。b)条件后面不加分号, 语句之后有分号 c)else不是语句,不能单独使用必须与if配对使用。 d)当if后有多个执行语句时,必须用{ }将多个语句括 起来,构成一个复合语句,而{ }之外不必有分号。 例 考虑下面程序的输出结果: #include void main() { int a,b; if(a>b) {t=a; a=b; b=t;} printf(“%d,%d\n”,a,b); }null#include void main() { int x,y; printf(“enter x:"); scanf("%d",&x); y=x; if(y<0) y= -y; printf(“x=%d,y=%d\n",x,y); }例 求一个数的绝对值 (if的第一种形式)(4-2.c)运行:Enter an integer:-12 x=-12, y=12null#include void main() { int a,b; printf("Enter a:"); scanf("%d",&a); printf("Enter b:"); scanf("%d",&b); if(a==b) printf("a==b\n"); else printf("a!=b\n"); }例 输入两个数并判断两数相等否 (if的第二种形式)(4-3.c)运行:Enter a:12 Enter b:12 a==b 运行:Enter a:12 Enter b:9 a!=b null x+1 x<0 y= x+2 0<=x<10 x+3 10<=x<20 x+4 x>=20 #include “stdio.h” void main() { int x,y; printf(“input x:”); scanf(“%d”,&x); if(x<0) y=x+1; else if(x<10) y=x+2; else if(x<20) y=x+3; else y=x+4; printf(“y=%d\n”,y);}例 分段函数(if的第三种形式)(4-4.c)运行:input x: 21 y=25运行:input x: -2 y=-1(if语句)练习题(if语句)练习题1.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( ) #include “stdio.h” void main() {int x; scanf(“%d”,&x); if(x++>5) printf(“%d”,x); else printf(“%d\n”,x--); } (A) 7和5 (B) 6和3 (C) 7和4 (D) 6和4A(if语句)练习题(if语句)练习题2.以下程序的输出结果是( ) #include “stdio.h” void main() {int a=2,b=-1,c=2; if(a 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 控制转移到下一个case继续执行。“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。 因此,应该在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行,可以用一个 break 语句达到此目的。null可使用break语句实现真正的多路分支: 例如(4-7.c): main() { int i=2; switch(i) {case 1: printf(“I am in case 1\n”); break; case 2: printf(“I am in case 2\n”); break; case 3: printf(“I am in case 3\n”); break; default: printf(“I am in default\n”); } } 结果:I am in case 2 注意:1.default中可以不加break语句。 2.若省略了default且一个case也没有匹配上,则 什么也不做,此时相当于一条空语句。 null例: (4-8.c) #include “stdio.h” void main() {int score; scanf(“%d”,&score); switch(score) { case 1: printf(“Monday!”); break; case 2: printf(“Tuesday!”); break; case 3: printf(“Wednesday!”); break; case 4: printf(“Thursday!”); break; case 5: printf(“Friday!”); break; case 6: printf(“Saturday!”); break; case 7: printf(“Sunday!”); break; default : printf(“data error!”); } }运行结果:score为1时, 输出结果: Monday! null #include void main() { char ch; ch=getchar(); switch(ch) { case ‘A’: printf(“成绩优秀:90-100\n"); break; case ‘B’: printf(“成绩良好:80-90\n"); break; case ‘C’: printf(“成绩中等:70-79\n"); break; case ‘D’: printf(“成绩及格:60-69\n"); break; case ‘E’: printf(“成绩不及格:0-59\n"); break; default : printf(“输入非法字符\n"); break; } }例 输入考试成绩等级,输出百份制分数段(switch语句)练习题(switch语句)练习题1.以下程序的运行结果为—— #include “stdio.h” void main() {int x=1,a=0,b=0; switch(x) {case 0: b++; case 1:a++; case 2: a++;b++;} printf(“a=%d,b=%d\n”,a,b); }a=2,b=1null2.以下程序的运行结果为—— #include “stdio.h” void main() {int x=1,y=0,a=0,b=0; switch(x) {case 1: switch(y) { case 0: a++;break; case 1:b++;break; } case 2: a++;b++;break; } printf(“a=%d,b=%d\n”,a,b); } a=2,b=1null程序综合举例例:写程序,判断某一年是否为闰年。 闰年的条件应符合下面二者之一: (1)能被4整除,但不能被100整除,如2008年; (2)能被4整除,又能被400整除,如2000年。null例:写程序,判断某一年是否为闰年。(4-9(1).c) 闰年的条件应符合下面二者之一: (1)能被4整除,但不能被100整除,如2008年; (2)能被4整除,又能被400整除,如2000年。 #include void main() { int year,leap; printf(“please enter a year:”); scanf(“%d”,&year); if(year%4!=0) leap=0; else if(year%100!=0) leap=1; else if(year%400!=0) leap=0; else leap=1; if(leap) printf(“%d is a leap year.\n”,year); else printf(“%d is not a leap year.\n”,year); }程序综合举例null例:写程序,判断某一年是否为闰年。(4-9(2).c) 闰年的条件应符合下面二者之一: (1)能被4整除,但不能被100整除,如2008年; (2)能被4整除,又能被400整除,如2000年。 #include void main() { int year,leap; printf(“please enter a year:”); scanf(“%d”,&year); if(year%400==0||(year%4==0&&year%100!=0)) leap=1; else leap=0; if(leap) printf(“%d is a leap year.\n”,year); else printf(“%d is not a leap year.\n”,year); }程序综合举例null例:运输公司对用户计算运费。运输距离(以s表示,单位为千米)越远,单位运费(以每吨·千米为单位)越低。 计算 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 如下: s< 250 没有折扣 250≤s<500 2%折扣 500≤s<1000 5%折扣 1000≤s<2000 8%折扣 2000≤s<3000 10%折扣 3000≤s 15%折扣 设每吨千米货物的运费为p(price的缩写),货物重为w(weight的缩写),距离为s,折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为 f=p*w*s*(1-d) 解题思路:§107页程序综合举例null例:运输公司对用户计算运费。 #include void main() { int c,s; double p,w,d,f; printf(“请输入单价、重量和距离:”); scanf(“%lf,%lf,%d”,&p,&w,&s); if(s>=3000) c=12; else c=s/250; switch(c) { case 0: d=0; break; case 1: d=2; break; case 2: case 3: d=5; break; case 4: case 5: case 6: case 7: d=8; break; case 8: case 9: case 10: case 11:d=10; break; case 12:d=15; break; } f=p*w*s*(1-d/100.0); printf(“运费: %10.2f元\n”,f); }程序综合举例(4-10.c)运行结果: 请输入单价、重量和距离:15,145.6,346.9  运费:740550.72元
本文档为【4.选择结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_157684
暂无简介~
格式:ppt
大小:361KB
软件:PowerPoint
页数:0
分类:工学
上传时间:2011-08-06
浏览量:18