您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > C语言4分支结构课件
(C语言程序设计)第4章选择型程序设计1第4章选择型程序设计(C语言程序设计)第4章选择型程序设计2§4.1程序的灵魂——算法算法(algorithm):计算机求解某一问题而采用的具体方法、步骤。两大类计算机算法:数值运算算法、非数值运算算法(求数值解、成熟)(事务管理、广泛)算法特征:1.有穷性2.确定性3.输入4.输出5.有效性著名计算机科学家沃思(NikiklausWirth)公式:数据结构+算法=程序描述数据的类型、组织结构描述对数据的操作步骤算法的概念(C语言程序设计)第4章选择型程序设计3(1)带序号的自然语言描述(易懂但不直观,不严格)(2)流程图:灵活、自由、形象、直观,可表示任何算法输入/输出处理判断开始/结束连接符数据流(3)N-S图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤都写在一个大矩形框里(描述简单,符合结构化的思想)(4)伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法(方便、易懂、便于向计算机语言过渡)AAPAPPTFAB算法的表示B(C语言程序设计)第4章选择型程序设计4例4-1求1×2×3×4×5分析:1×2=2;2×3=6;6×4=24;24×5=120设置p为被乘数,存放结果;i为乘数,存放每个数据;S1:使p=1;S2:使i=1;S3:p×i=p;S4:i+1=iS5:若i=5,执行S3;否则算法结束。语言描述:首先设置两个变量并对其初始化,其中p为结果变量,赋初值为1;i为数据变量,赋初值为1;计算p×i,将结果放入p中,p代表前i项连乘积;然后使i在原来基础上加1;对i进行判断,如果i=5,则继续进行累乘运算,即返回S3,否则,停止。即算法结束。算法的自然语言描述(C语言程序设计)第4章选择型程序设计5例4-2有50个学生,要求将他们之中成绩在80分以上者打印出来。分析:逐一将每个同学的成绩与80分进行比较,符合条件即打印。设:n表示学生学号,n1表示第一个学生学号;ni表示第i个学生学号;g表示学生成绩,g1表示第一个学生成绩,gi表示第i个学生成绩,使用gi与80进行判断。S1:1=i;S2:若gi=80,则打印ni和gi,否则不打印;S3:i+1=i;S4:若i=50,执行S2;否则算法结束。算法的自然语言描述(C语言程序设计)第4章选择型程序设计6流程图:灵活、自由、形象、直观,可表示任何算法输入/输出处理判断开始/结束连接符数据流算法的流程图描述3211123(C语言程序设计)第4章选择型程序设计7•例4-3求1+2+3+4+5开始0=p1=nP+n=pn+1=nn=5结束YNS1:使p=0;S2:使n=1;S3:使p=p+n;p为前面数据相加和;S4:使n的值加1;S5:如果n小于等于5,执行S3;否则算法结束。算法的流程图描述(C语言程序设计)第4章选择型程序设计8•例4-4有50个学生,要求将他们之中成绩在80分以上者打印出来。S1:1=i;S2:输入ni,gi;S2:若gi=80,则打印ni和gi,否则不打印;S3:i+1=i;S4:若i=50,执行S2;否则算法结束。ni,gi为第i个学生的学号和成绩开始1=i输入nigigi≥80打印ni,gii+1=ii50结束YNNY算法的流程图描述(C语言程序设计)第4章选择型程序设计9N-S图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤,都写在一个大矩形框里AAPAPPTFABx0y=2y=1成立不成立p+n=pN=N+1当n=5时i+1=i直到i50时算法的N-S图描述B(C语言程序设计)第4章选择型程序设计10伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法(方便、易懂、便于向计算机语言过渡)基本结构:begin初始化;执行语句1;……执行语句n;end可以写文字,也可以写简易代码算法的伪代码描述(C语言程序设计)第4章选择型程序设计11§4.2C语言的语句C语句指令语句非指令语句流程控制语句表达式语句数据定义语句(inta;)编译预处理宏定义(#define)文件包含(#include)条件编译(#ifdef#else#endif)赋值语句(i=1;)函数调用语句(putchar(‘c’);)逗号语句(++a,++b;)空语句(;)判断语句(if,switch)循环语句(for,while,do…while)转移控制语句(break;continue,return;goto)复合语句(由一对花括号括起来的一组语句,如:{inta;a=1;printf(“%d”,a);})(C语言程序设计)第4章选择型程序设计12形式二:格式:if(expression){语句组1;}else{语句组2;}执行过程:if语句的三种形式形式一:格式:if(expression){语句组1;}执行过程:exprstatement非0=0例:if(xy)printf(“%d”,x);exprstatement1statement2非0=0例:if(xy)max=x;elsemax=y;(1)if语句中的“表达式”必须用“(”和“)”括起来。(2)else子句是if语句的一部分,必须与if配对使用,不能单独使用。(3)当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。例:if(xy){printf(“最大值为:”);printf(“%d\n”,x);}else{printf(“最大值为:”);printf(“%d\n”,y);}§4.3if语句(C语言程序设计)第4章选择型程序设计13#includestdio.hmain(){intx,y;printf(Enteraninteger:);scanf(%d,&x);y=x;if(y0)y=-y;printf(\ninteger:%d---absolutevalue:%d\n,x,y);}例4-7求一个数的绝对值运行:Enteraninteger:-12integer:-12---absolutevalue:12运行:Enteraninteger:12integer:12---absolutevalue:12(C语言程序设计)第4章选择型程序设计14#includestdio.hmain(){inta,b;printf(Enterintegera:);scanf(%d,&a);printf(Enterintegerb:);scanf(%d,&b);if(a==b)printf(a==b\n);elseprintf(a!=b\n);}例2输入两个整数并判断两数相等否运行:Enterintegera:12Enterintegerb:12a==b运行:Enterintegera:12Enterintegerb:9a!=b(C语言程序设计)第4章选择型程序设计15expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0(1)if语句允许嵌套:所谓if语句的嵌套是指,在“语句组1”或“语句组2”中又包含有if语句的情况。(2)if语句嵌套时,else子句与if的匹配原则:与在它上面、距它最近、且尚未匹配的if配对。书写时注意形成层次;(3)为明确匹配关系,避免匹配错误,强烈建议:将内嵌的if语句,一律用花括号括起来。形式三:格式:if(expr1){语句组1;}elseif(expr2){语句组2;}elseif(expr3){语句组3;}……[else{语句组n;}]执行过程:(C语言程序设计)第4章选择型程序设计16else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...例:if(salary1000)index=0.4;elseif(salary800)index=0.3;elseif(salary600)index=0.2;elseif(salary400)index=0.1;elseindex=0;if…else配对原则例:if(salary1000)index=0.4;elseif(salary800)index=0.3;elseif(salary600)index=0.2;elseif(salary400)index=0.1;elseindex=0;(C语言程序设计)第4章选择型程序设计17例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);实现if~else正确配对方法:加{}输入a=1,b=1,c=3结果输出为:a!=b(C语言程序设计)第4章选择型程序设计18如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a’)printf(“%d”,’a’);说明:if后面的表达式类型任意if….else…相匹配例考虑下面程序的输出结果:#includestdio.hmain(){intx,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}CompileError!例考虑下面程序的输出结果:#includestdio.hmain(){intx,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}(C语言程序设计)第4章选择型程序设计19if语句嵌套:一般形式:if(expr1){if(expr2)statement1elsestatement2}else{if(expr3)statement3elsestatement4}内嵌if内嵌ifif(expr1){if(expr2)statement1elsestatement2}内嵌ifif(expr1){if(expr2)statement1}elsestatement3内嵌ifif(expr1)statement1else{if(expr3)statement3elsestatement4}else中内嵌if(C语言程序设计)第4章选择型程序设计20#includestdio.hmain(){charc;printf(Enteracharacter:);c=getchar();if(c0x20)printf(Thecharacterisacontrolcharacter\n);elseif(c='0'&&c='9')printf(Thecharacterisadigit\n);elseif(c='A'&&c='Z')printf(Thecharacterisacapitalletter\n);elseif(c='a'&&c='z')printf(Thecharacterisalowerletter\n);elseprintf(Thecharacterisothercharacter\n);}例4-8判断输入字符种类运行:Enteracharacter:Thecharacterisacontrolcharacter运行:Enteracharacter:8Thecharacterisadigit运行:Enteracharacter:DThecharacterisacapitalletter运行:Enteracharacter:hThecharacterisalowerletter运行:Enteracharacter:F1Thecharacterisoth
本文标题:C语言4分支结构课件
链接地址:https://www.777doc.com/doc-7229646 .html