程序设计基础课件第05章 程序的基本控制结构.pptx
《程序设计基础课件第05章 程序的基本控制结构.pptx》由会员分享,可在线阅读,更多相关《程序设计基础课件第05章 程序的基本控制结构.pptx(50页珍藏版)》请在汇文网上搜索。
1、第 5 章 程序的基本控制结构v程序设计基础从问题到程序(第3版)本章基本内容选择结构 循环结构 其他控制语句顺序结构 任何程序都可以由顺序、选择和循环这三种基本控制结构组成,因此,灵活掌握基本控制结构是编写程序的重要基础!【引例5.1】四则运算【问题】计算两个整数的和、差、积、商。【想法】依照四则运算的规则,将两个整数进行加、减、乘、除运算。【算法】设变量x和y表示两个整数,依次计算并输出x和y的和、差、积、商,算法如下:1.计算并输出x+y;2.计算并输出x-y;3.计算并输出x*y;4.计算并输出x/y;【程序】算法需要顺序执行每一条指令,可以采用顺序结构实现。程序如下:#include
2、 int main()int x,y;printf(请输入两个整数:);scanf(%d%d,&x,&y);printf(%d与%d的和是%dt,x,y,x+y);printf(%d与%d的差是%dn,x,y,x-y);printf(%d与%d的积是%dt,x,y,x*y);printf(%d与%d的商是%5.2fn,x,y,(double)x/y);return 0;程序中涉及到新的语法?【引例5.1】四则运算 复合语句:由一对花括号括起来的若干条语句组成。从逻辑上讲,复合语句是一个整体,可以将它看成是一条语句,可以放在能够使用语句的任何地方。【语法】复合语句的一般形式:语句语句1 语句语句
3、2 语句语句n没有分号没有分号可以是任何语句可以是任何语句【语义】依次执行花括号中的每条语句。语句语句1语句语句2语句语句n5.1 顺序结构复合语句实现顺序结构例5.1 设计复合语句实现交换两个变量的值。temp=x;x=y;y=temp;temp1020 xy1020 xy2020 xytemp10temp10(a)第一步第一步temp=x (b)第二步第二步x=y (c)第三步第三步y=temp5.1 顺序结构复合语句实现顺序结构102010【问题】给定一个两位数,将这个两位数的个位和十位颠倒得到其逆值(也称逆向值),例如85的逆值是58。【想法】设两位数的个位数字是x,十位数字为y,则该
4、数的逆值为x10+y。需要分离出这个两位数的个位和十位,分离的方法是整除和求余,例如,通过对85除10 取整数部分得到十位数字8,通过对85除10取余数部分得到个位数字5。【算法】设变量num表示一个两位数,变量x表示整数num的个位数字,变量y表示整数num的十位数字,变量numDevo表示整数num的逆值,算法如下:step1:x=num%10;step2:y=num/10;step3:numDevo=x*10+y;step4:输出输出numDevo;程序设计实例整数的逆值【程序】算法需要顺序执行每一条指令,可以采用顺序结构实现。程序如下:#include int main()int nu
5、m,x,y,numDevo;printf(请输入一个两位数:请输入一个两位数:);scanf(%d,&num);x=num%10;y=num/10;numDevo=x*10+y;printf(%2d的逆值为的逆值为:%2dn,num,numDevo);return 0;程序设计实例整数的逆值【引例5.2】奇偶判定【问题】判断给定整数的奇偶性。【想法】将整数除以2,若余数等于0,则该整数是偶数,否则是奇数。【算法】设变量x表示一个整数,用求余运算判断其奇偶性。算法如下:1.为变量x赋值;2.如果x%2的结果等于0,则x是偶数;否则x是奇数;【程序】首先用变量x接收用户从键盘输入的整数,然后根据求
6、余运算的结果得出其奇偶性。程序如下:#include int main()int x;printf(请输入一个整数:请输入一个整数:);scanf(%d,&x);if(x%2=0)printf(%d是偶数是偶数n,x);else printf(%d是奇数是奇数n,x);return 0;【引例5.2】奇偶判定程序中涉及到新的语法?逻辑值控制的选择结构1.单分支的选择结构,一般由 if 语句实现。【语法】if 语句的一般形式如下:if(表达式表达式)语句语句判断条件判断条件必须有括号必须有括号【语义】计算表达式的值;当表达式的值为真时执行语句;否则顺序执行if 语句的下一条语句。表达式表达式语句
7、语句TF5.2 选择结构2.双分支的选择结构,一般由if-else语句实现。【语义】计算表达式的值;当表达式的值为真时执行语句1;否则执行语句2。if(表达式表达式)语句语句1else语句语句2判断条件判断条件表达式成立执行表达式成立执行表达式不成立执行表达式不成立执行必须有括号必须有括号表达式表达式 语句语句1TF 语句语句25.2 选择结构逻辑值控制的选择结构【语法】if-else语句的一般形式如下:例5.4 求两个整数中的较大者。解1:设整数 x 和 y 的较大值为max,可以先假定 x 较大,再判断max是否小于 y,如果max小于 y,则较大值为y,否则较大值仍为max。解解1:ma
8、x=x;if(max=y)max=x;else max=y;5.2 选择结构逻辑值控制的选择结构解2:设整数 x 和 y 的较大值为max,可以直接将 x 和 y 进行比较,若x y,则较大值为 x,否则,较大值为y。条件表达式有括号!从语法上看,分支结构中的语句可以是任何语句,如果又是一个分支语句,则构成分支结构的嵌套。3.分支结构的嵌套if(x y)if(y z)x=0;else x=1;if(x y)if(y z)x=0;else x=1;5.2 选择结构逻辑值控制的选择结构 如果嵌套在if语句中的语句是if-else语句,或嵌套在if-else语句中的语句是if语句,则会出现多个if和
9、多个else重叠并且个数不等的情况,这时要注意if和else的配对问题。else与其前面最近的尚未配对的if相配对。例5.5 编写程序实现数学中的符号函数:sign(x)=1,当当x 0 0,当当x=0-1,当当x 0)sign=1;else if(x 0)sign=-1;else /*注意嵌套注意嵌套if-else语句的缩进格式语句的缩进格式*/sign=0;5.2 选择结构逻辑值控制的选择结构 多分支的选择结构,由switch语句实现,switch语句也称为开关语句或选择语句。【语法】switch语句的一般形式如下:switch(表达式表达式)case 常量表达式常量表达式1:语句语句1
10、break;case 常量表达式常量表达式2:语句语句2 break;case 常量表达式常量表达式n:语句语句n break;default:语句语句n+1 break;算术表达式算术表达式相当于语句标号相当于语句标号没有分号没有分号5.2 选择结构算术值控制的选择结构【语义】当表达式的值与某一个常量表达式的值相等时,顺序执行该case后面的语句。值值=语句语句n值值1语句语句1计算表达式的值计算表达式的值值值2语句语句2值值nbreakbreakbreak语句语句n+1defaultbreak5.2 选择结构算术值控制的选择结构例5.6 将百分制成绩转换为对应的等级制成绩,转换规则为:10
11、090:A;8980:B;7970:C;6960:D;590:E 解:设百分制成绩为score,则score是0,100区间的一个实数,注意到十位数字决定转换等级,因此将score转换为整数再整除10。设字符型变量grade表示等级制成绩,语句如下:switch(int)score/10)/*switch语句表达式的运算结果通常为整型语句表达式的运算结果通常为整型*/case 10:/*case 10和和case 9共用一个程序段共用一个程序段*/case 9:grade=A;break;case 8:grade=B;break;case 7:grade=C;break;case 6:grad
12、e=D;break;default:grade=E;break;5.2 选择结构算术值控制的选择结构 step1:x1=x%10;y=x/10;step2:x2=y%10;step3:x3=y/10;step4:如果x1*x1*x1+x2*x2*x2+x3*x3*x3等于x,则该数是水仙花数;否则该数不是水仙花数;【问题】所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如:153=13+53+33,则153是一个水仙花数。要求从键盘上输入一个三位数,判断该数是否是一个水仙花数。程序设计实例1水仙花数【算法】设变量x存储一个三位数,变量x1、x2和x3分别存储x的个位、十位和百位数
13、字,算法如下:【想法】首先将这个三位数的个位、十位和百位分离出来,然后判断各位数字的立方和是否等于该数。【程序】首先用变量x接收从键盘输入的三位正整数,分离出个位、十位和百位数字,再用if语句实现判断,程序如下:#include int main()int x,x1,x2,x3,y;printf(请输入一个三位整数:);scanf(%d,&x);x1=x%10;y=x/10;x2=y%10;x3=y/10;if(x1*x1*x1+x2*x2*x2+x3*x3*x3=x)printf(%d是水仙花数n,x);else printf(%d不是水仙花数n,x);return 0;程序设计实例1水仙花
14、数 1.为变量yy和mm赋值;2.根据mm确定天数,有下列三种情况:(1)mm是1、3、5、7、8、10、12,则days=31;(2)mm是4、6、9、11,则days=30;(3)mm是2,若yy年不是闰年,则days=28;否则days=29;3.输出days;【问题】输入某年某月,确定该月有多少天。【算法】设变量days表示某年某月的天数,算法如下:【想法】设变量yy、mm表示某年某月,根据月份确定天数,需要判断闰年的情况。程序设计实例2某年某月的某一天【程序】用switch语句为某月的天数days赋值,注意多个case子句可以共用一段程序。程序如下:#include int main
15、()int yy,mm,days;printf(请输入日期(年 月):);scanf(%d%d,&yy,&mm);switch(mm)case 1:case 3:case 5:case 7:case 8:case 10:case 12:days=31;break;case 4:case 6:case 9:case 11:days=30;break;case 2:if(yy%4=0&yy%100!=0)|(yy%400=0)days=29;else days=28;break;printf(%d年%d月有%d天n,yy,mm,days);return 0;程序设计实例2某年某月的某一天【引例5.
16、3】偶数和【问题】计算100以内所有偶数的和。【想法】设变量sum作为累加器,依次将2、4、100累加到sum中。【算法】将变量sum初始化为0,循环变量i的初值为2、终值为100、步长为2,重复执行加法操作,算法如下:1.初始化累加器sum=0;2.循环变量i从2100重复执行下述操作:2.1 sum=sum+i;2.2 i=i+2;3.输出sum;【程序】循环变量具有确定的初值、终值和循环步长,用for循环实现。程序如下:#include int main()int sum=0,i;/*sum存储累加和,i是循环变量*/for(i=2;i=100;i=i+2)sum=sum+i;print
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载共享资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计基础课件第05章 程序的基本控制结构 程序设计 基础 课件 05 程序 基本 控制 结构
