C语言N03 算法与程序基本结构 4学时+2学时

上传人:zw****58 文档编号:57287852 上传时间:2018-10-20 格式:PPT 页数:29 大小:495.50KB
返回 下载 相关 举报
C语言N03 算法与程序基本结构 4学时+2学时_第1页
第1页 / 共29页
C语言N03 算法与程序基本结构 4学时+2学时_第2页
第2页 / 共29页
C语言N03 算法与程序基本结构 4学时+2学时_第3页
第3页 / 共29页
C语言N03 算法与程序基本结构 4学时+2学时_第4页
第4页 / 共29页
C语言N03 算法与程序基本结构 4学时+2学时_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《C语言N03 算法与程序基本结构 4学时+2学时》由会员分享,可在线阅读,更多相关《C语言N03 算法与程序基本结构 4学时+2学时(29页珍藏版)》请在金锄头文库上搜索。

1、第三章 算法与程序基本结构,本章课程共6学时 其中:授课4学时,上机2学时,2018/10/20,2,3.1 算法和算法的表示,程序的两个主要构件算法的概念算法的表示,(1) 对数据的描述:数据结构(data structure)。数据的类型和组织形式。 (2) 对操作的描述:算法(algorithm)。操作步骤。,程序 = 数据结构 + 算法,程序 = 算法 + 数据结构 + 程序设计方法 + 语言工具和环境,算法是为解决一个问题而采取的方法和步骤,(1) 自然语言描述,(2) 流程图描述,P16,2018/10/20,3,例3.1(教材P19) 判定20002500年中的每一年是否闰年,将

2、结果输出。已知闰年的条件是: (1)能被4整除,但不能被100整除的年份都是闰年; (2)能被100整除,又能被400整除的年份是闰年。 (3)不符合这两个条件的年份不是闰年。,自然语言描述 设y为被检测的年份,可采取以下步骤: S1:2000=y S2:若y不能被4整除,输出“y不是闰年”,转到S6 S3:若y能被4整除,不能被100整除,输出“y是闰年”,转到S6 S4:若y能被100整除,同时又能被400整除,输出y“是闰年”,转到S6 S5:输出“y不是闰年” S6:y+1=y S7:当y2500时,转S2继续执行,如y2500,算法停止。,2018/10/20,4,ANSI流程图描述

3、,例3.1(教材P19) 判定20002500年中的每一年是否闰年,将结果输出。已知闰年的条件是: (1)能被4整除,但不能被100整除的年份都是闰年; (2)能被100整除,又能被400整除的年份是闰年。 (3)不符合这两个条件的年份不是闰年。,2018/10/20,5,N-S流程图描述,例3.1(教材P19) 判定20002500年中的每一年是否闰年,将结果输出。已知闰年的条件是: (1)能被4整除,但不能被100整除的年份都是闰年; (2)能被100整除,又能被400整除的年份是闰年。 (3)不符合这两个条件的年份不是闰年。,2018/10/20,6,3.2 三种基本结构,(1) 顺序型

4、结构,(2) 选择型结构,P26,2018/10/20,7,(3) 循环结构,它又称重复结构。 (a)当型(While型)循环结构 (b)直到型(Until型)循环结构,当型,直到型,任何算法都可以划分成上述三种基本结构,2018/10/20,8,练习: 判断一个大于或等于3的正整数是否为素数。 素数:除了1和该数本身之外,不能被其他任何整数整除的数。 判断素数的方法:将n作为被除数,将2到(n-1)各个整数轮流作为除数,如果都不能被整除,则n为素数。,(1)自然语言描述 S1:输入n的值 S2:2=i (i作为除数) S3:n被i除,得余数r S4:如果r=0,表示n能被i整除,则打印n“不

5、是素数”,算法结束;否则执行S5 S5:i+1=i S6:如果in-1,返回S3;否则打印n“是素数”,然后结束。,(2)ANSI流程图,(3) N-S流程图,2018/10/20,9,3.3 结构化程序设计,(1) 自顶向下, 逐步细化 (2) 模块化设计 (3) 结构化编码,P34,2018/10/20,10,3.4 分支和循环结构的C语言程序实现,C语句:以“;”作分隔符, 编译后产生机器指令 表达式语句:“表达式+分号“构成空语句: ;程序控制语句(9种):复合语句:用 括起来的一组语句,例 表达式语句total=total+limit; a=3;func( ); printf(“He

6、llo,world!n”);,复合语句的说明: “”后不加分号 语法上和单一语句相同 复合语句可嵌套,例 复合语句total=total+limit; a=3;func( ); ,P57,2018/10/20,11,关系运算符与关系表达式 包括符号:= !=,例 ca+b /c(a+b)ab!=c /(ab)!=ca=bc /a=(bc),例:若a=0; b=0.5; x=0.3; 则 a=x=b的值为,例:若a=0; b=0.5; x=0.3; 则 a=x278在C中是允许的,值为,例:5278在C中是允许的,值为 0,例:int i=1, j=7,a; a=i+(j%4!=0); 则a=,

7、例:int i=1, j=7,a; a=i+(j%4!=0); 则a= 2,例 a0 结果为A100 结果为,例 a0 结果为 1A100 结果为 0,关系运算请注意: (1) 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为,关系运算请注意: (1) 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为 0,关系运算请注意: (1) 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为 0 可改写为:fabs(1.0/3.0*3.0-1.0)b (ab)=c b+cb f=abc,例 int a=3,b=2,c=1,d,f

8、;ab /表达式值1(ab)=c b+cb f=abc,例 int a=3,b=2,c=1,d,f;ab /表达式值1(ab)=c /表达式值1b+cb f=abc,例 int a=3,b=2,c=1,d,f;ab /表达式值1(ab)=c /表达式值1b+cb f=abc,例 int a=3,b=2,c=1,d,f;ab /表达式值1(ab)=c /表达式值1b+cb /d=1f=abc,例 int a=3,b=2,c=1,d,f;ab /表达式值1(ab)=c /表达式值1b+cb /d=1f=abc /f=0,P91,2018/10/20,12,逻辑运算符与逻辑表达式 包括符号: ! &

9、 |,例 ab&xy a=b|x=y !a|ab,例 ab&xy a=b|x=y !a|ab,例 ab&xy /(ab)&(xy)a=b|x=y !a|ab,例 ab&xy /(ab)&(xy)a=b|x=y /(a=b)|(x=y)!a|ab,例 ab&xy /(ab)&(xy)a=b|x=y /(a=b)|(x=y)!a|ab /(!a)|(ab),例 a=4; b=5; !a a&b a|b !a|b 4&0|2 53&2|83&2|83&2|83&2|83&2|83&2|83&2|83)&2|(83&2|83)&2|(8b)&(n=cd),例 a(m=ab)&(n=cd) /结果m=0

10、,n=1,P92,2018/10/20,13,分支语句(1):if语句,例:if (xy)printf(“%d”,x);,例:if (xy) max=x;else max=y;,例:if (salary1000) index=0.4; else if (salary800) index=0.3;else if (salary600) index=0.2;else if (salary400) index=0.1;else index=0;,如:if(a=b,if(x) if(x!=0) if(!x) if(x= =0),例 考虑下面程序的输出结果: #include main() int x,

11、y;scanf(“%d,%d”, ,例 考虑下面程序的输出结果: #include main() int x,y;scanf(“%d,%d”, ,P97,2018/10/20,14,例1 求一个数的绝对值,/*ch4_1.c*/ #include main() int x,y;printf(“Enter an integer:“);scanf(“%d“, ,运行:Enter an integer:-12integer:-12-absolute value :12,例2 输入两个数并判断两数相等否,/*ch4_2.c*/ #include main() int a,b;printf(“Enter integer a:“);scanf(“%d“, ,运行:Enter integer a:12Enter integer b:12a=b,运行:Enter integer a:12Enter integer b:9a!=b,2018/10/20,15,例3 判断输入字符种类,/*ch4_3.c*/ #include main() char c;printf(“Enter a character:“);c=getchar();if(c=0 ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号