(C语言程序设计案例课件)项目三输入学生成绩转化为等级.ppt

上传人:本田雅阁 文档编号:3574653 上传时间:2019-09-13 格式:PPT 页数:105 大小:13.47MB
返回 下载 相关 举报
(C语言程序设计案例课件)项目三输入学生成绩转化为等级.ppt_第1页
第1页 / 共105页
(C语言程序设计案例课件)项目三输入学生成绩转化为等级.ppt_第2页
第2页 / 共105页
(C语言程序设计案例课件)项目三输入学生成绩转化为等级.ppt_第3页
第3页 / 共105页
(C语言程序设计案例课件)项目三输入学生成绩转化为等级.ppt_第4页
第4页 / 共105页
(C语言程序设计案例课件)项目三输入学生成绩转化为等级.ppt_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《(C语言程序设计案例课件)项目三输入学生成绩转化为等级.ppt》由会员分享,可在线阅读,更多相关《(C语言程序设计案例课件)项目三输入学生成绩转化为等级.ppt(105页珍藏版)》请在三一文库上搜索。

1、大连理工大学出版社,C语言程序设计案例教程,项目三 输入学生成绩转化为等级,教学目的: 通过本项目的学习,要求能熟练掌握C语言的三种控制结构和相关的语句,熟悉各种语句的执行流程,能够在不同情况下灵活选择不同的语句来解决实际问题。掌握基本语句为后续项目做好准备,也为后续面向对象程序设计的学习打下基础。,教学内容,项目三 输入学生成绩转化为等级,重点和难点,项目三 输入学生成绩转化为等级,重点:,难点 : 、掌握各控制语句的嵌套 、选择使用好控制语句来解决实际问题,项目三 输入学生成绩转化为等级,1)问题情景与实现,辅导员张老师在使用小王设计的程序时,发现他还想要对输入后的学生成绩进行合法性的判断

2、并将其转化为等级,故张老师找来小王同学,说明了需求,小王根据张老师的需求,参考了相关的资料,完善了原来的程序,帮助张老师解决了该问题。,任务1 输入学生成绩,判断其合法性、并将其转化为等级,项目三 输入学生成绩转化为等级,实现: /* 功能:成绩的合法性判断和等级转化*/ #include void main() float yuwen,shuxue,yingyu; float sum,ave; char gradeA,gradeB,gradeC; /*语文成绩的输入及合法性判断和等级的转化*/ while(1) printf(“请输入学生的语文的成绩:“); scanf(“%f”,else

3、if(yuwen=80) gradeA=B; else if(yuwen=70) gradeA=C; else if(yuwen=60) gradeA=D; else gradeA=E; break; /*数学成绩的输入及合法性判断和等级的转化*/ while(1) printf(“请输入学生的数学的成绩:“); scanf(“%f”,项目三 输入学生成绩转化为等级,if(shuxue 100) printf(“您输入的成绩不合法,请重新输入n”); else if(shuxue =90) gradeB=A; else if(shuxue =80) gradeB=B; else if(shux

4、ue =70) gradeB=C; else if(shuxue =60) gradeB=D; else gradeB=E; break; ,项目三 输入学生成绩转化为等级,/*英语成绩的输入及合法性判断和等级的转化*/ while(1) printf(“请输入学生的英语的成绩:“); scanf(“%f”,项目三 输入学生成绩转化为等级,else if(yingyu =60) gradeC=D; else gradeC=E; break; sum=yuwen+shuxue+yingyu; ave=sum/3; printf(“该生的语文,数学,英语的成绩分别是:n“); printf(“%f

5、分t%f分t%f分n”,yuwen,shuxue,yingyu); printf(“该生的语文,数学,英语的成绩的等级分别是:n“); printf(“%c级t%c级t%c级n”,gradeA,gradeB,gradeC); printf(“总分是%f分t平均分是%f分n”,sum,ave); ,项目三 输入学生成绩转化为等级,编译、连接、和运行程序。程序运行后,屏幕显示:,要完成上面的任务,小王必须要熟练掌握C程序的三种控制结构和相关的语句,熟悉各种语句的执行流程,能够在不同情况下灵活选择不同的语句来解决实际问题。,项目三 输入学生成绩转化为等级,2)相关知识,【例3.1】一个简单的顺序结构

6、C程序 /* 源文件名:Li4_1.c 功能:从屏幕依次显示输出文字。 */ #include main( ) printf(“好好学习,n”); printf(“天天向上。n”); ,顺序结构,3.1 顺序结构引例,编译、连接、和运行程序。程序运行后,屏幕显示:,运行以上程序,即在屏幕上依次输出好好学习,天天向上。为了更好的体验此程序的执行过程,在运行时可用单步执行来观察其流程,这样便会看到: 第一步程序执行第一条printf语句,在屏幕上显示“好好学习,”; 第二步程序执行第二条printf语句,在屏幕上显示“天天向上。”。,3.1 顺序结构引例,整个程序的执行过程可以用下图流程图表示。可

7、以说这就是顺序的执行过程,也是一个顺序的C程序结构,3.1 顺序结构引例,3.2 顺序结构,顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三部曲的程序就是顺序结构。 用流程图表示顺序结构:,利用以上结构完成下面例题: 【例3.2】由键盘输入圆的半径R,输出该圆的直径和面积(2R),其中=3.14159。 分析: 先从键盘接收半径,但半径是个变量,要先定义后使用,所以在输入前要先定义变量r,其他所要用到的变量一起先定义,然后输入半径。 接下来利用半径计算直径;利用半径或已

8、求得的直径计算圆的面积。最后把计算的结果输出。,3.2 顺序结构,/* 源文件名:Li 3_2.c 功能:由圆的半径计算圆的直径和面积 */ #include main() int R, d ; float s; printf (“请输入圆的半径:”); scanf (“%d”, ,3.2 顺序结构,3.2 顺序结构,编译、连接、和运行程序。程序运行后,屏幕显示:,此程序的流程通过流程图可以很好的体现顺序结构。,3.2 顺序结构,【例3.3】 鸡兔同笼问题。已知鸡兔总头数为H,总脚数为F,求鸡兔各有多少只? 分析: 此题若用顺序结构的思想就是先已知用键盘输入H,F,根据鸡兔总头数H和总脚数F推

9、倒出鸡的数量x和兔的数量y,即用还有已知数H,F的公式表示出x,y。然后 分别计算x,y。最后输出所求 。,利用数学知识列出二元一次方程组:,3.2 顺序结构,推倒解得:,这样利用这两个公式即可求得x,y。 从流程图中可以很好的描述此程序的流程。,/* 源文件名:Li 3_3.c 功能:已知鸡兔总头数为H,总脚数为F,求鸡兔各有多少只? */ #include main ( ) ,3.2 顺序结构,int H, F, x, y; / * x为鸡的数量,y为兔的数量 * / printf(“请输入鸡兔的总头数H,总脚数F:“); scanf(“%d%d“, ,编译、连接、和运行程序。程序运行后,

10、屏幕显示 :,3. 选择结构引例,【例3.4】分段计算水费,为了提倡节省用电,对电费的收取分三个收费区间: (1)当x0时,不收费。 (2)当用电数量在0到15之间时,按一种方法计算。 (3)当用电数量大于15时,则按另外一种方法计算。,3. 选择结构引例,这时就出现了选择情况,要用到分支选择结构,用流程图表示,如下图所示。,3. 选择结构,通过选择结构的引例,我们对选择结构有了初步的了解。选择结构可以按分支数的不同分为单分支选择结构、双分支选择结构和多分支选择结构,C语言提供了if语句和switch语句可以实现这些分支结构。单分支选择结构用简单的if语句就可以,双分支选择结构可以用ifels

11、e语句,多分支选择结构可以用switch语句、elseif语句或嵌套的if语句。其中if语句有三种形式(简单的if语句,ifelse语句、elseif语句)还可以嵌套使用,所以if语句可以组合成任意分支的选择结构,而switch语句又叫开关选择语句,多用于多分支选择结构。下面我们一一作以介绍。,3. 单分支选择结构,if语句一般格式: if (表达式) 语句; 其执行的过程可用流程图直观的表示出,如下图所示 。,3. 单分支选择结构,【语句说明】 (1)if是c语言的关键字,它表示if语句的开始,即可理解为英语单词“如果”。 (2)小括号中的表达式为指定的所要判断的条件,条件均为逻辑表达式或关

12、系表达式,也可以是任意的数值类型。注意:小括号不能省且后面没有分号。 例:以下三条语句都合法 if (3) printf(“O. K.n“); if (q) printf(“%dn“,a); if (3x & x=5) printf(“3x=5n“ );,3. 单分支选择结构,(3)语句可以是单语句,也可以是复合语句。注意:在复合语句 外不需再加分号。 【例3.5】从键盘输入一个整数,输出该数的绝对值。 案例分析: 先从键盘接收一个整数,这个整数可能是正数可能是负数也可能是0。 针对不同的数做出不同的执行动作,正数的绝对值是它本身,负数的绝对值是它的相反数,0的绝对值是它本身。综合起来只有是负

13、数的时候才需要动作,其它数的绝对值就是其本身不需要动作,所以选用单分支选择结构即可满足要求。 用流程图表示如下图所示。,3. 单分支选择结构,程序: /* 源文件名:Li 3_5.c 功能:从键盘输入一个整数,输出该数的绝对值。 */ #include main( ) int shu; printf(“请输入一个整数:n“); scanf(“%d“, shu ); if ( shu 0 ) shu = -shu; printf(“该数的绝对值为: %d。n“, shu ); ,3. 单分支选择结构,编译、连接、和运行程序。程序运行后,屏幕显示:,3. 单分支选择结构,3. 双分支选择结构,双分

14、支选择结构就是根据所给定的条件来判断选择要执行下面两个分支中的哪一个分支语句。用if与else构成的ifelse语句结构可以实现双分支选择结构。 ifelse语句 if (表达式) 语句1; else 语句2;,其执行的过程可用流程图直观的表示出来,如下图,【语句说明】 (1)if和else都是c语言的关键字,它表示if语句的开始,即可理解为英语单词“如果否则”。 (2)if后小括号中的表达式为指定的所要判断的条件,要求的条件同简单的if语句。注意:else后没有小括号即没有条件,其条件相当于默认为与if小括号中条件相反的所有条件。 (3)语句1和语句2都可以是单语句,也可以是复合语句。若是一

15、条语句不用加 ,若为多条语句组成一定要加 。else不能单独使用,必须与if一起构成ifelse结构。,3. 双分支选择结构,3. 双分支选择结构,【例3.6】 任意输入两个不相等的数,将较大的数输出。 案例分析:比较任意两个数会有两种种情况,若xy,输出x;若xy,输出y。 算法: (1)定义变量 (2)给变量赋初值,(3)比较x、y, 若xy, 输出大数x (4)否则(说明y大)输出y 用流程图表示如下图所示。,3. 双分支选择结构,/* 源文件名:Li 3_6.c 功能:任意输入两个不相等的数,将较大的数输出。 */ #include main( ) int x, y, t; print

16、f(“n请输入两个整数:“); scanf(“%d%d“, ,3. 双分支选择结构,编译、连接、和运行程序。程序运行后,屏幕显示:,3. 双分支选择结构,3. 多分支选择结构,在实际应用中,不仅有单分支和双分支的选择情况,很多时候会出现多分支的选择问题。多分支选择结构即根据所给定的条件来判断选择要执行下面多个分支中的哪一个分支语句。多分支选择结构有多种形式。 具体实现方法可用以下语句:elseif 语句、嵌套的 ifelse语句、switch语句,下面我们分别作以介绍。 、elseif 语句 此语句是ifelse ifelse语句的组合,中间的else if语句可以用多个以满足多分支选择结构的

17、要求。,elseif 语句的一般形式: if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式n-1) 语句n-1; else 语句n;,3. 多分支选择结构,3. 多分支选择结构,执行过程如下图,【例3.7】:体型判断。按公式计算:体指数t = 体重w / (身高h)(w 单位为公斤,h单位为米)。 按“体指数”对肥胖程度进行划分: 当t = 27时,为肥胖。 案例分析:编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的体重属于何种类型。用多分支选择语句即可实现。,3. 多分支选择结构,程序: /* 源文件名:Li 3_7.c 功

18、能:体型判断。按公式计算:体指数t = 体重w kg/ (身高h)m */ #include main( ) float t, w,h ; printf(“请输入您的体重kg和身高m:”); scanf(“%f %f ”, ,3. 多分支选择结构,if(t 18 ,3. 多分支选择结构,编译、连接、和运行程序。程序运行后,屏幕显示:,例1:if ( a0 ) if ( b0 ) printf(“%d,%dn“, a, b); 如果a,b都是正数,则输出a,b,、if语句的嵌套 在if语句中又包含有一个或多个if语句称为if语句的嵌套。嵌套的if语句可为简单的分语句,也可以是ifelse,还可以

19、是ifelse ifelse语句。嵌套完可能成为很复杂的结构。,3. 多分支选择结构,例2:if ( a0 ) if ( b0 ) printf(“%d,%dn“, a, b); else printf(“%dn“, a); else if ( b0 ) printf(“%dn“, b); else printf(“n“); 输出a,b中的正数,3. 多分支选择结构,【语句说明】 (1)嵌套不允许交叉。 (2)else与if必须成对出现,且else总是与最近的一个未配对的if配对。 例:读以下两程序,对比结果。,3. 多分支选择结构,3. 多分支选择结构,(3)为避免错误可用 将内嵌结构括起来

20、,以确定if与else的配对关系属内嵌范围。,【例3.8】:任意输入三个整数,找出其中最大的整数。 案例分析: 从键盘接收三个数a,b,c; 先比较其中两个数,若ab,则再拿较大的数a和第三个数c相比较,会得出最大数; 否则拿另一个较大的数b和第三个数c相比较,会从b,c中找出较大的数。 具体算法用流程图表示如下图。,/* 源文件名:Li 3_8.c 功能:任意输入三个整数,找出其中最大的整数。 */ #include main( ),3. 多分支选择结构, int a, b, c, max ; printf (”请输入三个整数:”); scanf( “%d%d%d“, ,3. 多分支选择结构

21、,编译、连接、和运行程序。程序运行后,屏幕显示:,switch一般格式: switch(表达式) case :语句组1; break; case :语句组2; break; case :语句组n-1; break; default :语句组n ; break; ,3. 多分支选择结构,switch语句: 用if或if.else或它们的嵌套也可使程序实现多路分支,但容易出现下面的问题。,执行过程: (1)计算表达式的值。 (2)判断:表达式的值与常量表达式的值是否相等。 (3)执行: 若表达式 = = 常量表达式, 则执行语句; 若表达式 != 常量表达式, 则执行default开始的(语句);

22、 若程序中无default开始的语句,则程序语句switch相当于一个空程序(语句)。,3. 多分支选择结构,3. 多分支选择结构,(4)两种结束方式:遇break语句跳出结束没有break时继续执行直到遇最后“”结束。注:break语句用于跳出其所在的switch结构,后面会详细介绍此语句。,switch语句: 说明: (1)switch后圆括号内的表达式要求是整型或字符型的; (2)各case的常量表达式的值不能相同; (3)default放在语句的的最后是一个好的习惯。 (4)case中的break语句是根据程序的需要选用的。 (5)多个case可共用一组执行语句,3. 多分支选择结构,

23、【例3.9】计算 y 的值。,* 源文件名:Li 3_9.c 功能:计算分段函数的值。 */ #include “math.h“ main ( ) ,3. 多分支选择结构,float x , y ; int m ; printf( “请输入 05 之间的数:“ ); scanf( “%f“, ,3. 多分支选择结构,编译、连接、和运行程序。程序运行后,屏幕显示,3. 多分支选择结构,3.5 循环结构引例,【例3.11】求 1 + 2 + + 100 分析: 求和的过程为: 设变量S为所求的和,最开始S0 = 0,之后加和100次 1) S=0+1 S1 = S0 + 1 2) S=1+2 S2

24、 = S1 + 2 3) S=1+2+3 S3 = S2 + 3 100) S=1+2+ +100 S100 = S99+100 认真观察加数的变化规律不难发现加数从1变化到100,第一个加数是1,后一个加数比前一个加数增加1,最后一个加数是100。,在解决实际问题时,经常也会遇到循环控制的结构,先看下面一个例子。,3.5 循环结构引例,首先计算前两个加数的和;其次用求得的和与第三个数相加,计算出前三个加数的和;再其次使用求得的和与第四个加数相加,计算出前四个数的和;如此进行下去,直到计算出前100个加数的和。从上面的分析看出,这个问题可以通过多次加法运算完成,并且加数的变化是有规律的。因此可

25、以使用循环结构的程序解决这个问题。 具体算法为: 先计算0和1的和,并把结果存放在s中;再把s中的数与2相加,结果仍然放在s中(这可以用s=s+2实现);再把s中的数与3相加,结果仍放在s中(这可以用s=s+3实现);如此进行下去,一直计算出这100个加数的和为止。如果变量s的初始值为0,就可以把计算累计和的操作也放在上面的循环结构中,使用s=s+i计算累加和,循环结束时它存放的就是前100个自然数的和。 可总结为: (1)求和表达式为:s = s + i即这是每次重复的动作。 (2)循环从加1开始,加到100结束。 (3)循环次数 i :1100,用流程图可以很好的体现出此算法。如右图所示。

26、,3.5 循环结构引例,3. 循环结构,循环结构也称重复结构:即反复执行程序中的一组指令或程序段。对计算机程序而言,循环必须具备两个重要因素: (1)在一定的条件下,重复执行一组指令; (2)必然出现不满足条件的情况,使循环终止。 被反复执行的程序段称为循环体。用来控制循环是否继续进行的变量被称为循环变量。 计算机程序的两种循环方式: (1)计算器控制的循环含当型循环(while/for)和直到型循环(dowhile); (2)标记控制的循环(if与goto语句构成的循环结构)。,3.1 循环结构,循环结构,while 语句 一般形式:,执行过程:若表达式(条件)的值为真,则执行内嵌的循环体语

27、句,再判断表达式(条件),当表达式的值为假时,跳出while循环,继续执行while后面的语句。如下图所示。,【语句说明】 1)while语句属当型循环,即先判断条件(表达式),再执行循环体。循环体可为任意类型语句,循环体有可能一次也不执行(条件一开始就不成立)。 2)表达式为循环条件,用于控制循环是否可继续执行,故称控制表达式。 3)循环体语句为内嵌式语句,是循环结构的循环体。它可以是单语句也可以是复合语句,且该语句中必须包含有对循环条件进行修改的语句。 4)无限循环: while(1) 循环体;,3.1 循环结构,3.1 循环结构,【例3.12】用while语句实现引例中的案例求 1 +

28、2 + + 100。 确定其循环初值是1,循环终值是100,循环条件是i main() int i,s=0; i=1;,5)下列情况,退出while循环: (1) 条件表达式不成立(为零) (2) 循环体内遇break,return,goto语句时,3.1 循环结构,while(i=100) s=s+i; i+; printf(“%d“,s);,编译、连接、和运行程序。程序运行后,屏幕显示:,dowhile 循环: 一般形式:,执行过程:执行内嵌循环体语句,再判断小括号中的表达式(条件),若为真,则继续执行内嵌循环体语句,再判断表达式(条件),直到表达式的值为假时,跳出循环,执行do-whil

29、e后面的语句。流程如图。 特点:先执行循环体,后判断表达式,3. dowhile 语句,3. dowhile 语句,【语句说明】 (1)至少执行一次循环体 (2)dowhile可转化成while结构,如图。,3. dowhile 语句,【例3.13】用dowhile语句实现引例中的案例求 1 + 2 + + 100。 /* 源文件名:Li 3_13.c 功能:dowhile语句实现求1 + 2 + + 100。 */ #include main( ) int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(“%d“,sum); ,3. dow

30、hile 语句,编译、连接、和运行程序。程序运行后,屏幕显示:,(3)与while语句的不同:do-while语句至少执行循环体一次,但while语句可以一次也不执行循环体(当开始条件就为假时)。,for 循环: 一般形式:,执行流程:,3. for 语句,说明: ()for语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号“;”不可省。 ()无限循环: for(;)。 ()for语句可以转换成while结构。,3. for 语句,1)可以省略初始化表达式, 但须保留分号, 但在for之前必须给循环变量赋值;,2)增量表达式亦可省略,但在循环体中必须有语句来修改循环变量,

31、使能够正常结束循环;,3. for 语句,()for语句的几种特例(表达方式灵活多样),总结列举出以下七种特例:,3)条件表达式一般不可省略,否则为无限循环,循环体内应设法结束循环;,4)若同时省略初始表达式,和增量表达式,则相当于while语句;,5)三个表达式均省略 即for(;)语句则相当于while(1)语句,为无限循环;,3. for 语句,6)初始表达式、循环表达式可以是逗号表达式,以使循环变量值在修改时可以对其它变量赋值;,7)循环体可以为空;,3. for 语句,【例3.15】 for循环 例: 用for循环求,3. for 语句,三种循环的比较: 1. 使用场合:三种循环都可

32、以用来处理同一问题,一般情况下可以互相代替。 1)for一般用于具有明确循环次数的情况; 2)while 和do-while常用在事先只知道循环控制条件,循环次数要在循环过程中才能确定的情况; 2.循环条件:while、do-while在whie后面指定;for循环在“表达式2”中指定。,3. for 语句,3.循环初始条件:while、do-while在循环前指定;for循环一般在“表达式1”中指定。 4.判循环条件的时机:while、for循环先判循环条件,后执行;do-while循环先执行,后判循环条件。,3. for 语句,3.循环语句的嵌套,循环结构和选择结构一样,也可以嵌套使用,也

33、允许多层嵌套。一个循环体内又包含另一个完整的循环结构称为循环的嵌套,内嵌的循环中还可以嵌套循环即为多层循环。例如:while语句中包含for语句,for语句中包含for语句或其它循环语句等。 不仅循环结构之间可以嵌套,而且循环结构和选择结构之间也可以嵌套使用,既可以在循环结构中嵌套选择结构,也可以在选择结构中嵌套循环结构。例如for语句中嵌套if语句,if语句中嵌套while语句。,【例3.16】 输出九九乘法表 1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 9 = 9 2 * 9 =18 9 * 9 = 81,

34、3.循环语句的嵌套,说明: 嵌套的原则: 不允许交叉 循环与分支可以相互嵌套但不允许交叉 三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉,3.循环语句的嵌套,算法分析:九九乘法表中的每一个式子都涉及被乘数和乘数两个数相乘得来,其中被乘数和乘数都很有规律都是从1变到9,那我们就可以用两条for循环语句分别控制被乘数和乘数,并且使两条for循环语句嵌套,这样一个被乘数是1时,乘数从1变到9,被乘数是2时乘数再从1变到9,这样就会输出九九乘法表。 流程图如图所示:,程序 : /* 源文件名:Li 3_16.c 功能:用for语句实现求1 + 2 + + 100。 */ #

35、include main( ) int i, j; for ( i = 1 ; i= 9 ; i + ) for ( j = 1 ; j= i ; j + ) printf(“%d*%d=%2d “, i, j, i*j ); printf ( “n“); ,3.循环语句的嵌套,编译、连接、和运行程序。程序运行后,屏幕显示:,3.循环语句的嵌套,3.6.5 break 语句和continue语句,1break语句 在学习switch语句时就接触到了break语句,那时它可以使程序跳出所在的switch结构。如果break语句用在循环结构中,可以跳出所在的循环结构。 break语句格式: bre

36、ak; 功能:循环体中遇见break语句,立即结束循环,跳到循环体外,执行循环结构后面的语句。 【语句说明】 (1)break语句只能用在switch语句和循环语句中。 (2)break只能跳出一层循环(或者一层switch语句结构)。,3.6.5 break 语句和continue语句,在while语句中的流程,在dowhile语句中的流程,break语句在各结构中的执行情况用流程图表示为:,3.6.5 break 语句和continue语句,【例3.17】输出圆面积,面积大于100时停止。 程序: /* 源文件名:Li 3_17.c 功能:输出圆半径在10以内自然数的圆面积,面积大于100

37、时停止 */ #include #define PI 3.14159 main() int r; float area; for(r=1;r=10;r+), area=PI*r*r; if(area100) break; printf(“r=%d,area=%.2fn“,r,area); ,编译、连接、和运行程序。程序运行后,屏幕显示:,3.6.5 break 语句和continue语句,2 . continue语句 功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。 仅用于循环语句中。,3.6.5 break 语句和continue语句,【例3.18】例: 求输

38、入的十个整数中正数的个数及其平均值,3.6.5 break 语句和continue语句,3.7 实例解析,【例3.19】输入1个整数,判断该数是奇数还是偶数。 /* 源文件名:Li 3_19.c 功能:输入1个整数,判断该数是奇数还是偶数。 */ #include int main( ) int number; printf(“Enter a number: “); scanf(“%d“, , return 0; printf(“Tne number is even. n“); ,编译、连接、和运行程序。程序运行后,屏幕显示,【例3.20】求解简单表达式。输入一个形式如“操作数 运算符 操作数

39、”的四则运算表达式,输出运算结果。,3.7 实例解析,/* 源文件名:Li 3_20.c 功能:求解简单的四则运算表达式。 */ #include int main(void) double value1, value2; char operator; printf(“Type in an expression: “); /* 提示输入一个表达式 */ scanf(“%lf%c%lf“, case -:,3.7 实例解析,printf(“%.2fn“, value1-value2); break; case *: printf(“%.2fn“, value1*value2); break; c

40、ase /: printf(“%.2fn“, value1/value2); break; default: printf(“Unknown operatorn“); break; return 0; ,3.7 实例解析,编译、连接、和运行程序。程序运行后,屏幕显示:,【例3.21】求1000以内的水仙花数,即这个数等于它的百位、十位和个位数的立方和。例如153是一个水仙花数, 因为 算法:用循环结构在1000以内的数中查找,每查一个数都分别求出这个数的个位、十位、百位,然后判断其是否满足条件(数字等于它百位十位个位立方和),若满足则此数即为水仙花数,如此循环查找下去直到找完1000个数为止。

41、 分别用三种循环语句编写该程序。,3.7 实例解析,程序一:用while语句实现,/* 源文件名:Li 3_21_1.c 功能:用while语句实现求1000以内的水仙花数 */ #include main( ) int n=100,i,j,k; /*i、j、k用来放这个数的百位、十位和个位*/ printf(“水仙花数是:”); while (n1000) i=n/100; j=(n/10)%10; k=n%10;,3.7 实例解析,if (n=i*i*i+j*j*j+k*k*k) printf(“%6d“,n); n=n+1; ,程序二:用dowhile语句实现,/* 源文件名:Li 3_

42、21_2.c 功能:用dowhile语句实现求1000以内的水仙花数 */ #include main() int n=100,i,j,k; printf(“水仙花数是:”); do i=n/100;,3.7 实例解析,j=(n/10)%10; k=n%10; if (n=i*i*i+j*j*j+k*k*k) printf(“%6d“,n); n=n+1; while (n1000); ,程序三:用for语句实现,/* 源文件名:Li 3_21_3.c 功能:用for语句实现求1000以内的水仙花数 */ #include main( ) int n=100,i,j,k; printf(“水仙

43、花数是:”);,3.7 实例解析,for(n=100;n1000;n+) i=n/100; j=(n/10)%10; k=n%10; if (n=i*i*i+j*j*j+k*k*k) printf(“%6d“,n); ,以上三种循环程序运行后,屏幕显示的结果一样为:,3.7 实例解析,3.8 结构化程序设计方法与综合实训,【例3.22】 输出3100中的所有素数。 分析: 1)对于某个数n,如果从2到n1都不能被n整除,则该数n为素数。 此处,除数2到n可以用一个for语句来表示: for (i=2;i=n-1;i=i+1) 2)对于3100之间的数,可以表示如下:,/* 源文件名:Li 3_

44、22.c 功能:输出3100中的所有素数。 */ #include main( ) int n,i; for (n=3;n=n) printf(“%dt“,n); ,程序:,3.8 结构化程序设计方法与综合实训,屏幕显示的结果为:,【例3.23】输出如下图形: * * * * * * * * * * * * * * * * * * * * * * * * * 分析:共有5行,外循环 i:15 第一行输出4个空格,1个星号 第二行输出3个空格,3个星号 第三行输出2个空格,5个星号,3.8 结构化程序设计方法与综合实训, 第五行输出0个空格,9个星号 空格用循环变量j控制,j=5-i,星号用循环

45、变量k控制,k=2i-1 程序:,/* 源文件名:Li 3_23.c 功能:输出图形 */ #include main( ) int i,j,k; for(i=1;i=5;i+),3.8 结构化程序设计方法与综合实训, for(j=1;j=5-i;j+) printf(“ ”); for(k=1;k=2*i-1;k+) printf(“*”); printf(“n”); , for(j=1;j=5-i;j+) printf(“ ”); for(k=1;k=2*i-1;k+) printf(“*”); printf(“n”); ,【例3.24】输入10个字符,统计其中英文字母、数字字符和其他字符

46、的个数。,/* 源文件名:Li 3_23.c 功能:输入10个字符,统计字符,包括英文字母、数字字符和其他字符 */ #include int main(void) ,3.8 结构化程序设计方法与综合实训,int digit, i, letter, other; /* 定义3个变量分别存放统计结果 */ char ch; /* 定义1个字符变量ch */ digit = letter = other = 0; /* 置存放统计结果的3个变量的初值为零 */ printf(“Enter 10 characters: “); /* 输入提示 */ for(i = 1; i = a /* 如果ch是

47、数字字符,累加digit */,3.8 结构化程序设计方法与综合实训,编译、连接、和运行程序。程序运行后,屏幕显示:,3.8 结构化程序设计方法与综合实训,else other +; /* ch是除字母、数字字符以外的其他字符,累加other */ printf(“letter=%d, digit=%d, other=%dn“, letter, digit, other); return 0; ,小 结,结构化程序设计提供的三种基本结构:顺序结构、分支选择结构和循环结构。 采用结构化程序设计能够设计出容易理解、测试、调试和修改的程序。正确使用这些结构将有助于设计出高度结构化的程序。由这三种基本结构可以组合任何复杂的程序设计。程序设计也可称为一门工程设计,它是根据要解决的问题,使用某种程序设计语言,设计出能够完成这一任务的计算机指令序列。 在执行顺序结构时,程

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1