全国青少年信息学奥林匹克竞赛网络学习社区·C语言上海交大出版社主编李明2009年7月29日版权所有Mr.ChenCopyright(2009)C语言程序设计主讲Mr.Chen04第04讲用流程图描述算法设计算法1.算法的概念2.算法的特点3.算法的描述描述算法1.结构化流程图2.用流程图描述算法编写程序1.根据流程图编程2.调试程序3.优化算法A复习C编写程序B流程图2+3+4+5+…+99=?1+100高斯小时候的故事智力故事连环画本地播放远程播放开始第1步:1+2=3第2步:3+3=6第3步:6+4=10……第99步:4950+100=5050结束分析第1组:1+100=101第2组:2+99=101第3组:3+98=101……第50组:50+51=101开始第1步:101×50=5050结束=101+算法的特点算法(Algorithm)是为解决一个特定问题而采取的确定的、有限的方法和步骤。有穷性:一个算法包含的操作步骤是有限的。有效性:算法中的每一个步骤都应当能有效地执行,并得到确定的结果。有输出:算法执行后必须输出(1~n个)信息。有输入:算法执行时需要输入(0~n个)信息。确定性:算法中的每一个步骤都是确定的。结构化流程图的符号流程图是用一些图框表示各种操作。用图形表示算法,直观形象,易于理解。开始/结束赋值/计算条件起止框输入输出框事件处理框判断框流程线输入/输出开始输入赋值/计算输出结束结构化流程图--(1)顺序结构//文件名:Yingwuxueshe.c//功能:在屏幕上显示用户输入的整数intmain(){inti;printf(请输入一个整数:);scanf(%d,&i);printf(“你输入的整数是:%d,i);printf(%c,7);printf(\n\n);system(pause);}结构化流程图--(2)if-else选择结构//文件名:Judge.c//功能:判断两个整数的大小intmain(){inta,b;scanf(%d,&a);scanf(%d,&b);if(a=b)printf(%d≥%d,a,b);elseprintf(%d%d,a,b);printf(\n\n);system(pause);}开始结束a=b?否是输入两个整数a,b输出a≥b输出ab结构化流程图--(3)for循环结构//文件名:Sum100_for.c//功能:计算s=1+2+3+…+99+100intmain(){inti,s;s=0;for(i=1;i=100;i++){printf(“s=%d,i=%d,s+i=%d\n,s,i,s+i);s=s+i;}printf(“\n1+2+3+…+99+100=%d,s);printf(\n\n);system(pause);}开始i=100?是否赋值s=0;i=1;累加i=i+1;输出s结束计算s=s+i;结构化流程图--(4)while循环结构//文件名:Sum100_while.c//功能:计算s=1+2+3+…+99+100intmain(){inti,s;i=1;s=0;while(i=100){printf(“s=%d,i=%d,s+i=%d\n,s,i,s+i);s=s+i;i=i+1;}printf(“\n1+2+3+…+99+100=%d,s);printf(\n\n);system(pause);}开始i=100?是否赋值i=1;s=0;赋值i=i+1;输出s结束赋值s=s+i;结构化程序设计--判断两个整数的大小网络协作知识建构(1)观看教师的讲解(2)记录自己的疑惑(3)查阅本节课讲义(4)小组协作探究(5)反思本地播放远程播放第7-8行第9行第10行第12行开始结束a=b?否是输入两个整数a,b输出a≥b输出ab1+2+3+4+5+…+99+100=?拓展提高--用流程图表示高斯的算法智力故事连环画本地播放远程播放开始输出101×50=5050结束Mr.Chen陈家良GsChenJL@126.com