版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章结构化程序设计《C语言程序设计案例式教程(AI助学)》学习目标/Target了解算法,能够说出算法的概念与特性。
掌握流程图的绘制方法,能够根据程序需求画出流程图。掌握条件语句和选择语句的用法,能够使用if语句和switch语句解决程序中的判断问题。掌握循环语句的用法,能够使用while语句、do…while语句、for语句解决程序中的循环问题。掌握循环嵌套的用法,能够使用循环嵌套解决复杂的循环问题。章节概述/Summary前面几章介绍了C语言的基础知识,然而仅仅依靠这些基础知识还不能编写出可以解决复杂问题的程序。在程序中,通常需要加入业务逻辑,并根据业务逻辑关系对程序的流程进行控制。本章将对程序设计的灵魂——算法,以及C语言中的流程图、条件语句、选择语句和循环语句进行讲解。目录/Contents010203【案例4-1】画流程图【案例4-2】判断闰年【案例4-3】安全生产04【案例4-4】计算1到100的和目录/Contents050607【案例3-1】算术运算【案例4-6】九九乘法表【案例4-7】百钱百鸡08【案例4-8】完美数目录/Contents091011【案例4-9】回文素数【案例4-10】亲密数使用AIGC工具给程序排错【案例4-1】画流程图01案例描述编程是一门可展现思维逻辑之美的艺术。(1)把问题抽象化。(2)用逻辑化的方法表达出来。通常先根据需求设计算法,然后根据算法画出流程图,最后根据流程图编写代码。引言案例描述在本案例中,有3个数x、y、z,请设计一个算法找出其中最小的数,并画出算法流程图。知识需求本案例并不难,但要想顺利完成,还需要认真学习算法和流程图的相关知识。设计算法√画流程图√了解算法,能够说出算法的概念与特性。学习目标知识讲解1.算法为解决一个问题而采取的方法和步骤就称为“算法”。例如,将大象装进冰箱,可以分为3个步骤:打开冰箱,装进大象,关上冰箱。这一系列步骤是按照一定的顺序进行的,它解决了把大象装进冰箱的问题,是一个算法。知识讲解1.算法知识讲解1.算法在计算机中,算法也是对某一个问题的求解方法的描述,只是它的表现形式是计算机指令的有序序列,执行这些指令就能解决特定的问题。知识讲解1.算法一个算法,尤其是一个成熟的算法,应该具有以下五个特性。输出算法具有一个或多个输出内容。输出是算法进行信息加工后得到的结果。输入算法具有0个或多个输入内容。0个输入内容是指算法需要的初始内容已经在算法中明确定义,无须外部输入。确定性算法的每一步都有确定的含义,不具有二义性。有穷性一个算法必须在执行有穷步骤之后结束,且每一步都可在有穷时间内完成。可行性算法的每一步都是可执行的,算法通过执行有限次操作来实现相应的功能。掌握流程图的绘制方法,能够根据程序需求画出流程图。学习目标知识讲解2.流程图知识讲解2.流程图算法有3种较为常用的表示方法:伪代码法、N-S结构化流程图和流程图法。用的最多的是流程图法。知识讲解2.流程图流程图是一种用于描述问题处理步骤的图形工具。特点:图框和流程线组成,形象、直观,便于阅读。画流程图时必须按照功能选用相应的流程图符号。知识讲解2.流程图流程图符号01起始框用于表示流程的开始或结束。04处理框处理框用矩形表示,它代表程序中的处理功能,如算术运算和赋值运算等。02输入输出框用平行四边形表示,在平行四边形内可以写输入或输出的内容。06连接点连接点用圆形表示,用于流程图的延续。03判断框用菱形表示,它的作用是对条件进行判断。05流程线用实心单向箭头表示,指示程序的执行流向。起始框输入输出框判断框处理框流程线连接点巩固前面所学知识,能够利用前面所学知识实现案例4-1。学习目标案例实现求x、y、z三个数中的最小值,其步骤如下所示。010203判断x>y是否成立;如果成立,进入第(2)步;如果不成立,进入第(3)步。判断y>z是否成立;如果成立,则z为最小数;如果不成立,则y为最小数。判断x>z是否成立;如果成立,则z为最小数;如果不成立,则x为最小数。案例实现1.算法设计案例实现1.算法设计(1)程序开始(2)进入输入输出框,为3个变量x、y、z赋值。(3)进入判断框。案例实现1.算法设计(3)进入判断框。判断x>y是否成立,如果是成立,则进入左边的判断框,继续判断y>z是否成立;否则进入右边的判断框,判断x>z是否成立。案例实现1.算法设计(4)如果进入左边判断框。判断y>z是否成立,如果成立,则进入左边的处理框,得出最小值是z;如果不成立,则进入右边的处理框,得出最小值为y。(4)如果进入右边判断框。则判断x>z是否成立,如果成立,则进入左边的处理框,得出最小值是z;如果不成立,则进入右边的处理框,得出最小值是x。案例实现1.算法设计(4)如果进入左边判断框。判断y>z是否成立,如果成立,则进入左边的处理框,得出最小值是z;如果不成立,则进入右边的处理框,得出最小值为y。(4)如果进入右边判断框。则判断x>z是否成立,如果成立,则进入左边的处理框,得出最小值是z;如果不成立,则进入右边的处理框,得出最小值是x。(5)进入输出框,输出结果。(6)进入结束框,程序运行结束。【案例4-2】判断闰年02案例描述背景知识闰年是历法中为弥补时间差而设立的,为补齐地球公转与公历纪年的时间差值,先每四年设一次闰年补天数;又因四年一闰仍有微小误差,故而规定每400年减少3个闰年,以此修正历法偏差,将闰年的计算归结如下:四年一闰,百年不闰,四百年再闰。案例描述背景知识总结起来就是如下规则。普通年份:能被4整除,但不能被100整除的年份为闰年,例如2004年就是闰年。世纪年份:能被400整除的年份为闰年,例如2000年为闰年,1900年不是闰年。案例描述本案例要求编写一个程序判断闰年,具体要求如下所示。(1)从键盘输入一个年份。(2)判断输入的年份是否为闰年,如果是闰年,则输出该年是闰年,否则输出该年不是闰年。知识需求判断一个年份是否是闰年,需要判断两个条件。能被4整除且不能被100整除,或者能被400整除。这两个条件满足任一条件就可以得出该年是闰年。对条件进行进行判断,可以使用C语言中的条件语句。知识需求掌握条件语句和选择语句的用法,能够使用if语句解决程序中的判断问题。学习目标知识讲解1.if语句知识讲解1.if语句在if语句中,如果满足某种条件,就进行相应的处理。例如,小明妈妈跟小明说“如果你考试得了100分,星期天我就带你去游乐场玩”。如果小明考试得了100分
妈妈星期天带小明去游乐场if(小明考试得了100分){
妈妈星期天带小明去游乐场}知识讲解1.if语句由上述伪代码推导出if语句的格式。if(判断条件){
代码块}流程图掌握条件语句和选择语句的用法,能够使用if…else语句解决程序中的判断问题。学习目标知识讲解2.if…else语句知识讲解2.if…else语句if…else语句是指如果满足某种条件,就进行相应的处理,否则就进行另一种处理。if(判断条件){
执行语句1}else{
执行语句2}流程图掌握条件语句和选择语句的用法,能够使用if…elseif…else语句解决程序中的判断问题。学习目标知识讲解3.if…elseif…else语句知识讲解3.if…elseif…else语句if…elseif…else语句适用于需对多个条件进行判断,进而执行不同操作的情景中。if(判断条件1){
执行语句1}elseif(判断条件2){
执行语句2}……elseif(判断条件n){
执行语句n}else{
执行语句n+1}流程图巩固前面所学知识,能够利用前面所学知识实现案例4-2。学习目标案例实现案例实现1.案例设计在程序中定义int类型的变量year,对变量year执行以下运算。0102year%4==0&&year%100!=0。year%400==0。上述两个条件有一个成立,则year表示的年份就是闰年。案例实现2.完整代码本案例中可以实现的效果图如下。代码实现
【案例4-3】安全生产03案例描述安全生产是我国的一项基本国策,是党和国家在生产建设中一贯坚持的指导思想。对个人来说,安全是最重要、最基本的需求之一,是人的生命与健康的基本保证。对于企业来说,安全生产是企业发展的重要保障,这是我们在生产经营中贯彻的一个重要理念。企业是社会大家庭中的一个细胞,只有抓好自身安全生产,才能促进大环境的稳定,进而为企业创造良好的发展环境。案例描述在本案例中,要求为企业生产编写一个安全监控程序,企业的安全级别系数有4个,用1~4整数表示。1:正常2:警告3:危险4:立即停产当程序监测到1或2时,在屏幕上输出相应信息;当程序监测到3时,在屏幕上输出危险说明信息,并提示工作人员查看;当程序监测到4时,自动结束机器的运行,并在屏幕上提示“危险操作!!!已自动停产”。知识需求使用if…elseif…else语句编写的代码过长,不利于阅读。C语言还提供了选择语句——switch语句,本案例更适合使用switch语句。掌握条件语句和选择语句的用法,能够使用switch语句解决程序中的判断问题。学习目标知识讲解1.switch语句switch语句是一种常用的选择语句,与条件语句不同的是,它针对某个表达式的值做出判断,从而决定执行哪一段代码。在switch语句中,switch关键字后面有一个表达式,case关键字后面有目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。1.switch语句知识讲解例如,在程序中使用数字1~7来表示星期一到星期天,并且根据输入的数字来输出对应中文格式的星期值。用于表示星期几的数字
如果等于1,则输出“星期一”
如果等于2,则输出“星期二”
如果等于3,则输出“星期三”
如果等于4,则输出“星期四”
如果等于5,则输出“星期五”
如果等于6,则输出“星期六”
如果等于7,则输出“星期天”
如果不是1~7,则输出“此数字为非法数字”1.switch语句知识讲解根据上述伪代码总结出switch语句格式。
switch(表达式) {
case
目标值1:
执行语句1;
break;
…
case
目标值n:
执行语句n;
break;
default:
执行语句n+1;
break; }1.switch语句知识讲解知识讲解1.switch语句switch语句应用示例:根据数值判断星期几。switch(week){case1:case2:case3:case4:case5: printf("今天是工作日\n"); break;case6:case7: printf("今天是休息日\n"); break;default: printf("输入的数字不正确..."); break;}当week的值为1、2、3、4或5时,进行的处理相同。知识讲解1.switch语句switch语句应用示例:根据数值判断星期几。switch(week){case1:case2:case3:case4:case5: printf("今天是工作日\n"); break;case6:case7: printf("今天是休息日\n"); break;default: printf("输入的数字不正确..."); break;}当week的值为6或7时,进行的处理相同。掌握跳转语句的用法,能够使用跳转语句break和continue实现循环结构、选择结构程序的跳转。学习目标2.跳转语句知识讲解2.跳转语句知识讲解跳转语句的作用是使程序跳转到其他部分执行,在C语言中,常用的跳转语句有两种:break和continue。breakbreak出现在switch条件语句中时,作用是终止某个case并跳出switch结构。当它出现在循环语句中,作用是结束循环,执行循环后面的代码。continuecontinue语句的作用也是使程序完成跳转。2.跳转语句知识讲解continue语句与break语句的区别有以下两点。VSbreak终止当前循环,执行循环体外的语句。可以用于switch语句。continue终止本次循环,继续执行下一次循环。不可以用于switch语句。巩固前面所学知识,能够利用前面所学知识实现案例4-3。学习目标案例实现案例实现01020304定义变量num存储安全级别系数。调用scanf()函数获取从键盘输入的安全级别系。使用switch语句判断安全级别系数的值。根据判断结果输出相应提示信息。1.案例设计案例实现本案例中可以实现的效果图如下。代码实现2.完整代码
【案例4-4】计算1到100的和04案例描述数学家高斯有一个趣事:在他10岁时,数学老师出了一道算术题:1+2+3+…+100的和是多少。在同学们都费心计算时,高斯没到1分钟就公布了答案为5050。老师对于高斯这样快速计算出结果而感到吃惊,问其算法,原来高斯经过仔细观察,找了一个规律,他发现一头一尾两个数相加,每次相加的和都为101,100个数正好50组101,于他得出101*50=5050,而高斯发现的这个规律正是等差级数的对称性。背景故事案例描述本案例要求编写一个程序,计算1+2+3+…+100的和。知识需求知识需求计算1到100的整数和,就需要逐个获取1~100的所有整数,即遍历1~100。需要用到循环语句,C语言提供了while、do···while、for语句,先学习while、do···while语句。掌握循环语句的用法,能够使用while语句解决程序中的循环问题。学习目标1.while语句知识讲解知识讲解while语句与if语句有些相似,都是根据是否满足条件来决定是否执行花括号内的执行语句的。两者的区别在于,while语句会反复地进行条件判断,只要条件成立,“{}”中的语句就会一直执行。while(循环条件){
执行语句}1.while语句知识讲解while循环语句的流程图如下。条件成立,循环会一直执行。1.while语句掌握循环语句的用法,能够使用do…while语句解决程序中的循环问题。学习目标知识讲解2.do…while语句知识讲解do…while语句与while语句的功能类似,二者的不同之处在于,while语句是先判断循环条件,然后根据判断结果来决定是否执行花括号中的循环体,而do…while语句则是先执行一次循环体,再判断循环条件。do{
执行语句…}while(循环条件);2.do…while语句知识讲解2.do…while语句do···while循环语句流程图如下。先执行一次循环体巩固前面所学知识,能够利用前面所学知识实现案例4-4。学习目标案例实现案例实现案例设计步骤如下。1定义int类型的变量num,并将其初始值设置为1,num用于存储1~100的整数。定义int类型的变量sum,用于存储1~100的和。使用while循环遍历1~100,将遍历到数据加到sum变量中,循环条件为num<=100。23注意:每循环一次,num需要自增,以进行下一次条件判断。1.案例设计案例实现本案例中可以实现的效果图如下。代码实现2.完成代码
【案例4-5】物不知数05案例描述《孙子算经》有题目:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何。答曰:二十三。术曰:三三数之剩二,置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十。并之得二百三十三,以二百一十减之即得。物不知数案例描述上述题目的含义为,有一些物品,3个3个地数会剩下两个,5个5个地数会剩下3个,7个7个地数会剩下两个,问这些物品有多少个。解法为,用3除余数为2,则取140;用5除余数为3,则取63;用7除余数为2,则取30;其总和为233,再减去210就得到结果23。本案例要求编写一个程序,查找1000以内满足“物不知数”条件的所有数。知识需求对3取模结果为2。对5取模结果为3。对7取模结果为2。if条件语句for循环语句知识需求根据数据需要满足的条件,推导出案例实现所需要的知识。掌握循环语句的用法,能够使用for语句解决程序中的循环问题。学习目标知识讲解1.for语句知识讲解1.for语句for循环通常用于循环次数已知的情况。for(初始化表达式;循环条件;操作表达式){
执行语句}执行顺序:循环条件执行语句(循环体)操作表达式知识讲解1.for语句下面分别用“①”表示初始化表达式、“②”表示循环条件、“③”表示操作表达式、“④”表示循环体,分析for语句的执行流程。for(①;②;③){
④}知识讲解1.for语句for循环执行步骤如下。1执行①。退出循环。执行②。如果循环条件的值非0,执行第3步;如果循环条件的值为0,执行第5步。23执行④。执行③,然后执行第2步。45巩固前面所学知识,能够利用前面所学知识实现案例4-5。学习目标案例实现案例实现1.案例设计步骤定义int类型变量num,表示满足条件的数据。使用for循环遍历1~1000的数据,初始化表达式为num=1,循环条件为num<=1000,操作表达式为num++。使用if语句判断“物不知数”的3个条件是否满足。案例实现本案例中可以实现的效果图如下。代码实现2.完成代码
【案例4-6】九九乘法表06案例描述由我国传诵下来的九九乘法表,到现代已经普及,本案例要求编写一个程序,在控制台打印出九九乘法表。知识需求知识需求分析九九乘法表,可得出如下规律。(1)九九乘法表一共有9行9列。(2)第1行有1列…第9行有9列,则行与列有相互作用的关系,即第n行,需要循环输出n列。(3)行列都需要遍历,因此需要使用两次循环。(4)由于列与行有对应关系,所以列的遍历受到行的限制,列循环需要嵌套在行循环之内。九九乘法表规律要实现九九乘法表的输出,需要使用双层循环,即循环嵌套。掌握循环嵌套的用法,能够使用循环嵌套解决复杂的循环问题。学习目标知识讲解
循环嵌套有时为了解决一个较复杂的问题,需要在一个循环中再定义一个循环,这样的方式被称作循环嵌套。在C语言中,while、do…while、for语句都可以进行嵌套,其中,for语句的嵌套是较常见的循环嵌套。for(初始化表达式;循环条件;操作表达式){ for(初始化表达式;循环条件;操作表达式) {
执行语句 }}知识讲解
循环嵌套for循环嵌套应用示例:for(inti=1;i<=3;i++){ for(intj=1;j<=4;j++) { //… }}知识讲解
循环嵌套上述示例的循环过程如下图。知识讲解
循环嵌套巩固前面所学知识,能够利用前面所学知识实现案例4-6。学习目标案例实现设定外层为行,内层为列,则内外层循环都是1~9,可以用for循环嵌套实现。案例实现1.案例设计案例设计步骤如下。123456九九乘法表一共有9行9列。使用变量i控制行数,则i的初始值为1,循环条件为i<=9。使用变量j控制列数,由于每一行中,列数不大于行数,因此其循环条件应当为j<=i。为了让九九乘法表呈现三角形状,在每一次内层循环结束时换行。为让每列之间保持间距,在每一个输出语句后加上'\t'调整列间距。本案例中可以实现的效果图如下。代码实现
案例实现1.案例设计【案例4-7】百钱百鸡07掌握循环嵌套的用法,能够使用循环嵌套实现案例4-7。学习目标案例实现案例描述张丘建《张丘建算经》有题目如下:“今有鸡翁一,直钱五;鸡母一,直钱三;鸡雏三,直钱一;凡百钱,买鸡百只,问鸡翁母雏各几何。”题目含义:公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱三只,用100文钱买100只鸡,问公鸡、母鸡、小鸡各多少只。百钱百鸡案例描述针对百钱百鸡问题,张丘建算经使用了三元一次不定方程进行解答,本案例要求,编写一个程序求解百钱百鸡问题。1.案例设计案例实现如果把公鸡,母鸡和小鸡的数量分别设为cock、hen、chick,则它们满足以下条件。01020304050<=cock<=20;0<=hen<=33;0<=chick<=100;cock+hen+chick=100;5*cock+3*hen+chick/3=100。2.完整代码案例实现本案例中可以实现的效果图如下。代码实现
【案例4-8】完美数08巩固前面所学知识,能够利用前面所学知识实现案例4-8。学习目标案例实现案例描述完美数是一些特殊的自然数,一个自然数,如果它所有真因子(除了自身之外的约数)之和等于它本身,这个数就是完美数。例如,6=1+2+3、28=1+2+4+7+14,则6和28就是完美数。本案例要求编写一个程序查找完美数。案例实现1遍历数据查找完美数,则需要遍历某个范围内的自然数,遍历自然数需要使用循环。2判断是否是完美数由于完美数是所有真因子的和等于其自身的数,在遍历时,需要使用当前遍历到数除以比它小的所有自然数,这也需要使用循环实现,因此本案例要使用循环嵌套实现。1.案例设计案例实现1.案例设计从键盘输入数据为num赋值。12345定义longint类型的变量num,表示自然数;定义longint类型的变量sum,用于存储完美数所有真因子之和。定义循环嵌套,外层循环,使用循环变量i遍历1~num的自然数;内层循环,使用循环变量j遍历小i的所有自然数,即内层循环条件为j<i。在循环内部,判断i%j是否等于0,如果等于0,则将j相加到sum。循环结束之后,如果sum==i成立,则i为完美数,否则i不是完美数。案例实现本案例中可以实现的效果图如下。代码实现2.完整代码
【案例4-9】回文素数09巩固前面所学知识,能够利用前面所学知识实现案例4-9。学习目标案例实现案例描述素数:只有1和它本身两个因子的自然数。回文数:从左至右读起来与从右至左读起来相同的数据,如11、202、333等。回文素数:从左至右读起来与从右至左读起来相同的素数。背景知识案例描述回文素数有很多,对于偶数位的整数,只有11是回文素数。也就是说,除11以外,所有的两位整数、4位整数、6位整数、8位整数中不存在回文素数。但是3位回文素数有很多。本案例要求编写程序查找出所有小于1000的回文素数。案例实现1.案例设计要对所有1000以内的整数进行判断
循环结构语句要判断是否为素数以及判断是否为回文素数
选择结构语句1先采用穷举法对1000以内所有整数进行遍历,判断其是否为素数。判断一个数是否为素数的关键在于,判定整数能否被1和它自身之外的其他整数所整除,如果都不能整除,则此数为素数。案例实现1.案例设计2如果此数为素数,则继续判断此数是两位数还是三位数。3如果为两位数,则判断其十位和个位是否相同,如果相同则说明此数为回文素数。如果是三位数,则判断其百位和个位是否相同,如果相同则说明此数为回文素数。4最后将所有小于1000的回文素数打印输出到屏幕上即可。案例实现本案例中可以实现的效果图如下。代码实现2.完整代码
【案例4-10】亲密数10巩固前面所学知识,能够利用前面所学知识实现案例4-10。学习目标案例实现案例描述亲密数是指这样两个数,两个数的所有真因子之和等于彼此。例如,有两个数a和b,a的所有真因子之和等于b,而b的所有真因子之和正好等于a,则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026全球航空乘客服务市场现状深度解析及竞争格局与旅客体验优化分析
- 2026汽车维修行业技术培训体系市场研究与发展前景研究
- 物业设备设施维护保养制度
- 2026汽车零部件制造行业升级转型与产业链整合研究报告
- 2026中国香料香精制造业技术标准分析市场需求发展规划
- 2026中国钨矿资源安全保障体系构建与市场展望
- 腹泻的标准化诊断思路及粪便相关检查全面解读
- 2026中国涡流泵行业品牌传播与市场推广策略分析报告
- 2026汽车租赁行业商业模式市场运营投资前景发展分析
- 2026农业农业电商平台运营行业市场现状供需分析及投资评估规划分析研究报告
- 2026年泌尿外科出科试卷及答案
- 2026小学数学北师大版新教材培训:四至六年级教材解析
- AI原生数据平台研究报告(2026年)(2026.6)
- 2026年成都玉林紫荆初一入学数学分班考试真题含答案
- 工程预应力张拉与灌浆质量控制措施
- 2026人教版小学三年级下册数学期末综合试卷3套(打印版+答案解析)
- 一氧化二氮的理化性质与危险特性培训
- 2026年江苏省安全员C2证(土建安全员)考试题库及答案
- DB11-T 1610-2026 民用建筑信息模型深化设计建模细度标准
- 2026年巨量本地推初级题库
- 校本教材-无人机空气动力学与飞行原理
评论
0/150
提交评论