C语言程序设计案例教程课件-4第四章-选择结构程序设计

PPT
  • 阅读 41 次
  • 下载 0 次
  • 页数 49 页
  • 大小 2.905 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
C语言程序设计案例教程课件-4第四章-选择结构程序设计
可在后台配置第一页与第二页中间广告代码
C语言程序设计案例教程课件-4第四章-选择结构程序设计
可在后台配置第二页与第三页中间广告代码
C语言程序设计案例教程课件-4第四章-选择结构程序设计
可在后台配置第三页与第四页中间广告代码
C语言程序设计案例教程课件-4第四章-选择结构程序设计
C语言程序设计案例教程课件-4第四章-选择结构程序设计
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 49
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】C语言程序设计案例教程课件-4第四章-选择结构程序设计.ppt,共(49)页,2.905 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44483.html

以下为本文档部分文字说明:

C语言程序设计1、结构化程序设计的有哪几种基本结构?2、算法的描述方法都有哪几种?3、C语句的分类有哪些?课程回顾4.选择结构程序设计4.1有节约要求的水费问题4.2if语句4.3switch语句学习目标熟练掌握if语句的各种用法掌握switch语句的用法4.选择结构程序设

计能够编写简单的选择结构程序选择结构单分支双分支if(表达式)语句多分支if(表达式)语句1else语句2if(表达式1)语句1elseif(表达式2)语句2……else语句nif语句的嵌套switch语句4.选择结构程序设计4.1有节约要求的水费问题任

务描述为提倡节约用水,按照每月每户每人3吨水进行定量,标准以内的用水量水费为每吨1.51元,超额的部分2倍付费。需要我们编写程序来解决每户每个月要交的水费问题。Ø问题分析:1、每户的人口数2、每个月所用的水量3、判断是否超出了定量标准4

、进行水费的计算。数据需求1、程序常量DOSAGE3CRITERION1.512、输入数据intperson/*存放人口数*/floatprevious,behind/*存放上个月水表读数,这个月水表读数*/3

、输出数据intration/*每户标准用水量*/floatwater,charge/*用水总量,总水费*/4.1有节约要求的水费问题算法1.获取数据:读入水表上个月和这个月的读数,读入人口数。2.计算用水量:water=behind-

previous。3.计算用水标准量:ration=person*DOSAGE4.if没有超出标准用水量charge=water*CRITERIONelsecharge=ration*CRITERION+(water-ration)*2*CRITE

RION5.显示水费总数。实践4.1有节约要求的水费问题流程图4.1有节约要求的水费问题开始开始输入上个月和这个月水表的读数,人口数water<=ration计算用水量water=behind-previous计算用水标准量ration=person*DOSAGEcharge=water*CRI

TERIONcharge=ration*CRITERION+2*(water-ration)*CRITERION输出水费非零零功能实现#include<stdio.h>#defineDOSAGE3#defineCRITERION1.51main(){intperson,r

ation;floatprevious,behind,water,charge;printf("请输入人口数、上月水表读数、本月水表读数:");scanf("%d%f%f",&person,&previous,&behind);ration=person*DO

SAGE;water=behind-previous;if(water<=ration)/*条件判断,分支选择*/charge=water*CRITERION;elsecharge=ration*CRITERION+(water-ration)*2*CRITERIO

N;printf("\n用户水费是:%.2f\n",charge);}4.1有节约要求的水费问题单分支if语句该语句的一般形式如下:if(表达式)语句;功能:如果表达式的值为真,则执行其后面的语句,否则不执行该语句。4.2.1if语句12#include<st

dio.h>intmain(){floatscore;scanf("%f",&score);if(score>=60)printf("通过考试!");return0;}89通过考试!思考?从键盘输入一个月考成绩,如果输入成绩大于等于60,在屏幕上输出通过考试!

4.2.1if语句思考?在键盘上输入两个数,输出其中较大的那个数?#include<stdio.h>intmain(){floata,b,max;scanf("%f,%f",&a,&b);max=a;if(b>max)max=b;printf("maxis%f\n"

,max);return0;}双分支if语句这是if语句比较完整的形式,包含一条if子句和一条else子句。该语句的一般形式如下:if(表达式)语句1;else语句2;功能:如果表达式的值为真,则执行语句1,否则执行语句2。4.2.1if语句#inc

lude<stdio.h>intmain(){floatscore;scanf("%f",&score);if(score>=60)printf("通过考试!");elseprintf("没有通过考试!

");return0;}思考?从键盘输入一个月考成绩,如果输入成绩大于等于60,在屏幕上输出通过考试!否则输出没有通过考试!voidmain(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b

;b=t;}printf("%5.2f,%5.2f",a,b);}思考?利用分双支结构,在键盘上输入两个数,按数据大小顺序输出?思考?输入3个数a,b,c,要求按由小到大的顺序输出?#include<stdio.h>vo

idmain(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;a=t;}/*实现a和b的互换*/if(a>c){t=a;a=c;c=t;}

/*实现a和c的互换*/if(b>c){t=b;b=c;c=t;}/*实现b和c的互换*/printf("%5.2f,%5.2f,%5.2f",a,b,c);}#include<stdio.h>intmain(){floata,b,c,area,s;scanf(“%

f,%f,%f”,&a,&b,&c);if((a+b>c)&&(a+c>b)&&(b+c>a)){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%7.2f\n”,area);}

elseprintf(“Notatriangle!\n”);reutrn0;}【例】输入三角形的三边,求三角形的面积。输入a,b,c是三角形吗?YNs(a+b+c)/2areasqrt(s*(s-a)*(s-b)*(s-c))输出a

rea输出“非三角形!”3,4,5area=6.003,4,8Notatriangle!4.2.1if语句多分支if语句该语句的一般形式如下:if(表达式1)语句1elseif(表达式2)语句2...elseif(表达式n)语句nelse语句n+1功能:依次判断表达式的值,当出现某个表达

式的值为真时,则执行其对应的语句,然后跳转到整个if语句之后继续执行程序;如果所有的表达式均为假,则执行else后的语句n+1。4.2.1if语句多分支if语句4.2.1if语句#include<stdio.h>voidmain(){floatnumber

,cost,result;printf(“请输入消费:");scanf("%f",&number);4.2.1if语句商场打折:花费超过500元打85折,花费超过300元打9折,花费超过100元,打99

.25折,花费超过50元打95,请输入商场消费,输出实际消费。if(number>500)c7st=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;e

lsecost=0;result=number-number*cost;printf(“实际消费:%f\n”,result);}#include<stdio.h>intmain(){floatscore;chargrade;printf("Pleaseinputthescore:")

;scanf("%f",&score);if(score>=90&&score<=100)grade='A';elseif(score>=80&&score<90)grade='B';4.2.1if语句输入一个百分制

成绩,要求输出对应的成绩等级。elseif(score>=70&&score<80)grade='C';elseif(score>=60&&score<70)grade='D';elseif(score>=0&&score<60)grade='E';else{printf("yourscore

iswrong.\n");grade='0';}printf("scoreis%.2f,gradeis%c\n“,score,grade);return0;}intmain(){intn,m;printf(“pleaseinputn:\n”);scanf(“%d”,&n);if(n%3==

0&&n%7==0)m=2;elseif(n%3==0||n%7==0)m=1;elsem=0;printf(“theresultis%d”,m);return0;}4.2.1if语句输入一个整数,若该数能够被3和7整

除,则输出2;若只能被3和7中的一个整除,则输出1;若不能被3和7中的任意一个整除,则输出0;嵌套的if语句当if语句的操作语句中包含其他if语句时,称为嵌套的if语句。该语句的基本形式如下:4.2.2if语句嵌套注意if与else的配对原则:else总是与它上面的最近的未配

对的if配对。举例已知a=3b=4c=5d=0,d=?if(a>b)d=a;elseif(c>b)d=c;elsed=b;if(a>b)if(c>b)d=c;elsed=b;if(a>b){if(c>b)d=c;}elsed=b;if(a>b)if(c>b)d=c;elsed=b;elsed

=a;d=5d=3d=0d=44.2.2if语句嵌套intmain(){inta,b,c,max;scanf("%d,%d,%d",&a,&b,&c);if(a>b)if(a>c)max=a;elsem

ax=c;elseif(b>c)max=b;elsemax=c;printf("max=%d\n",max);return0;}编写C程序,实现从键盘任意接收3个整数,输出最大数?4.2.2if语句嵌套实例分析编写程序,输入一个x的值,按以下函数计算并输出y的值。

-1(x<0)y=0(x=0)1(x>0)4.2.2if语句嵌套实例分析4.2.2if语句嵌套输入xx<0y=-1y=1y=0x=0输入xx>=0y=1y=-1y=0x>0输出x,y的值输出x,y的值非零非零非零非零零零零零实例分析

#include<stdio.h>voidmain(){intx,y;scanf("%d",&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf("x=%d,y=%d\n",x,y);}4.2.2if语句嵌套实例分析编写程序,输

入一个x的值,按以下函数计算并输出y的值。x(x<1)y=2x-1(1<=x<10)3x-1(x>=10)4.2.2if语句嵌套实例分析#include<stdio.h>intmain(){intx,y;prin

tf(“pleaseinputthex:\n”);scanf(“%d”,&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elseif(x>=10)y=3*x-1;printf(“yis%d”,y);re

turn0;}4.2.2if语句嵌套32课堂小结1.单分支(if结构)2.双分支结构(if…else)结构格式3.?:条件表达式4.if与else的配对原则:else总是与它上面的最近的未配对的if配对。选择结构单分支双分支if(表达式)语句多分支i

f(表达式)语句1else语句2if(表达式1)语句1elseif(表达式2)语句2……else语句nif语句的嵌套switch语句课堂小结课程回顾1、if与else的配对原则?2、写出程序运行结果。#include<stdio.h>intmain(){inta=100,x=10,y=2

0,ok1=5,ok2=0;if(x<y)if(y!=10)if(!ok1)a=1;elseif(ok2)a=10;a=-1;printf(“%d\n”,a);return0;}4.选择结构程序设计4.

1有节约要求的水费问题4.2if语句4.3switch语句4.3switch语句if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。所以C语言提供了一种switch语句专门处理多分支的情形,使程序变得简洁易懂。switch语句的一般形式如下

:switch(表达式){case常量表达式1:语句块1case常量表达式2:语句块2…case常量表达式n:语句块ndefault:语句块n+1}功能:首先计算switch后面括号内的“表达式”,然后依次与各个case后面的“常量表达式”的值进行比较,当“表达式”的值与某一个case后面的“常量

表达式”的值相等时,就选择这个标号作为入口,执行该case子句后面的语句块,并继续执行其后的所有case子句直到程序结束。如果“表达式”的值与所有case后面的“常量表达式”的值都不相等,则执行defau

lt后面的语句。intmain(){inta;scanf("%d",&a);switch(a){case1:printf("Monday\n");break;case2:printf("Tuesday\n");break;case3:printf("Wednesday\n");break;

case4:printf("Thursday\n");break;case5:printf("firday\n");break;case6:printf("Saturaday\n");break;ca

se7:printf("Sunday\n");break;default:printf("error\n");}return0;}输入1~7的整数,要求输出对应的星期的英文单词。4.3switch语句在使用

switch结构时应注意以下几点:•switch语句中的“表达式”和case后面的“常量表达式”的结果值的类型应该一致。•每一个case的常量表达式的值必须互不相同,否则出现矛盾现象。•各个case的出现次序不影响执行

结果。•执行完一个case后面的语句后,流程控制转移下一个case继续执行,除非有break语句跳出switch。•default语句可有可无。另外,default后面可以不加break语句。4.3sw

itch语句实例分析输入一个百分制成绩,要求输出对应的成绩等级。#include<stdio.h>intmain(){floatscore;inttemp;chargrade;printf("Pleaseinput:");

scanf("%f",&score);temp=(int)score/10;switch(temp){case10:case9:grade='A';break;case8:grade='B';break;case

7:grade='C';break;case6:grade='D';break;default:grade='E';}printf("scoreis%.2f,gradeis%c\n“,score,grade);return0;}4.3switch语句#include<st

dio.h>intmain(){intyear,month,day;intleap;printf("pleaseinputtheyearnumber:");scanf("%d",&year);printf

("pleaseinputthemonthnumber:");scanf("%d",&month);if((year%400==0)||(year%4==0&&year%100!=0))leap=1;elseleap=0;编写一C

程序,实现输入年份和月份,打印输出该年该月有多少天。4.3switch语句switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case4:case6:case9:case11:day=30;br

eak;case2:if(leap==0)day=28;elseday=29;break;default:day=1;}if(day==1)printf("Invalidmonthinput!\n");elseprintf("%d.%dhas%ddays.\n",year,month,day);

return0;}小型案例任务描述运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:s<250km没有折扣250≤s<5002%折扣500≤s<10005%折扣1000≤s<20008%折扣2000≤s<300010%折扣3000≤s15%折扣分析设每公

里每吨货物的基本运费为p(price的缩写),货物重为w(weight的缩写),距离为s(space的缩写),折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为:f=p*

w*s*(1-d)小型案例1614折12扣d10(%)864200250500750100012501500175020002250250027503000s0123456789101112c算法分析此问题,折扣的变化是有规律的:折扣的“变化点”都是

250的倍数(250,500,1000,2000,3000)。可以在横轴上加一种坐标c,c的值为s/250。c代表250的倍数。Ø当c<1时,表示s<250,无折扣;Ø1≤c<2时,表示250≤s<500,折扣d=2%;Ø2≤c<4时,d=5%;4≤c<8时,d

=8%;Ø8≤c<12时,d=10%;c≥12时,d=15%。任务小型案例任务小型案例项目实现main(){intc,s;floatp,w,d,f;printf("\n请输入基本运费,货物重量,运输距离:");scanf

("%f%f%d",&p,&w,&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=2;break;case2:case3:d=5

;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;}f=p*w*s*(1-d/100.0);printf("货物

运费为:%15.4f\n",f);}46课堂小结1.单分支(if结构)2.双分支结构(if…else)结构格式3.?:条件表达式4.if与else的配对原则:else总是与它上面的最近的未配对的if配对。5.switch分支结构:switch语句使用时应注意的几点

;break在switch中的作用;选择结构单分支双分支if(表达式)语句多分支if(表达式)语句1else语句2if(表达式1)语句1elseif(表达式2)语句2……else语句nif语句的嵌套switch语句课

堂小结作业1、教材第四章课后习题。2、作业集第四章编程题。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?