C程序设计华中科技大学课件第二章.ppt
《C程序设计华中科技大学课件第二章.ppt》由会员分享,可在线阅读,更多相关《C程序设计华中科技大学课件第二章.ppt(106页珍藏版)》请在三一办公上搜索。
1、C+程序设计,授课教师:李战春,第二章 基本控制结构程序设计,结构化程序设计的特点是任何程序都可由三种基本结构及其组合来描述。本章将介绍C+分支结构和循环结构的设计方法。教学目标:编写选择和循环结构的程序考核方式:要求基本:(1)独立编写并运行2.2、2.3(2)独立编写并运行2.8、2.9、2.10、2.7、2.12 较高要求:独立编写并运行2.5、2.6、2.13、2.15、2.16,利用海伦公式计算三角形面积,输入a=3,b=4,c=5后,结果是多少?,输入a=1,b=1,c=3呢?,为什么?怎么办?,2.1 算法的概念与表示方法,2.1.1 算 法 的 概 念,2.1.3 算 法描述的
2、三种基本结构,2.1.2 算 法 的 表 示,2.1.1 算 法 的 概 念,算法描述的三种基本结构,3 循 环 结 构,1 顺 序 结 构,2 分 支 结 构,算法的基本结构:对算法的理论研究和实践表明,任何算法的描述都可以分解为三种基本结构或它们的组合,这三种基本结构是顺序结构、分支结构和循环结构。,num115;,算法描述的三种基本结构,(1)顺序结构,【例21】求两数之和。,显示结果:35,num220;,sumnum1+num2;,演示算法执行过程,输出sum;,活动图,算法描述的三种基本结构,(2)分支结构,【例22】输入三个数,输出其中的最大数。,x7;,y12;,z10;,if
3、(xy)maxx;else max y;,if(zmax)maxz;,输出max;,显示结果:12,演示算法执行过程,2.2.1 if 语句,if语句基本格式:1、if(表达式)语句1;2、if(表达式)语句1;else语句2;,【例2.4】输入一个年份,判断是否闰年。,【例2.5】从键盘上输入三个整数,输出其中的最大数。,2.2 分支结构程序设计,if 语句【例24】,【例24】输入一个年份,判断是否闰年。算法分析:假定年份为year,闰年的条件是:year%4=0,分析:读入三个数,先求出两个数中较大者,再将该大数与第三个数比较,求出最大数。int main()int a,b,c,max;
4、coutabc;cout=b)max=a;else max=b;if(cmax)max=c;cout“最大数为:”maxendl;return 0;,if 语句【例25】,【例2.5】从键盘上输入三个整数,输出其中的最大数。,逻辑运算、逻辑表达式,逻辑运算:用于判断分析,运算符包括关系和逻辑运算符。关系运算符:包括:(大于)、(大于等于)、(小于)、(小于等于);=(等于)和!=(不等于)。关系运算符完成两个操作数大小的比较,结果为逻辑值true(真)或false(假)。,逻辑值与整数的对应关系是什么?,逻辑值能参与运算吗?,关系表达式:,例如:a+bc+d/*等同于(a+b)(c+d)*/y
5、=ab/*计算ab的值0或1赋给y*/abc/*等同于(ab)c,先求ab 的值,再将结果0或1与c比较大小*/,由关系运算符连接的表达式。是一种简单的逻辑表达式。值为true或false。,数学式abc,对应的关系表达式为什么?,设有定义 float a=3.2;int b=5;则:3ab/结果是?,其运算过程如下:,a,5,b,3.2,3,T,即1,T即1,逻辑运算符:,包括:!、&和|,语义见下表。,由逻辑运算符连接的表达式,其操作数和运算结果均为逻辑量。操作数可以是表达式,只要其值是逻辑量,如关系表达式。,由于逻辑值和整数之间的对应关系,也允许整型和字符型操作数进行逻辑运算:21&0/
6、逻辑与,21与0,结果?21|0/逻辑或,21或0,结果?!21/逻辑非,21的非,结果?运算结果同样可以作为一个整数参与其他运算。,逻辑表达式:,逻辑表达式计算时,逻辑非优先级最高,关系运算其次,逻辑与和逻辑或最低。,已知:int a=10,b=20,c=30;float x=1.8,y=2.4;,ay|ay)|(a(b-(!c),t1=1,t2=0,t4=0,-,&,t3=0,t5=b,t6=1,|,得整个表达式的值为:,1,嵌套if语句:if 语句中,如果内嵌语句又是if语句。嵌套有两种形式,2.2.2 if 语句的嵌套,【例2.6】用嵌套if语句完成【例2.5】的任务。,/方法1:采用
7、if中嵌套形式int main()int a,b,c,max;coutabc;coutb)if(ac)max=a;/ab且ac else max=c;/ab且ac)max=b;/acelse max=c;/a=b且bccout最大数max=max;return 0;,if 语句【例26】,【例2.6】用嵌套if语句完成【例2.5】的任务。,/方法2:采用else中嵌套形式int main()int a,b,c,max;coutabc;cout=b,if 语句【例26】,【例2.7】某商场购物优惠活动,【例2.8】求一元二次方程的根。,配对关系实例:,【例2.7】某商场优惠活动规定,某种商品单价
8、为80元,一次购买5件以上(包含5件)10件以下(不包含10件)打9折,一次购买10件以上(包含10件)打8折。设计程序根据客户的购买量计 算总价。,算法1、输入购买件数count,设置单价price=80(元)2、根据count值确定折扣率discount;3、实际售价amount=price*count*discount;4、输出amount的值。算法细化:2.1、if(count=5&count=10)discount=0.8;,if 语句【例27】,int main()float price,discount,amount;/单价,折扣,总价 int count;/购买件数 coutp
9、rice;coutcount;if(count5)discount=1;else if(count10)discount=0.9;else discount=0.8;amount=price*count*discount;cout 单价:price endl;cout 购买件数:count t折扣:“discountendl;cout总价:amountendl;return 0;,if 语句【例27】,【例2.8】求一元二次方程ax2+bx+c=0 的根。其中系数a(a0)、b、c的值由键盘输入。分析:输入系数a(a0)、b、c后,令delta=b24ac,结果有三种情况:*若delta=0,
10、方程有两个相同实根;*若delta0,方程有两个不同实根;*若delta0,方程无实根。,if 语句【例28】,#include#include using namespace std;int main()float a,b,c;float delta,x1,x2;coutabc;couta=atb=btc=cendl;delta=b*b-4*a*c;,if 语句【例28】,if(delta=0)cout0)delta=sqrt(delta);x1=(-b+delta)/(2*a);x2=(-b-delta)/(2*a);cout方程有两个不同实根:;coutx1=x1tx2=“x2endl;
11、else cout方程无实根!endl;/delta0return 0;,if 语句【例28】,2.2.3 条件运算符“?:”,三元运算符条件运算符“?:”可以用来简化if语句表达。其构成的表达式格式为:表达式1?表达式2:表达式3例如:int a=6,b=7;min=ab?a:b;/min=6,#include using namespace std;int main()char ch;cout ch;if(ch=A,改写为条件表达式ch=(ch=A,把输入字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。,2.2.4 switch语句,开关语句(swi
12、tch语句)用来实现多选一:switch(表达式)case 常量表达式:语句序列break;case 常量表达式n:语句序列nbreak;default:语句序列,条件表达式,整型字符型布尔型枚举型,取值为常量的表达式,switch(表达式)case 常量表达式 1:语句 1 case 常量表达式 2:语句 2 case 常量表达式 n:语句 n default:语句 n+1,注:表达式类型为非浮点型 各常量表达式类型要与之匹配 各常量表达式要求各不相等,语句标号,2.2.4 switch语句,根据一个整型表达式的值决定程序分支,执行流程,2.2.4 switch语句,#include usi
13、ng namespace std;int main()char grade;cout grade;switch(grade)case a:cout 85_100 n;case b:cout 70_84 n;case c:cout 60_69 n;case d:cout 60 n;default:cout error n;return 0;,观察不同输入时的输出结果,switch语句,例题根据考试成绩的等级打印出百分制分数段。,#include using namespace std;int main()char grade;cout grade;switch(grade)case a:cout
14、 85_100 n;case b:cout 70_84 n;case c:cout 60_69 n;case d:cout 60 n;default:cout error n;return 0;,2.1.2 switch 语句,例题 根据考试成绩的等级打印出百分制分数段。,switch语句,#include using namespace std;int main()char grade;cout grade;switch(grade)case a:cout 85_100 n;case b:cout 70_84 n;case c:cout 60_69 n;case d:cout 60 n;de
15、fault:cout error n;return 0;,2.1.2 switch 语句,例题 根据考试成绩的等级打印出百分制分数段。,switch语句,例题 根据考试成绩的等级打印出百分制分数段。,#include using namespace std;int main()char grade;cout grade;switch(grade)case a:cout 85_100 n;case b:cout 70_84 n;case c:cout 60_69 n;case d:cout 60 n;default:cout error n;return 0;,switch语句,#include
16、 int main()char grade;cout grade;switch(grade)case a:cout 85_100 n;break;case b:cout 70_84 n;break;case c:cout 60_69 n;break;case d:cout 60 n;break;default:cout error n;return 0;,跳出switch语句,switch语句,例题 根据考试成绩的等级打印出百分制分数段。,例题 根据考试成绩的等级打印出百分制分数段。,#include int main()char grade;cout grade;switch(grade)c
17、ase a:cout 85_100 n;break;case b:cout 70_84 n;break;case c:cout 60_69 n;break;case d:cout 60 n;break;default:cout error n;return 0;,switch语句,讨论:1)csae 和 default 仅起语句标号作用,不能控制程序流程2)一旦选中一个case分支后,将继续往下顺序执行语句序列3)添加 break 语句可以跳出 switch 语句体,达到控制流程作用,根据以上特点,可以写出多个 case 共执行一个语句的形式,2.1.2 switch 语句,2.2.4 swi
18、tch语句,例 根据考试成绩的等级打印出百分制分数,允许输入大写或小写字母。,#include int main()char grade;cout grade;switch(grade)case a:case A:cout 85_100 n;break;case b:case B:cout 70_84 n;break;case c:case C:cout 60_69 n;break;case d:case D:cout 60 n;break;default:cout error n;retrun 0;,a 或 A 共同执行一个语句,switch语句,if 语句switch 语句 形成分支控制流
19、程 不形成程序控制流程 用于复杂条件判断 表达式的值为数值集合时作多分支 控制,可读性较好,与 if 语句比较:,2.2.4 switch语句,【例2.10】设计一个计算器程序,实现加、减、乘、除运算。分析:读入两个操作数和运算符,根据运算符完成相应运算。#include using namespace std;int main()float num1,num2;char op;coutnum1opnum2;switch(op)case+:coutnum1opnum2=num1+num2endl;break;case-:coutnum1opnum2=num1-num2endl;break;ca
20、se*:coutnum1opnum2=num1*num2endl;break;case/:coutnum1opnum2=num1/num2endl;break;default:coutop是无效运算符!;return 0;,循环结构,【例23】求4个整数的和。,显示结果:60,演示算法执行过程,12,3,14,26,2,16,42,1,18,60,0,count4;/整数个数sum0;/累加和的初值while(count0)x输入一个整数;sumsum+x;countcount-1;输出sum;,循环控制语句是基本流程控制语句之一。C+提供三种循环语句:,2.3.1 while语句,2.3.4
21、 循环的嵌套,2.3.3 for语句,2.3.2 do-while 语句,2.3 循环结构程序设计,注意:1)循环开始前对循环条件进行初始化;2)在循环体语句中要包含修改循环条件的语句,否则循环将不能终止而陷入死循环。,2.3.1 while语句,while语句也称为当循环,语句格式为:while(表达式)循环体语句;,2.3.2 do-while 语句,do-while语句称为直到循环,格式为:do 循环体语句;while(表达式);,2.3.3 for 语句,for循环语句的格式for(表达式1;表达式2;表达式3)循环体语句;,关键字,初始表达式,循环控制逻辑表达式,循环后置表达式,fo
22、r语句、while语句、do/while语句比较:,int i=1,sum=0;/循环初始条件while(i=4)sum+=i;i+;/修改循环条件,int i=1,sum=0;/循环初始条件do sum+=i;i+;/修改循环条件 while(i=4);,int i,sum=0;for(i=1;i=4;i+)sum+=i;/*习惯上:表达式1:循环初始条件;表达式2:循环终止条件;表达式3:修改循环条件*/,#include using namespace std;int main()int i=1,sum=0;while(i=100)sum=sum+i;i+;cout sum=sum en
23、dl;return 0;,想一想:循环条件是什么?循环结束条件是什么?哪一个语句修改循环条件?,一个简单的循环跟踪:求,while语句,例如,用 for 语句的求和式 的程序,#include using namespace std;int main()int i,sum=0;for(i=1;i=100;i+)sum+=i;cout sum=sum endl;return 0;,#include using namespace std;int main()int i=1,sum=0;while(i=100)sum=sum+i;i+;cout sum=sum endl;return 0;,for
24、循环语句,【例2.14】运行结果:0 1 1 2 3 5 8 13 21 34 55 89 144 233 377610 987 1597 2584 4181,【例2.14】设计程序输出Fibonacii数列的前20项,要求每行输出5个数据。,2.3.3 for 语句,Fibonacii数列定义如下:,算法分析:除了第0项和第1项外,每一项都是由类似方法产生,即前两项之和;所以求当前项时,只需要记住前两项;程序不需要为每一项设置专用变量;属递推算法。,For循环语句,1.7 数组与字符数组,数组定义:数组是有限个同类型元素的有序集合,这些元素有一个共同的名字,每个元素以其在数组中的位置区分,位
25、置用下标表示。数组下标的个数称作维数。,int m5;/定义数组m,其中有5个整数,float x3;/数组x中有3个实数,一维数组,一维数组的定义格式:存储类型 数据类型 数组名常量;,一维数组初始化,#include using namespace std;int main()int int_arr4;int_arr0=1;int_arr1=1;int_arr2=2;int_arr3=int_arr1+int_arr2;coutint_arr3n;return 0;,【例1.2】使用数组的简单例子,Fibonacii数列定义如下:,For循环语句,(1)定义数组(2)使用数组元素循环求解,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 华中科技大学 课件 第二
链接地址:https://www.31ppt.com/p-6503614.html