算法与控制语句.ppt

上传人:小飞机 文档编号:6012002 上传时间:2023-09-14 格式:PPT 页数:95 大小:916KB
返回 下载 相关 举报
算法与控制语句.ppt_第1页
第1页 / 共95页
算法与控制语句.ppt_第2页
第2页 / 共95页
算法与控制语句.ppt_第3页
第3页 / 共95页
算法与控制语句.ppt_第4页
第4页 / 共95页
算法与控制语句.ppt_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《算法与控制语句.ppt》由会员分享,可在线阅读,更多相关《算法与控制语句.ppt(95页珍藏版)》请在三一办公上搜索。

1、1,第3章 算法与控制语句,3.1 算法初步 3.2 C语言的标准输入和输出 3.3 条件语句 3.4 多分支语句 3.5 循环语句3.6 转移语句 3.7 综合应用,语言程序设计,第2页,教学目标,初步理解算法的概念和特点掌握常用问题的算法掌握用流程图表示算法了解结构化程序设计的方法掌握格式化输入输出函数的用法掌握分支结构的程序设计,理解分支语句的嵌套掌握循环结构的程序设计及其相互嵌套理解break和continue的控制能够编写较复杂的程序,语言程序设计,第3页,3.1 算法初步,算法的概念 算法的表示 算法举例 三种基本结构,语言程序设计,第4页,算法的概念,算法:解决问题的方法和步骤

2、沃斯公式:数据结构+算法=程序改进的沃斯公式:数据结构+算法+程序设计方法+开发工具=程序,语言程序设计,第5页,算法的表示,自然语言传统流程图N-S流程图伪代码计算机语言,语言程序设计,第6页,传统流程图,语言程序设计,第7页,计算机语言,#includeint main()int i,n,s=0;scanf(%d,语言程序设计,第8页,算法举例,例3.1 用流程图表示求两个数a,b的最大值,语言程序设计,第9页,例3.2:求n!,语言程序设计,第10页,例3.3:判断某一年是否为闰年。,语言程序设计,第11页,例3.4:输入一个正整数,将它反位输出(如输入12345,输出54321)。,语

3、言程序设计,第12页,例3.5:判断一个整数n是否为素数,语言程序设计,第13页,例3.6:对三个整数a、b、c按从小到大排序。,语言程序设计,第14页,算法的特点,有穷性确定性有零个或多个输入有一个或多个输出可行性,语言程序设计,第15页,三种基本结构,顺序结构:根据操作的先后顺序执行,语言程序设计,第16页,选择(分支)结构:根据某个给定条件进行判断,条件为真或假时分别执行不同的操作,语言程序设计,第17页,循环结构:根据条件的真或假反复执行某些操作,语言程序设计,第18页,三种基本结构的特点,只有一个入口和一个出口结构内的每一部分都有可能被执行到结构内不存在“死循环”,语言程序设计,第1

4、9页,3.2 C语言的标准输入和输出,3.2.1 格式化输入输出3.2.2 其它输入输出3.2.3 C语言语句3.2.4 顺序结构程序设计,语言程序设计,第20页,1.C语句概述,C语句 以“;”作分隔符,编译后产生机器指令。C语句分类 表达式语句:表达式加分号构成。空语句:;程序控制语句(9种)复合语句:用 括起来的一组语句,语言程序设计,第21页,2.赋值语句,构成:由赋值表达式加上一个分号构成注意事项“”是运算符 赋值表达式可以包括在其它表达式之中,语言程序设计,第22页,3.数据输入输出的概念及在C语言中的实现,数据输入输出的概念C程序中输入输出是如何实现的?C语言无I/O语句,I/O

5、操作由函数实现#include,语言程序设计,第23页,4.单个字符的输入输出,字符输出函数putchar字符输入函数getchar,语言程序设计,第24页,字符输出函数putchar 格式:putchar(c)参数:c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为EOF(-1),语言程序设计,第25页,字符输入函数getchar 格式:getchar()功能:从键盘读一个字符 返值:正常,返回读取的代码值;出错,返回EOF(-1),语言程序设计,第26页,5.格式输入与输出,格式输出函数printf格式输入函数scanf,语言程序设计,第27页,

6、(1)格式输出函数 格式:printf(格式控制串,输出表)功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1)说明:输出表 要输出的数据(可以没有,多个时以“,”分隔)格式控制串包含两种信息:格式说明 普通字符或转义字符,%修饰符格式字符,printf(“Hello,World!n”);,语言程序设计,第28页,格式字符,确定数据输出的格式,语言程序设计,第29页,修饰符,确定数据输出的宽度、精度、小数位数、对齐方式,语言程序设计,第30页,语言程序设计,第31页,语言程序设计,第32页,例3:,语言程序设计,第33页,格式输出函数使用注意事项:格式字符要用

7、小写 格式字符与输出项个数应相同,按先后顺序一一对应 输出转换:格式字符与输出项类型不一致,自动按指定格式输出,语言程序设计,第34页,(2)格式输入函数 格式:scanf(格式控制串,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束 返值:正常,返回输入数据个数 说明:地址表 变量的地址,常用取地址运算符&格式控制串 含义同printf函数,语言程序设计,第35页,例 scanf(“%4d%2d%2d”,输入 19991015 则1999yy,10 mm,15 dd,例 scanf(“%3d%*4d%f”,则123k,8765.43f,例 scanf(“%2

8、d%*3d%2d”,输入 1234567 则12a,67b,例 scanf(“%3c%2c”,输入 abcde 则ac1,d c2,语言程序设计,第36页,格式输入函数使用注意事项:,关于输入数据时的分隔符 默认:以空格、TAB键、回车键作为分隔符 以格式控制串中指定的字符作为分隔符,2.关于格式符%c用%c格式符时,空格和转义字符作为有效字符输入,实例,实例,3.输入数据时,遇以下情况时认为该数据结束 遇空格、TAB键、回车键 按指定的宽度结束 遇非法输入,实例,next part,语言程序设计,第37页,输入:5 6 9 或者:5 6 9,返回,输入:5,6,9,输入:a=5,b=6,c=

9、9,语言程序设计,第38页,ch1为a,ch2为,ch3为b,ch1为a,ch2为换行符,ch3为b,返回,语言程序设计,第39页,a=123 b=a c=123,a=123,返回,语言程序设计,第40页,6.程序举例,例1:输入三角形边长,求面积,例2:从键盘输入大写字母,用小写字母输出,go,go,next part,语言程序设计,第41页,例1:输入三角形边长,求面积,预备知识:,(1)输入边长a,b,c(2)根据数学公式计算s,area(3)输出面积area,用c语言编写的程序:,分析:,语言程序设计,第42页,#include#include int main()float a,b,

10、c,s,area;scanf(%f,%f,%f,return 0;,return,语言程序设计,第43页,例2:从键盘输入大写字母,用小写字母输出,预备知识:,分析:,(1)输入大写字母(2)把大写字母转换为小写字母(3)输出小写字母,用c语言编写的程序:,大写字母的ASC值比小写字母的ASC值少32,语言程序设计,第44页,return,#include void main()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);,语言程序设计,第45页,3.3 条件语句,3.3.1 if语句3.

11、3.2 if else 语句3.3.3 if else if 语句3.3.4 条件语句的嵌套3.3.5 条件语句的应用,语言程序设计,第46页,if语句,if语句的三种形式,example,语言程序设计,第47页,语言程序设计,第48页,关于if语句的几点说明 if后面的表达式类型任意 在三种形式的if语句中,语句i也可以是复合语句或嵌套if语句。注意if与else的配对关系:else总是与它上面的最近的未配对的if配对。if语句编程实例,example,example,example,example,next part,语言程序设计,第49页,return,语言程序设计,第50页,例1:if

12、(x0,语言程序设计,第51页,例2:考虑下面程序的输出结果:,#include void main()int x,y;scanf(%d,%d,输入:1,2,输入:2,1,Compile Error!,return,语言程序设计,第52页,例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);,修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);,实现if else 正确配对方法:加,return,语言程序设计,第53页,例1:求一个整数的绝对值,#include int main()int

13、 x,y;printf(Enter an integer:);scanf(%d,return 0;,语言程序设计,第54页,例2:输入两个整数并判断两个数是否相等,#include int main()int a,b;printf(Enter integer a and b:);scanf(%d,%d,return 0;,语言程序设计,第55页,例3:将3个整数按从小到大的顺序排列,#includeint main()int a,b,c,t;scanf(%a%b%c,return 0;,?,算法,语言程序设计,第56页,return,例4:写出下面程序的执行结果,#includeint mai

14、n()int x=100,a=10,b=20;int v1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;else if(v2)x=10;x=-1;printf(%dn,x);return 0;,语言程序设计,第57页,3.4 多分支语句,3.4.1 switch多分支语句3.4.2 多分支语句的嵌套3.4.3 多分支语句应用,语言程序设计,第58页,switch语句,语法格式:,语言程序设计,第59页,关于switch语句的几点说明:每个case的常量表达式的值必须互不相同 case后可包含多个可执行语句,且不必加 多个case可以共用一组执行语句 switch语句可嵌套

15、使用default语句不是必须的每个case后面语句序列里的break语句可有可无,但执行效果不同 switch语句编程实例,example,next part,语言程序设计,第60页,break;break;break;break;,语言程序设计,第61页,a=1,a=2 b=1,return,语言程序设计,第62页,switch 实例1,例3.25 从键盘上输入年份和月份,求该月有多少天?分析:一年12个月,1、3、5、7、8、10、12月每月31天;4、6、9、11月份每月30天2月份闰年是29天,非闰年是28天判断闰年的标准能被4整除不能被100整除的年份或者能被400整除的年份(ye

16、ar%4=0)&(year%100!=0)|(year%400=0)或!(year%4)&(year%100)|!(year%400),语言程序设计,第63页,switch 实例2,例3.24:已知银行整存整取存款不同期限的年利率分别为:2.25%期限1年 2.79%期限2年年息=3.33%期限3年 3.60%期限5年 4.14%期限8年 要求输入本金和期限,求到时候能从银行得到的利息与本金的合计。分析:总金额=本金*年利率*存期+本金,语言程序设计,第64页,3.5-7 循环语句和转移语句,3.5.1 while 循环语句3.5.2 dowhile循环语句3.5.3 for循环语句3.5.4

17、 循环语句的嵌套3.6.2 break和continue语句,语言程序设计,第65页,1.while语句,语法形式:,(3)特点:,(2)执行流程:,while(表达式)语句,可以是一条语句,也可以是复合语句,先判断,后执行;循环体被执行的次数有可能为0次。,next part,使用while语句编程实例1:计算整数1n的求和,2.用c语言实现:,#include int main()int sum,i,n;scanf(%d,使用while语句编程实例2:计算n的阶乘,1.算法:,#include int main()int product,i,n;scanf(%d,2.用c语言实现:,ret

18、urn,语言程序设计,第68页,2.dowhile语句,语法形式:,(3)特点:,(2)执行流程:,do 语句 while(表达式);,先执行循环体,再判断;循环体至少被执行1次。,next part,使用dowhile语句编程实例1:计算整数1n的求和,2.用c语言实现:,#include int main()int sum,i,n;scanf(%d,使用dowhile语句编程实例2:计算n的阶乘,#include int main()int product,i,n;scanf(%d,2.用c语言实现:,return,语言程序设计,第71页,比较1:while语句与dowhile语句,(1)

19、从执行过程看:,(2)从循环体执行次数看:,while语句:先判断表达式,后执行循环体 dowhile语句:先执行循环体,后判断表达式,while语句:循环体执行次数可能为0 dowhile语句:循环体至少会被执行1次,(3)同一个问题既可以用while语句实现,也可以用dowhile语句实现 注意:初始值和循环条件的设置!,实例分析,next part,实例分析:计算i,i+1,i+2,100的和(i为自然数,通过程序输入),1.用while语句实现,2.用dowhile语句实现,#include int main()int i,sum;scanf(%d,#include int main(

20、)int i,sum;scanf(%d,return,语言程序设计,第73页,3.for语句,语法形式:,(3)理解:,(2)执行流程:,for(表达式1;表达式2;表达式3)语句,for(循环变量赋初值;循环条件;循环变量增值)语句,next part,使用for语句编程实例1:计算整数1n的求和,1.算法:,2.用c语言实现:,#include int main()int i,sum,n;scanf(%d,关于for语句形式灵活的实例说明:,1.,#include int main()int i,sum,n;scanf(%d,#include int main()int i,sum,n;s

21、canf(%d,关于for语句形式灵活的实例说明:,2.,#include int main()int i,sum,n;scanf(%d,#include int main()int i,sum,n;scanf(%d,关于for语句形式灵活的实例说明:,3.,#include int main()int i,sum,n;scanf(%d,#include int main()int i,sum,n;scanf(%d,return,语言程序设计,第78页,比较2:while语句、dowhile语句、for语句,while(表达式)语句,do 语句 while(表达式);,for(循环变量赋初值;

22、循环条件;循环变量增值)语句,next part,语言程序设计,第79页,4.循环的嵌套,(1)什么是循环的嵌套?,(2)循环的嵌套的表现形式:,next part,语言程序设计,第80页,while()while().,do do while();.while();,while()do while();.,for(;)do while();while().,(3)有关循环的嵌套的说明:三种循环可相互嵌套,层数不限 注意嵌套循环的执行流程,实例,循环嵌套编程实例:计算1!+2!+10!,#include int main()int i,j,i_product,sum;sum=0;for(i=1

23、;i=10;i+)i_product=1;for(j=1;j=i;j+)i_product=i_product*j;sum=sum+i_product;printf(1!+2!+.+10!=%dn,sum);return 0;,return,语言程序设计,第82页,5.break语句和continue语句,next part,(1)break语句,(2)continue语句,功能:,功能:,使用场合:,使用场合:,在循环语句中:结束当层整个循环体,在switch语句中:终止switch语句的执行,只能用在循环语句或switch语句中,只能用在循环语句中,结束本次循环,语言程序设计,第83页,(

24、3)注意事项:,在循环语句中:break语句用于结束整个循环体 continue语句用于结束本次循环,在嵌套循环结构中:break语句和continue语句功能都 是对该语句所在的循环结构而言。,实例分析,返回本节,break语句使用实例:计算1+2+3+,直到和超过100即停止相加,#include int main()int i,sum;sum=0;for(i=1;i+)sum=sum+i;if(sum100)break;printf(i=%d,sum=%dn,i,sum);printf(i=%d,sum=%dn,i-1,sum-i);return 0;,运行结果:,continue语句使

25、用实例:计算1100之间非3的倍数的所有奇数之和,#include int main()int i,sum;sum=0;for(i=1;i=100;i=i+2)if(i%3=0)continue;sum=sum+i;printf(sum=%dn,sum);return 0;,return,语言程序设计,第86页,6.程序举例,next part,(详见教材P124-128),例6.6 根据公式/41-1/3+1/5-1/7+求的近似值,例6.7 求Fibonacci数列前40个数,例6.8 判断m是否为素数,例6.9 求100200之间的全部素数,例6.10 译密码,求Fibonacci数列前

26、40个数(教材P125),预备知识:Fibonacci数列,源于古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到3个月后又生一对兔子。假设所有兔子都不会死,问每个月兔子总数为多少?,求解本题的算法:,求Fibonacci数列前40个数(教材P125),算法的c程序实现:,#include int main()long int f1,f2;int i;f1=1;f2=1;for(i=1;i=20;i+)printf(%12ld%12ld,f1,f2);if(i%2=0)printf(n);f1=f1+f2;f2=f2+f1;return 0;,运行结果:,return,

27、判断m是否为素数(教材P125),求解本题的算法:,算法的c程序实现:,return,求100200之间的全部素数(教材P127),#include#include int main()int m,k,i,n=0;for(m=101;m=k+1)printf(%d,m);n=n+1;if(n%10=0)printf(n);printf(n);return 0;,#include#include int main()int m,i,k;scanf(%d,语言程序设计,第91页,运行结果:,return,译密码,例:Hello,world!译成密码:Lipps,asvph!,译码规则:字母字符按设

28、定规则转换 非字母字符不变,语言程序设计,第93页,#include int main()char c;while(c=getchar()!=n)if(c=a,return,语言程序设计,第94页,本章小结,C语言中的语句:赋值语句、复合语句C语言中数据的输入输出 需要用预处理指令包含相应的头文件#include 单个字符的输入输出函数 输入:getchar()输出:putchar(参数)(3)格式化输入输出函数 格式化输入:scanf(格式控制串,地址表)格式化输出:printf(格式控制串,输出表),语言程序设计,第95页,3.格式符(1)常用的几个格式符:%d%f%c%s(2)printf格式字符及printf附加格式说明字符(3)scanf格式字符及scanf附加格式说明字符4.分支结构:if语句 switch语句5.循环结构while语句dowhile语句for语句循环的嵌套break语句和continue语句,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号