c语言第3章结构化程序设计.ppt
《c语言第3章结构化程序设计.ppt》由会员分享,可在线阅读,更多相关《c语言第3章结构化程序设计.ppt(105页珍藏版)》请在三一办公上搜索。
1、第三章 C语言的流程控制,本章学习重点:if语句的三种定义格式及使用switch语句的定义格式及使用while、do-while和for循环语句的结构及应用循环语句嵌套结构及流程控制语句的使用break语句和continue语句及goto语句的使用,本章目录,第五讲选择结构第六讲循环结构第七讲循环语句的嵌套和流程转向语句 本章小结,结束,结构体程序设计有三种基本结构:顺序结构 选择结构循环结构,返回到本章目录,以下四个流程图结构分别为顺序结构、选择结构、当型循环结构、直到型循环结构,返回到本章目录,第五讲 选择结构,一、基本if语句二、标准if语句三、复合if语句四、if语句的嵌套五、swit
2、ch语句,返回到本章目录,思考题3-1:从键盘上输入一个整数,如果大于等于零输出“Positive Number”(正数),如果小于零输出“Negative Number”(负数)(要求用基本的if语句实现)。(一)程序分析(1)从键盘输入一个整数;(2)判断该数是大于等于零或者小于零;(3)输出对应结果。,一、基本if语句,返回到本章目录,(二)编写程序代码main()int x;/*定义整型变量x*/printf(input x:);/*提示从键盘输入一个数*/scanf(%d,/*如果小于0,输出结果为负数*/,返回到本章目录,(三)调试运行结果输入x的值为5,输出“5 is Posit
3、ive Number!”;再次运行程序,输入一个x的值为-3,输出“-3 is Negative Number!”。程序运行结果如下:,返回到本章目录,1)基本if语句定义格式为if(表达式)语句;例如:if(ab)t=a;a=b;b=t;其中,if是C语言的关键字,表达式两侧的圆括号不可少,一条“语句”称为if子句。如果在if子句中需要多条语句,则应该使用花括号把一组语句括起来组成复合语句,这样在语法上仍满足“一条语句”的要求。,1.if语句基本形式,if(表达式)语句;,返回到本章目录,2)if语句的执行过程 首先计算紧跟在if后面一对圆括号中表达式的值,如果表达式的值为非零(“真”),则
4、执行其后的if子句,然后去执行if语句后的下一个语句。如果表达式的值为零(“假”),则跳过if 子句,直接执行if语句后的下一个语句。,返回到本章目录,3)基本if语句的流程示意图 流程图如图3-2所示。表达式假(=0),真(0)语句 图3-2 基本if语句的流程示意图,返回到本章目录,4)说明 if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号将需要执行的多个语句括起,形成一个复合语句。if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。,返回到本章目录,二、标准if语句,思考题3-2:从键盘上输入
5、一个数,如果大于等于零输出“Positive Number”(正数),否则输出“Negative Number”(负数)(要求用标准if语句实现)。(一)程序分析(1)从键盘输入一个数;(2)判断该数是否大于等于零;(3)输出结果。,返回到本章目录,二、标准if语句,思考题3-2:从键盘上输入一个数,如果大于等于零输出“Positive Number”(正数),否则输出“Negative Number”(负数)(要求用标准if语句实现)。(一)程序分析(1)从键盘输入一个数;(2)判断该数是否大于等于零;(3)输出结果。,返回到本章目录,(二)编写程序代码main()int x;printf(
6、input x:);scanf(%d,/*输出x小于0的结果为负数*/,返回到本章目录,(三)调试运行结果 输入x的值为5,输出“5 is Positive Number!”;再次运行程序,输入一个x的值为-3,输出“-3 is Negative Number!”。程序运行结果如下:,返回到本章目录,1)标准if语句定义格式例如:if(a!=0)printf(a!=0n);else printf(a=0n);,2.if语句标准形式,if(表达式)语句1;else 语句2;,返回到本章目录,在这里,“语句1”称为if子句,“语句2”称为else 子句,这些子句只允许是一条语句,若需要多条语句时,
7、则应该使用花括号把这些语句括起来组成复合语句。注意,else不是一条独立的语句,它只是if 语句的一部分,不允许有这样的语句:else printf(*);在程序中else必须与if配对,共同组成一条if-else语句。,返回到本章目录,2)if-else语句的执行过程 首先计算紧跟在if 后面一对圆括号内表达式的值。如果表达式的值为非零,执行if子句,然后跳过 else子句,去执行if语句后的下一条语句;如果表达式的值为零,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。3)说明 if后面圆括号中的表达式,可以是任意合法的C语言表达式(如:逻辑表达式、关系表达式、算术表达
8、式、赋值表达式等),也可以是任意类型的数据(如:整型、实型、字符型等)。,返回到本章目录,无论是否有else子句,if子句中如果只有一条语句,则此语句后的分号不能省略。例如:if(x!=0)printf(%f,x);else printf(%f,y);,返回到本章目录,4)基本if语句的流程示意图,返回到本章目录,三、复合if语句,思考题3-3:从键盘上输入一个整数,如果大于零输出“Positive Number”(正数),如果小于零输出“Negative Number”(负数),否则输出“Zero”(零)。(一)程序分析(1)从键盘输入一个整数;(2)判断该数是大于零、小于零还是等于零;(3
9、)输出结果。,返回到本章目录,流程图,返回到本章目录,(二)编写程序代码main()int x;printf(input x:);scanf(%d,/*否则输出结果为零*/,返回到本章目录,(三)调试运行结果 输入x的值为5,输出“5 is Positive Number!”;再次运行程序,输入一个x的值为-3,输出“-3 is Negative Number!”;第三次运行程序,输入x的值为0,输出“0 is Zero!”。程序运行结果如下:,返回到本章目录,1)复合if语句定义格式,3.if语句复合形式,if(表达式1)语句1;else if(表达式2)语句2;else if(表达式n)语
10、句n;else 语句n+1;,返回到本章目录,2)复合if语句执行过程 首先计算表达式1的值,若表达式的值为“真”(表达式具有非0值),则执行语句1;否则继续判断表达式2,若表达式的值为“真”,则执行语句2;否则继续判断下一个条件,直到最后前面n个条件都不成立时,执行else后面的语句n+1。,返回到本章目录,3)复合if语句的流程图,返回到本章目录,四、if语句的嵌套,4.if语句的嵌套,1)复合if语句定义格式在if语句中,语句1和语句2本身也可以是if语句,此时称为if语句的嵌套。2)嵌套的格式if语句可以内嵌在if子句中,又可以内嵌在else子句中。,返回到本章目录,例如:,if()i
11、f()语句1;else 内嵌if 语句2;else if()语句3;else 内嵌if 语句4;,返回到本章目录,3)嵌套的说明 以上形式的嵌套if语句执行过程可以这样理解:从上向下逐行对if后的表达式进行检测。当某一个表达式的值为非零时,就执行与此有关子句中的语句,阶梯形中的其余部分被越过去。如果所有表达式的值都为零,则执行最后的else子句;此时,如果程序中最内层的if语句没有else子句,即没有最后的那个else子句,那么将不进行任何操作。注意:C语言的语法规定,else子句总是与前面最近的未曾配对(不带else)的if组成一对。,返回到本章目录,五、switch语句,思考题3-4:设计
12、一个程序,用switch语句实现由键盘输入一个成绩,输出该成绩的等级。其中A代表90分以上,B代表8089,C代表7079,D代表6069,E代表60分以下。如果成绩不在0-100之间则输出错误信息。(一)程序分析(1)定义score变量,存放由键盘输入的学生成绩;(2)输入学生成绩给变量score;(3)根据学生score整除10得到其十位上的数字,确定该成绩范围,并输出其等级。,返回到本章目录,(二)编写程序代码,main()float score;printf(nPlease input a score:);scanf(%f,返回到本章目录,(三)调试运行结果 程序运行结果分析:运行6次
13、程序,每次输入一个区间的成绩(其中最后一次输入一个错误成绩,不在0-100之间)。程序运行结果如下:,返回到本章目录,5switch语句(多分支选择语句),1)switch语句定义格式,switch(表达式)case 常量表达式1:语句组1;break;case 常量表达式2:语句组2;break;case 常量表达式n:语句组n;break;default:语句组n+1;break;,返回到本章目录,2)说明 switch语句又称为开关语句,语句的执行过程如下:程序执行至switch语句首先对括号内的表达式进行计算,然后按顺序找出与常量表达式值相匹配的case,以此作为入口,执行case语句
14、后面的各个语句组,直到遇到break或switch语句的右花括号终止语句。如果没有任何一个case能与表达式值相匹配,则执行default语句后的语句组,若default及其后语句组省略,则不执行switch中任何语句组,而继续执行下面的程序。,返回到本章目录,3)使用switch语句注意的问题(1)default语句及后面语句组可以省略。(2)switch后圆括号内表达式可以是整数表达式、字符表达式或枚举表达式。case后面是整数或字符,也可以是不含变量和函数的常量表达式。同一个switch语句中的case后的值不能相同。(3)case及后语句和default及后语句出现次序可以任意。(4)
15、case与其后的常量表达式之间要有空格,否则系统会识别不出该常量表达式。(5)执行完一个case语句后,程序自动转到后面的语句执行,直到遇到break或switch语句的右花括号终止语句。,返回到本章目录,【练习3-1】从键盘上输入一个成绩(0100之间),输出这个分数对应的等级。其中A代表90分以上,B代表8089,C代表7079,D代表6069,E代表60分以下,如果成绩不在0100之间则输出错误信息。要求用复合if语句来实现。解:源程序如下:main()float score;printf(nPlease input a score:);scanf(%f,if(score=0&score
16、=100),练一练,返回到本章目录,if(score=90)printf(n%.2f class is A!,score);else if(score=80)printf(n%.2f class is B!,score);else if(score=70)printf(n%.2f class is C!,score);else if(score=60)printf(n%.2f class is D!,score);else printf(n%.2f class is E!,score);else printf(nThe score is wrong!);,返回到本章目录,程序运行结果分析:运行
17、6次程序,每次输入一个区间的成绩(其中最后一次输入一个错误成绩,不在0100之间)。程序运行结果如下:,返回到本章目录,【练习3-2】从键盘上输入一个数学四则运算表达式(a+b、a-b、a*b或a/b),要求计算出该表达式的值。解:分析题意,应该设两个整型变量a和b,再设一个存放运算符的字符型变量ch,然后根据ch的值来进行相应的运算,将结果输出即可。程序如下:main()int a,b;char ch;printf(nPlease input a formula(a+b,a-b,a*b,a/b):);scanf(%d%c%d,返回到本章目录,switch(ch)case+:printf(%d
18、+%d=%d,a,b,a+b);break;case-:printf(%d-%d=%d,a,b,a-b);break;case*:printf(%d*%d=%d,a,b,a*b);break;case/:printf(%d/%d=%.2f,a,b,(float)a/b);break;/*因为结果为小数,所以要将a强制转换成小数形式,结果才正确*/default:printf(the formula is wrong!);,返回到本章目录,程序运行5次,分别输入4个表达式:4+5、4-5、4*5、4/5和4&5(错误的表达式),程序运行结果如下:,返回到本章目录,【练习3-3】编写一程序,从键盘
19、上输入一个年份year(4位十进制数),判断其是否为闰年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。解:闰年是年份能被4整除但不能被100整除的数,或是能被400整除的数。我们设年份为year,这样就构成了一个判断闰年的条件表达式如下:(year%4=0&year%100!=0)|(year%400=0),返回到本章目录,源程序如下:main()int year;printf(Please input the year:);scanf(%d,返回到本章目录,第一次输入年份“1998”,输出结果“1998 is not a leap year.”,第二次输入年份“2000
20、”,输出结果“2000 is a leap year.”。程序运行结果如下:,返回到本章目录,本 讲 小 结,C语言提供了可以进行逻辑判断的选择语句,由选择语句构成的选择结构将根据逻辑判断的结果决定程序的不同流程。选择结构是结构化程序设计的三种基本结构之一。通过本节学习,掌握if语句的三种格式,理解if语句的嵌套,掌握switch语句基本格式及解决问题的方法。,返回到本章目录,第六讲 循环结构,一、while语句二、do-while语句三、for循环语句,返回到本章目录,一、while语句,思考题3-5:设计一个程序,用while循环语句实现1100自然数的和。(一)程序分析 这是一个求100
21、个数的累加和问题。加数从1变化到100,可以看到加数是有规律变化的,后一个加数比前一个加数增1,因此可以在循环体中使用一个整型变量i,每循环一次使i增1,一直循环到i的值超过100,用这个办法就解决了所需的加数问题。但是要特别注意的是变量i需要有一个正确的初值,这里初值应当设为1。,返回到本章目录,设用一个变量sum存放这100个数的和值,sum的初值为0,可以先求0加1(i的初值为1)的和并将其放在sum中,然后把sum中的数加上2再存放在sum中,依次类推,sum累加的过程要放在循环中,由计算机判断所加的数是否已经超过100,加数则放在变量i中,并在循环过程中每一次增1。,返回到本章目录,
22、(二)编写程序代码main()int sum=0,i=1;/*sum的初值为0*/while(i=100)/*当i小于或等于100时执行循环体*/sum+=i;i+;/*在循环体中累加一次,并将i值自增1*/printf(1+2+100=%dn,sum);(三)调试运行结果,返回到本章目录,1while循环语句,1)while语句基本形式如下:,while(表达式)循环体,while是C语言的关键字。while后圆括号中的表达式,可以是C语言中任意合法的表达式,由它来控制循环体是否执行。在语法上,要求循环体可以是一条简单的可执行语句;若循环体内需要多个语句,应该用大括号括起来,组成复合语句。,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 结构 程序设计

链接地址:https://www.31ppt.com/p-5426478.html