顺序选择结构课件.pptx
第四章 程序控制结构和 结构化程序设计,编程步骤:,4.1算法及其描述 P74,算法:问题的精确解决方案算法的内容:算法描述的方式:文字描述、流程图和N-S流程图,需要完成的动作动作执行的顺序,例:从键盘中输入100个整数,对其中的正整数进行累加,最后输出结果。算法描述(自然语言)输入一个整数;如果该数0 ,累加它;如果100个数没有输入完,转步骤1;输入完100个数后,输出累加和。,算法描述(自然语言) P74,流程图:使用特殊的图形符号来描述算法。,算法描述(流程图) P76,起止框( )、处理框( )、输入/输出框( )和判断框( )表示所要执行的动作。,流程线( )表示动作执行的顺序。,算法描述(流程图) P76,算法描述(自然语言)输入一个整数;如果该数0 ,累加它;如果100个数没有输入完,转步骤1;输入完100个数后,输出累加和。,开始,该数0,输入完100个数,累加,结束,Y,N,Y,N,输入一个整数,输出累加和,C语言的所有语句必须以分号;结束C语言的五类语句:,4.2 C语句 P77-78,函数调用语句 表达式语句 空语句 复合语句 程序结构控制语句,1. 函数调用语句 scanf(“d”,,C语句概述,4. 复合语句 P78 statement 1; statement 2; statement n; ,C语句概述,第四章,5. 程序结构控制语句 条件控制 循环控制,顺序结构分支结构(也叫选择结构)循环结构,4.3 C程序的基本结构 P79,语句 1;语句 2;语句 3; ,4.4 顺序结构 P80,语句1,语句2,语句3,例1:输入任一3位数,逆序输出各位数字。例如输入275,输出572,程序,例2:输入一个字符,输出该字符的ASCII码值,程序,步骤:txxyyt,例3:任意输入2个不同的整数,赋给变量x,y,然后 交换x,y的值,输出交换后的x,y 的值。 例如,输入:x的值为2,y的值为-3 输出:x=-3,y=2,#includemain() int x,y,t; scanf(%d%d,单分支结构:if(条件) 语句;,4.5 选择结构(分支结构) P80,一条语句。如果需要写多条语句,必须在这多条语句外加,构成复合语句,if(3) printf(*);,例4.输入一个字符,如果该字符是小写字母,就将 其变为大写字母,并输出。,#includemain() char ch; ch=getchar(); if(ch=a ,putchar(ch- 32);,给出变量x能整除2的条件x%2=0,双分支结构:if(条件) 语句1;else 语句2;,4.5 选择结构(分支结构) P82,不需要表达式,例5.输入两个整数,输出较大者,#includemain() int x,y; scanf(%d%d,xy,输出x,输出y,非0,0,if(ab&ac),例6:输入3个数,输出其中的最大值,打擂abc,-max,max,max,void main() int a,b,c,max; scanf(“%d%d%d”,多分支结构(if的嵌套语句)if(条件) 语句1; else 语句2;,4.5 选择结构(分支结构),if语句,if语句,例7: y= x+1 (x1) x+2 (1x2) x+3 (2x3) x+4 (x3), 、else中嵌套,if(x1) y=x+1;else if (1x2) y=x+2;else if (2 x3) y=x+3;else y=x+4;,(1=x2)(2= x3),(1=x & x2)(2= x & x3),(x2)(x3),if(exp1)语句1else if(exp2)语句2 else if(expn1)语句n1else 语句n,、 else中嵌套 P85,if(exp1)语句1else if(exp2)语句2 else if(expn1)语句n1else 语句n,N个分支需要多少次比较呢?n个分支需要n1次比较,例8: y= x+1 (x1) x+2 (1x2) x+3 (2x3) x+4 (x3), 、if、else中都嵌套,if(x2) if(x1) y=x+1; else y=x+2;else if(x3) y=x+3; else y=x+4;,if(exp1) if(exp2) 语句1; else 语句2;else if(exp3) 语句3; else statement_4;,、 if、else中都嵌套,else和if的匹配 P87,if(12) printf(a);else if(12) printf(b); else printf(c);else与它前面最近的,没有与别的else匹配过的if匹配,if(12) printf(a); else if(12) printf(b); else printf(c);,if(12) printf(a);else if(12) printf(b); else printf(c);,switch(表达式) case 常量表达式1:语句段1; case 常量表达式2:语句段2; case 常量表达式n:语句段n; default:语句段n1;,switch语句(多分支语句) P88,switch(表达式) case 常量表达式1:语句段1; case 常量表达式2:语句段2; case 常量表达式n:语句段n; default:语句段n1;,#includevoid main() int k; scanf(“%d”, ,#includevoid main() int k; scanf(“%d”, ,#includemain() int k=2; switch(k) case 1:printf(1); case 2:printf(2); case 3:printf(3); break; default:printf(D); break; ,作业,101页8、9题,