您好,欢迎访问三七文档
第4章程序流程的控制徐秋红办公地点:信息学院(主楼四层)411室办公室电话:010-62336516E-mail:shinestar1129@126.com算法计算机通过执行程序来完成特定的任务,而程序中的语句是控制计算机一步步行动的命令,每条语句的作用以及它所处的位置决定了计算机下一步行为的时机、动作的具体内容和行动的方式。程序的执行过程由算法决定。C语言提供三种程序设计结构去实现算法的处理步骤。什么是算法?算法对操作过程的描述叫算法。即根据要执行的动作以及这些动作应该执行的顺序来求解问题的过程被称为算法。例如:求任意两个整数的最大公约数。算法对操作过程的描述叫算法。算法可以用文字来描述,但是直观性上差一些。常用的算法描述方法是流程图–传统流程图–N_S流程图程序的控制语句本章的主要内容:认识流程图•学会使用流程图描述顺序程序结构•学会使用流程图描述选择结构•学会使用流程图描述循环结构掌握利用流程图设计C语言程序流程图顺序结构的流程计算圆的周长和面积输出周长和面积#includestdio.h#definePI3.14159/*PI将代表圆周率*/#defineR6/*R将代表半径值6*/intmain(void){doublegirth,area;girth=2*R*PI;area=R*R*PI;printf(girth=%f\n,girth);printf(“area=%f\n,area);return0;}输入圆的半径值计算圆的周长和面积输出周长和面积输入圆的半径值开始结束顺序结构程序设计顺序结构程序中,每个可执行语句都是按程序编写的先后次序顺序执行,并且是无条件的全部执行输入矩形的长、宽值计算其周长和面积输出其周长和面积实例1:编写一个程序,求某个矩形的周长和面积。要求从键盘输入矩形的长和宽(正实型数据),程序运行的结果是在屏幕上打印该矩形的周长和面积。#includestdio.hintmain(void){floatlength,width,perimeter,area;printf(“请输入矩形的长和宽:);scanf(%f%f,&length,&width);perimeter=(length+width)*2;printf(矩形的周长是%.3f,\t,perimeter);area=length*width;printf(矩形的面积是%.3f\n,area);system(Pause);return0;}源程序清单选择结构程序设计根据给定的条件,选择其中一条运行线路执行.单路选择结构:仅当条件为真时才执行选择结构内的语句。PA(空)真假A真假P选择结构的流程单路选择结构设计程序,将不及格的成绩打印出来输入一位学生的成绩,存入xx60?输出x真假#includestdio.hintmain(void){floatx;printf(\nInputascore:);scanf(%f,&x);if(x60)printf(\nFail:%.1f\n,x);return0;}选择结构程序设计根据给定的条件,选择其中一条运行线路执行.双路选择结构:仅当条件为真时,执行选择结构内的语句A,否则执行选择结构内的语句B。PAB真假A真假PB流程图例如,百货商场进行打折促销活动,购物总额x满300元时可以打九折。scanf(“%f”,&x);if(x=300)printf(“应付%f,实付%f”,x,x*0.9);elseprintf(“应付%f,实付%f”,x,x);x=300?真假输出x*0.9输出x输入x输出x*0.9输出xx=300?真假输入x开始结束双路选择结构设计程序:如果成绩及格,则打印Pass,否则打印Failed。输入一位学生的成绩,存入xx60?输出“Failed”输出“pass”真假#includestdio.hintmain(void){floatx;printf(\nInputascore:);scanf(%f,&x);if(x60){puts(“\tFailed\n\t运筹学课程补考单\n);puts(定于第6周星期二下午3:00在二教110补考\n);}elseprintf(\tPass\n\t运筹学成绩:%.1f\n,x);return0;}选择结构程序设计根据给定的条件,选择其中一条运行线路执行.多路选择结构:如果在多种(两种以上)选择中择一而行,则要使用if语句嵌套或if…else语句嵌套结构来实现。P1AP2真假BC真假多路选择结构例如,求一元二次方程的根的算法可用如下代码描述:doublea,b,c,d;scanf(%lf%lf%lf,&a,&b,&c);d=b*b–4*a*c;if(d==0)printf(\n有相等的两个实根。);elseif(d0)printf(\n有不等的两个实根。);elseprintf(\n有两个复根。);用switch结构处理多选择结构问题witch语句可以实现根据条件表达式运算结果,从众多不同选项中选择某一项执行。switch语句结构形式如下:switch(expression){casetemplate_1:statement_1;casetemplate_2:statement_2;……casetemplate_n:statement_n;[default:statement;]}必须是整型必须是整型常量或字符常量用switch结构处理多选择结构问题例如:根据指定的定期存款年限year,显示该年限整存整取的年利率。switch(year){case1:puts(\t1年期的年利率是2.25\n);break;case2:puts(\t2年期的年利率是2.79\n);break;case3:puts(\t3年期的年利率是3.33\n);break;case5:puts(\t5年期的年利率是3.60\n);break;default:puts(\t更多信息请咨询银行机构\n);}switch结构中的break语句根据录入的百分制成绩值,选择显示4个等级评价中的一个,其中评价标准是:–90分~100分的评价是“Excellent”–70分~89分的评价是“Good”–60分~69分的评价是“Pass”–0分~59分的评价是“Failed”switch结构中的break语句#includestdio.hintmain(void){floatscore;intgrade;printf(Inputascore(0~100):);scanf(%f,&score);grade=(int)(score/10);switch(grade){case10:case9:printf(\n\tExcellent\n);break;case8:case7:printf(\n\tGood\n);break;case6:printf(\n\tPass\n);break;default:printf(\n\tFailed\n);}return0;}必须是一个整型循环设计一个可以在屏幕上显示n个星号的程序,可以显示在一行上,或者可以显示在一列上。输入一整数来确定n值一个一个的输出星号字符,直至显示了n个星号为止使用一个计数器k设置k的初值为1输出一个星号只要满足k=nk增1(即k++)流程图循环结构的流程A:对邮件做查看、分类和存档处理真假P(有新邮件)P(有新邮件)A:对邮件做查看、分类和存档处理在一定条件下,反复执行若干语句的过程称为循环.?循环结构C语言提供了以下三种能够实现重复执行指定操作的循环结构控制语句:–while语句–do„while语句–for语句循环结构------while语句while语句的语法格式如下:while(condition){statement;}计算condition执行statement执行statement真假计算condition条件为假时,循环结束fcondition为真condition为假condition为真循环结构------while语句建立通用的除法计算器。如果除数为零,则重新输入除数,直至正常的完成除法运算为止。#includestdio.hintmain(void){doublex,y,z;printf(请输入被除数x和除数y:);scanf(%lf%lf,&x,&y);if(y!=0){z=x/y;printf(运算结果%f/%f=%f\n\n,x,y,z);}elseputs(除数y为0是无效的!\n\n);return0;}while(y==0){puts(除数y为0是无效的!);printf(请重新输入一个除数y:);scanf(%lf,&y);}z=x/y;printf(运算结果%f/%f=%f\n\n,x,y,z);例如:在屏幕上显示20以内的自然数。#includestdio.hintmain(void){intn=0;while(n20){printf(%d,n);n++;}return0;}声明变量n,n=0n20?输出nn=n+1while循环结构的特点......循环结构------do…while语句do„while语句的语法格式如下:do{statement;}while(condition);计算condition执行statement执行statement真假计算condition先执行循环内部的语句,再做条件的判断。条件为假时,循环结束。范例1/*输出0至20以内的奇数*/intn=1;do{printf(%d,,n);n=n+2;}while(n20);范例2/*设计程序段,功能是:只显示1至10之间的整数,否则重新输入。*/intx;do{printf(“\nPleaseenteranumber(1≤x≤10):);scanf(%d,&x);}while(x=1||x=10);printf(\nx=%d\nThanks.\n,x);先执行循环结构体的语句,再做条件判断。条件为假时,循环结束。范例3/*打印50个星号**/intcounter=1;do{printf(“*”);counter++;}while(counter=50);计数器实例4.6通过键盘输入一段文本信息,以按下Enter键表示终止输入。统计共输入了多少个字符。#includestdio.hintmain(void){intcounter=0;charent_char;puts(\nInputasectionoftext:);do{ent_char=getchar();counter++;}while(ent_char!=10);printf(\n\tcounter=%d\n,--counter);return0;}实例4.7使用C语言设计一个文字菜单程序,要确保只有通过键盘正确地选择了菜单项以后,程序才可以继续向下运行,否则重新显示菜单的内容。(1)--------Option1(2)--------Option2(3)--------Option3Pleaseenteryourselection(from1to3):实例4.7#includestdio.hintmain(void){intsel;do{printf(\n\n\t(1)----------Option1);printf(\n\t(2)----------Option2);printf(\n\t(3)----------Option3);printf(\nInputyourselection(from1to3):);scanf(%d,&sel);}while(sel1||sel3);printf(\nYourselectionis);switch(sel){case1:puts(first——Option1\n);break;case2:puts(second——Option2\n);break;default:puts(third——Option
本文标题:第4章程序控制
链接地址:https://www.777doc.com/doc-599476 .html