C语言程序设计-2设计.ppt

上传人:tia****nde 文档编号:12805521 上传时间:2020-05-25 格式:PPT 页数:78 大小:908.50KB
返回 下载 相关 举报
C语言程序设计-2设计.ppt_第1页
第1页 / 共78页
C语言程序设计-2设计.ppt_第2页
第2页 / 共78页
C语言程序设计-2设计.ppt_第3页
第3页 / 共78页
点击查看更多>>
资源描述
,C语言程序设计-2设计,4.分支程序设计计算行李托运费5.复杂分支程序设计字符菜单6.循环程序设计小学加减法练习,C语言程序设计,项目四分支程序设计计算行李托运费,学习目标,了解程序结构。了解关系运算及关系表达式。了解逻辑运算及逻辑表达式。掌握使用if语句实现单分支和双分支的方法,乘坐飞机旅行,行李托运费用的计算比较复杂。如果完全依靠人工计算,会花费许多时间,而且很容易出现计算错误。如果能够使用计算机来自动计算行李费用,就可以大大提高工作效率,进而给人们带来很多方便。本项目将编写一个能够根据旅客所持机票的种类和行李重量进行判断和计算的程序,只要输入机票种类、机票等级和行李的重量,就可以知道是否需要支付费用,费用是多少。,项目四分支程序设计计算行李托运费,项目四分支程序设计计算行李托运费,任务一了解程序的基本结构任务二了解if语句任务三了解C语言的关系运算和逻辑运算任务四进行程序总体设计任务五选择机票类型和机票等级,输入行李重量任务六计算行李托运费用,输出计算结果任务七设置系统密码,任务一了解程序的基本结构,程序按照语句出现的先后顺序来执行。出现在前面的语句先执行,出现在后面的语句后执行。称为“顺序结构”的程序。根据条件进行选择,决定下一步到底要执行什么操作的程序结构就称为“选择结构”,也叫做“分支结构”。程序的某些部分需要反复执行,称为“循环结构”,被反复执行的部分就叫做“循环体”。,程序的基本结构,任务一了解程序的基本结构,分支结构根据分支的多少,可以分为“单分支结构”、“双分支结构”和“多分支结构”单分支结构是指条件成立时执行某操作,条件不成立则什么也不执行,直接执行后面的操作。双分支结构是指条件成立时执行一种操作,条件不成立则执行另外一种操作,执行完毕后再执行后面的操作。多分支结构是指根据条件的不同,选择多种不同的操作。,任务二了解if语句,在C语言中可以使用if语句来实现分支。if语句又叫做条件语句,可以通过判断条件是否成立来决定程序的流程(在可能执行的流程中选择执行其中的一个)。,任务二了解if语句,一、if语句的格式if语句的一般格式if(表达式)语句组else语句组或:if(表达式)语句组else语句组,任务二了解if语句,二、使用if语句实现分支(1)实现单分支省略else子句格式如下:if(表达式)语句执行过程:当条件表达式的值成立,即判定为逻辑“真”时,则执行语句;否则直接转向执行下一条语句。,任务二了解if语句,二、使用if语句实现分支(2)实现双分支指定else子句格式如下。if(表达式)语句else语句执行过程:当条件表达式的值不等于(即判定为逻辑“真”)时,则执行语句,然后转向下一条语句;否则,执行语句。,任务二了解if语句,二、使用if语句实现分支(3)实现多分支if语句嵌套格式如下:if(表达式)语句elseif(表达式)语句elseif(表达式)语句elseif(表达式)语句else语句,如果一条语句中又完整地包含着另一条语句,则称为语句的“嵌套”。,任务三了解C语言的关系运算和逻辑运算,一、了解关系运算关系运算实际上就是比较运算,即将两个数据进行比较,判定两个数据是否符合给定的关系。关系运算符,任务三了解C语言的关系运算和逻辑运算,关系运算符的优先级在关系运算符中,“”、“=”“c-d,(a=3)=b,(ab)=(bc)等均为合法的关系表达式。关系表达式可以求值,它的值是逻辑值,即为“真”(true)或“假”(false)。若表达式为真(即true)则返回1;否则,表达式为假(即false),返回0。,任务三了解C语言的关系运算和逻辑运算,任务三了解C语言的关系运算和逻辑运算,二、了解逻辑运算逻辑运算符C语言的逻辑运算符有3种/*tickettype*/intt_class;/*ticketclass*/floatweight;/*baggageweight*/floatcost;clrscr();printf(nn*Welcometothebaggagecheck-costcomputingsystem!*n);printf(nPleasechooseyourtickettype:n);printf(t1.Adultn);printf(t2.Childn);printf(t3.Babyn);printf(Yourchoiceis(input1,2or3,thenpressEnter):);scanf(%d,任务六计算行李托运费用,输出计算结果,计算行李托运费第1种情况:旅客如果持成人票坐头等舱,而且他携带的行李没有超过40公斤,则他应支付的费用为0,也就是说“成人票”(t_type=1)、“坐头等舱”(t_class=1)、“行李不超过40公斤”(weight=0/*无效成绩*/,任务二了解switch-case语句,switch语句的语法格式:switch(整型表达式)case常量表达式1:语句序列1;case常量表达式2:语句序列2;case常量表达式n:语句序列n;default:语句序列n+1;,例子switch(s)case1:a+;b-;break;case2:a+=3;break;case3:a+=5;break;default:a*=2;,注意,(1)switch后面括号“()”中的表达式必须是整型表达式,即它的值必须是int,char这样的整数类型。并且switch后面的括号“()”不能省略,也不能使用空表达式。(2)case语句后面的常量表达式也必须是整数类型,而且不能是变量(3)case语句起着分支判断作用,所以case后面的值必须互不相同。(4)“case表达式:”后面可以是多条语句,不用加大括号“”。但是switch语句的整体要用大括号“”括起来。,注意,(5)当switch括号中表达式的值与任意一个case表达式的值都不匹配时,就执行default语句。switch语句中也可以没有default语句。(6)当根据switch表达式的值选择匹配的分支后,将顺序执行分支的语句序列,直到执行到break语句时结束,并退出switch语句。所以如果没有break语句,就会继续执行下一个分支的操作。(7)各个case语句和default语句的出现顺序可以任意。写在最后面的分支语句(包括default语句)可以不加break语句。(8)选择一条分支语句(包括default语句)并执行结束后(遇到break语句或者遇到switch的右大括号“”),switch语句也就结束了。,例子:将分数score转换为等级将score/10作为switch分支表达式,switch(int)(score/10)case10:if(score!=100)printf(Invalid!n);/*无效成绩*/break;break;case9:printf(Excellentn);/*优秀*/break;case8:printf(Goodn);/*良好*/break;case7:printf(Satisfactoryn);/*中等*/break;case6:printf(Passn);/*及格*/break;case5:case4:case3:case2:case1:case0:printf(“Failn”);break;/*不及格*/default:printf(Invalid!n);/*无效成绩*/,任务三菜单的显示,菜单的显示非常简单,直接输出提示字符串即可。printf(=Menu=n);printf(=n);printf(1:CalculatetheAbsoluteValue.n);/*计算绝对值*/printf(2:Odd-EvenJudgement.n);/*判断奇偶*/printf(“3:UpperCasetoLowerCase.n”);/*大写字母转小写*/printf(4:Quit!n);/*退出*/printf(=n);printf(Choosethemenuitemandinputitsnumber!n);,任务四接受用户的选择,这种字符菜单当然不能象Windows应用程序那样用鼠标操作,只能通过键盘输入选择。而最简单的输入方式,是用户通过输入对应菜单项的编号选择某一项。代码如下所示。intchoice;scanf(%d,任务五根据用户选择执行不同操作,使用switch语句来实现会使结构更明确。switch(choice)case1:计算绝对值;break;case2:判断奇偶;break;case3:case4:,计算绝对值根据绝对值的特点,正数和0的绝对值是其本身,负数绝对值是它的相反数。所以,对待两种情况应该分别处理。printf(Inputainteger:n);scanf(“%d”,/*非负数的绝对值是其本身*/,整判断奇偶数n的奇偶性通过表达式“n%2”的值来判断。如果模运算结果为0,说明n为偶数,否则就是奇数。printf(Inputainteger:n);scanf(%d,/*奇数*/,大写字母转小写字母小写字母和对应大写字母的ASCII码的差值是固定的。固定差值可以用表达式“a-A”表示。所以大写字母ch对应的小写字母为“ch+固定差值”,也就是“ch+a-A”。fflush(stdin);printf(InputacharinUppercase:n);scanf(%c,任务六菜单的再次显示,使用第3种结构:循环结构while语句的一般形式:while(条件表达式)语句序列;while语句的执行过程如下:首先计算条件表达式的值,如果条件成立(为“真”),则执行大括号里面的语句,然后再一次判断条件是否成立。一旦条件不成立,就退出循环,while语句执行结束。,只要用户没有选择第4个菜单项“Quit”,那么就一直循环显示菜单。这里设置结束标志“intstop”,用它的值标识用户是否选择了退出。stop为0表示用户没有选择退出,为1表示选择退出。将while循环的条件设为“stop=0”,并且case4的操作设为“stop=1”。这样,一旦用户选择退出,那么当再次进行条件判断时,由于不再符合循环要求,程序就会退出while循环,程序结束。,while(不退出)显示菜单;/*根据用户的选择执行相应操作*/switch(选择)case1:case2:,#includemain()intchoice,stop=0;/*choice存储选择的菜单编号,stop表示是否终止*/intn;charch;while(stop=0)/*主要用户不选择菜单4,就一直循环*/choice=0;/*初始化为0*/*显示菜单*/printf(=Menu=n);printf(=n);printf(1:CalculatetheAbsoluteValue.n);printf(2:Odd-EvenJudgement.n);printf(3:UpperCasetoLowerCase.n);printf(4:Quit!n);printf(=n);printf(“Choosethemenuitemandinputitsnumber!n”);,scanf(%d,case3:/*大写字母转化成小写字母*/fflush(stdin);printf(InputacharinUppercase:n);scanf(%c,/*将结束标识置为1*/,C语言程序设计,项目六循环程序设计小学加减法练习,学习目标,了解程序的循环结构。熟悉随机数的意义及随机函数。熟悉for循环。熟悉while循环。了解continue语句。了解好程序的标准。,本项目编写一个供小学生进行十以内的加减法练习的程序。可以让用户来选择进行加法练习或减法练习根据用户的选择随机产生10道加法或减法算术练习题由用户计算并输入答案,根据用户的计算结果,统计并显示用户答对的题目个数。可以提示用户是否继续练习。如果用户选择退出,则结束程序运行。,项目六循环程序设计小学加减法练习,任务一显示提示信息,由用户选择执行不同操作任务二出加法题任务三出减法题任务四出10道题任务五对用户计算结果进行判断,给出成绩任务六实现“再来一次”,项目六循环程序设计小学加减法练习,任务一显示提示信息,由用户选择执行不同操作,、程序的总体设计首先分析本程序的功能和基本结构。,程序运行后,进入开始界面,显示欢迎信息,提示用户进行选择。如果用户选择“1”,则依次出现10道加法练习题,请用户输入计算结果。如果用户选择“2”,则依次出现10道减法练习题,请用户输入计算结果。如果用户选择“3”,则退出程序。10道题都回答完毕后,统计正确题目个数,并输出结果。提示用户是否需要继续练习,用户回答“是”(Y),则返回到第一步,用户回答“否”(N),则结束程序运行。,任务一显示提示信息,由用户选择执行不同操作,显示提示信息,printf(*nn);printf(Welcometothearithmeticexercisesystem!nn);printf(tt1.Additionexercisen);printf(tt2.Subtractionexercisen);printf(tt3.Exitnn);printf(*nn);printf(Pleaseinputyourchoice(1,2or3):);、,任务一显示提示信息,由用户选择执行不同操作,根据用户选择,执行不同操作,获得用户输入用变量option来保存用户输入的数值。intoption;scanf(%d,执行不同的操作根据变量option的值来确定执行什么操作。,使用if语句完成设计if(option=1)/*生成10道加法算术题,并统计答案正确的题的个数,输出结果*/elseif(option=2)/*生成10道减法算术题,并统计答案正确的题的个数,输出结果*/elseif(option=3)printf(nGoodbey!);/*打印“再见!”*/exit(0);/*正常结束程序*/elseprintf(Yourinputiserror!n);,任务一显示提示信息,由用户选择执行不同操作,根据用户选择,执行不同操作,使用switch语句完成设计switch(option)case1:/*生成10道加法算术题*/break;case2:/*生成10道减法算术题*/break;case3:printf(nGoodbey!);exit(0);break;caseelseprintf(Yourinputiserror!n);,任务二出加法题,程序每次运行时都能出现不同的题目,需要用到随机函数“rand()”。随机函数“rand()”功能是产生一个“0RAND_MAX”随机整数。一般地,如果想产生X和Y之间的数,可以使用下面的公式。k=rand()%(Y-X+1)+X;,任务二出加法题,程序每次运行时都能出现不同的题目,需要用到随机函数“rand()”。随机函数“rand()”功能是产生一个“0RAND_MAX”随机整数。一般地,如果想产生X和Y之间的数,可以使用下面的公式。k=rand()%(Y-X+1)+X;一般要使用函数“srand”设定一个种子,通常利用系统的时间作为随机数种子。,#include#include#includemain()inta,b;srand(time(0);a=rand()%10;b=rand()%10;printf(t%d+%d=n,a,b);,任务二出加法题,设定系统当前时间为随机数生成器种子并生成两个随机数,产生减法题和产生加法题的方法相似,分别产生被减数和减数。如果被减数小于减数,需重新产生被减数和减数再次判断被减数是否大于减数,如果是,就不断反复执行上述过程,直到被减数大于或等于减数,才输出减法算术题。产生被减数a和产生减数b这两步操作可能会被执行多次。当程序中出现了需要反复执行的部分,这样的程序就是“循环结构”程序。,任务三出减法题,了解循环结构循环结构是组成程序的三种基本结构之一。在C语言中,循环结构可以分为下面两种情况。第1种情况:先进行条件判断,如果条件成立就反复执行循环体语句,条件不成立,则退出循环。第2种情况:先执行一遍循环体语句,然后进行条件判断,如果条件成立就反复执行语句,条件不成立,则退出循环,,任务三出减法题,a)先判断,后执行,(b)先执行,后判断,循环结构,任务三出减法题,C语言中,使用while语句完成第1种“先判断,后执行”的循环,使用do-while语句完成第2种“先执行,后判断”的循环。,While语句while语句的一般格式:while(表达式)循环体语句,“while(表达式)”中的表达式就是循环条件,它与“if(表达式)”中的表达式一样,一般为逻辑表达式或关系表达式,也允许是其他类型的数据,如整型实型字符型等。循环体语句可以是一条语句,也可以是多条语句。当循环体语句仅由一条语句构成时,可以不使用复合语句形式(省略大括号)。while语句的执行过程首先求解表达式的值,当表达式的值为“真”(非0)时,执行while语句中的循环体语句,执行完循环体语句后,继续下一次条件判断;否则,跳过while语句中的循环体语句,执行while语句的下一条语句。,任务三出减法题,任务三出减法题,Do-While语句Do-While语句的一般格式:Do循环体语句While(表达式);,Do-While语句的执行过程首先执行一遍循环体语句,然后求解表达式的值,当表达式的值为真(非0)时,再执行一遍循环体语句,否则,结束循环,执行Do-While语句的下一条语句。,#include#include#includemain()inta,b;srand(time(0);doa=rand()%10;b=rand()%10;printf(t%d+%d=n,a,b);while(ab);,用Do-While语句解决问题。,任务三出减法题,任务四出10道题,使用While语句和Do-While语句出10道加法题需要一个变量控制循环的次数,这样的变量称之为“循环变量”。,任务四出10道题,#include#include#includemain()inta,b,ii=0;while(i10)srand(time(0);a=rand()%10;b=rand()%10;printf(t%d+%d=n,a,b);i+;,用while语句出10道加法题,任务四出10道题,用While语句和Do-While语句出10道减法题continue语句其语义是:结束本次循环,即不再执行循环体中continue语句之后的语句,转入下一次循环条件的判断与执行。continue语句只结束本层本次的循环,并不跳出循环。break语句其语义是:中断当前的循环语句,不管循环条件成立不成立,也不管后面还有没有循环体的其他语句,都强行中断,结束当前循环,接着执行循环体后面的语句。break语句只能结束本层循环,而不影响外层的循环,如果外面还有嵌套的循环,则继续执行。,任务四出10道题,使用continue语句来完成出10道减法题,main()inta,b,i=0;while(i10)srand(time(0);a=rand()%10;b=rand()%10;if(ab)continue;printf(t%d-%d=n,a,b);i+;,任务四出10道题,用For语句出10道加法题For语句是语言所提供的功能更强、使用更广泛的一种循环语句。for语句的一般形式:for(表达式1;表达式2;表达式3)循环体语句;,任务四出10道题,for语句的执行过程求解表达式1的值。计算表达式2的值,若值为“真”(非0)则执行循环体一次,否则跳出循环。求解表达式3的值,然后转回第2步重复执行。,任务四出10道题,#include#include#includemain()inta,b,i;for(i=0;i10;i+;)srand(time(0);a=rand()%10;b=rand()%10;printf(t%d+%d=n,a,b);,用for语句出10道加法题,#include#include#includemain()inta,b,i;for(i=0;i10;i+;)dosrand(time(0);a=rand()%10;b=rand()%10;while(ab);printf(t%d-%d=n,a,b);,用for语句完成出10道减法题,任务四出10道题,任务四出10道题,循环的嵌套在一个循环的循环体中还包括循环语句的结构,就称之为“循环的嵌套”。循环的嵌套也称为多重循环。for语句可以与while,do-while语句相互嵌套,构成多重循环。,任务五对用户计算结果进行判断,给出成绩,for(i=1;i=10;i+)srand(time(0);a=rand()%10;b=rand()%10;c=a+b;printf(t(%d)%d+%d=,i,a,b);scanf(%d,给出成绩,任务六实现“再来一次”,charagain=y;while(again=y|again=Y)/*此处省略了*/fflush(stdin);printf(Doyouwantdoitagain(Y/N)?n);scanf(%c,用while语句实现“再来一次”,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!