资源预览内容
第1页 / 共65页
第2页 / 共65页
第3页 / 共65页
第4页 / 共65页
第5页 / 共65页
第6页 / 共65页
第7页 / 共65页
第8页 / 共65页
第9页 / 共65页
第10页 / 共65页
亲,该文档总共65页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言程序设计,主讲:牟艳,教材、参考书,教材 丁海军等编著,程序设计基础(C语言),北京航空航天大学出版社 参考书 C语言程序设计教程 谭浩强 高等教育出版社 C+程序设计教程 钱能 清华大学出版社,课程要求,课前请做好预习 保持课堂安静,头脑清醒,思维活跃 认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间,实践!实践!再实践!,学习方法,熟悉用C语言编程的基本过程 多上机实践 程序是调试出来的调试工具的使用 读别人的程序 不要相信自已的记忆,随时带上语言参考书 准备一本简明英语小词典。以便于编程时读懂每一个错误信息,熟记C语言的基本概念(语法、句法) 熟悉VC6.0上机操作环境 会读、会编、会调试C程序 学会算法分析和算法设计,课程目标:,与我联系,muyhhuc.edu.cn 计算机系办公室 实验楼304# 电话:85191955,第一章 C语言程序设计概念,C语言程序概念 概念 C语言程序组成要素 算法与程序设计方法学 C程序上机步骤,计算机语言、程序与软件的区别,软件,#include main() printf(“hello,worldn”); ,语言,语言 规则,计算机语言是 编写程序、制 作软件的工具,程序,计算机语言、程序与软件的区别,计算机语言:是规则和符号的集合,是与计算机交流的工具 程序:求解问题的指令序列 软件:程序的集合,学习语言 设计程序 制作软件,人与计算机的对话,两个说不同母语的人的对话方式: 一方学另一方的语言 双方都学习一种第三方语言 人与计算机的对话方式: 计算机学习人的语言(自然语言理解) 人学习计算机的语言 学习第三方语言,计算机能读懂的语言?,机器语言(Machine Language) 由一系列二进制0和1组成 机器语言编写的1+1程序 低级语言,10111000 00000001 00000000 00000101 00000001 00000000,像不像天书?,#include void main() printf(“%dn“, 1+1); ,人与计算机进行交流的语言 C语言编写的1+1程序 既不是英语,也非机器语言 但更像英语 高级语言 比写机器语言程序容易,但比使用英语难,程序设计语言 (programming language) ?,高级语言的魅力,易学、易用、易读、易懂、强大、可移植 百家争鸣,据不完全统计2500种,绝大多数是高级语言 http:/people.ku.edu/nkinners/LangList/Extras/langlist.htm可看到其列表和简介 影响最大、寿命最长的是C语言,流行语言,应用编程语言 机器语言 汇编语言 Basic Pascal C C+ Java C# 专项编程语言 Lotus Notes Power Builder,Web编程语言 HTML XML PHP ASP JSP JavaScript VBScript 其他 perl Python .,C程序设计语言,是一种高级语言 高级语言并不是“高级”,只是相对低级语言,在一个高的级别上进行编程 历史悠久,战勋卓著 诞生于上世纪70年代初,成熟于80年代(C89),修订于90年代(C99) 很多重量级软件都是用C写的 上天入地,无所不能 几乎没有不能用C写出来的软件,没有不支持C的系统 很多流行语言、新生语言都借鉴了它的思想、语法 从C+,到Java,再到C#,还有php等,如何让计算机读懂 程序设计语言?,编译程序(编译器,Compiler)的功能 读入高级语言编写的程序源代码,将其翻译成在逻辑上与之等价的目标程序,即转换成机器代码(可执行程序) 一种程序设计语言对应一种编译器,C语言,可执行程序,编译器,1.1.1认识 C语言从这里开始 例1.1 打印单词“Hello, World”,/* example1.1 The first C Program*/ #include main() printf(“Hello,World! “); ,运行结果:,模仿例1.1写一个输出: “学习C语言,其实并不难!” 的程序,Hello,World!,例1.2,/* example1.2 calculate the sum of a and b*/ #include /* This is the main program */ main() int a,b,sum; a=10; b=24; sum=add(a,b); printf(“ sum= %dn“,sum); /* This function calculates the sum of x and y */ int add(int x,int y) int z; z=x+y; return(z); ,运行结果: sum=34,格式特点 习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式,main( ) . . . . ,main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum); ,优秀程序员的素质之一: 使用TAB缩进 对齐 有足够的注释 有合适的空行,结构特点 函数与主函数(C程序是由函数构成的) 程序由一个或多个函数组成 必须有且只能有一个主函数main() 程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。 程序语句 C程序由语句组成 用“;”作为语句终止符 注释 /* */为注释,不能嵌套 / 单行注释 将注释文字放在/后面 不产生编译代码 编译预处理命令,1.2 算法与程序设计方法学,程序=算法+数据结构,算法是用计算机解题的精确描述,算法就是逐步(Step-by-step)执行某类计算的方法,一个算法描述的是有穷的动作的序列或步骤。,数据结构:数据的组织方式,1.什么是算法,例,将蓝、黑两墨水瓶,中的墨水互换。,思路: 1.将蓝倒入白瓶中;,2.将黑倒入原蓝瓶中;,3.将原白倒入原黑瓶中。,A,B,C,完成一项任务的具体步骤,1 什么是算法,例,计算M(x)的值,思路:1.将a、b、c、x输入到计算机中; 2.判断xa,是转3,否则转4; 3.计算bx+a2,转5; 4.计算a(c-x)+c2,转5; 5.输出M(x)的值。,求二个正整数m和n的最大公约数,思想方法: 设m=na0+r1 (0 r1 n) 就是说m是n的a0倍还多r1,那么m和n的最大公约数与r1的最大公约数相同。 若r1=0,则n就是m和n的最大公约数 若r10,则再对n和r1重复上面的操作,直到求出rn=0为止。,例,辗转相除法 欧几里德算法,求525和231的最大公约数,525与231的最大公约数是21,例,求两个自然数的最大公约数的算法,S1.输入两个自然数M、N S2.求M除以N的余数R S3.使M=N,即用N代换M S4.使N=R,即用R代换N S5.若R0,则重复执行S2、S3、S4(循环),否则转S6 S6.输出M,M即为M和N的最大公约数,M=N*a+R,2 算法的结构,无论多么复杂的算法,都可以用下面三种流程控制结构来描述 顺序结构 选择结构 循环结构,3 算法的表示,用流程图来表示算法 用程序设计语言表示算法 用伪代码表示算法 (自然语言程序设计语言),3 算法的表示,顺序结构,将蓝、黑两墨水瓶中的墨水互换,用流程图来表示算法,3 算法的表示,选择结构,用流程图来表示算法,例:求两个自然数的最大公约数算法的流程图,是,否,循环结构,用流程图来表示算法,3 算法的表示,Main( ) int a,b,c,m,x; scanf(“%d”,x); a=6;b=30;c=15; if (x=a) m=b*x+a*a; else m=a*(c-x)+c*c; printf(“m=%dn”,m; ,用程序设计语言表示算法,3 算法的表示,Main( ) int a,b,c,m,x; 输入x; a=6;b=30;c=15; if (x=a) m=b*x+a*a; else m=a*(c-x)+c*c; 输出m; ,用伪代码表示算法,算法的特征 1、有穷性 2、确定性 3、有零个或多个输入 4、有一个或多个输出 5、有效性,例1: 12345 S1: p=1 S2: i=2 S3: pip S4: i+1i S5: i=5 转到S3, 否则输出p的值, 终止算法。,1.2.2 算法设计的原则和步骤,原则:自顶向下,逐步求精 一般步骤 明确算法的输入、输出数据 自顶向下,逐步求精 模块结构,1.2.3 算法设计基本方法与策略,算法设计主要有以下的一些策略和方法和策略: 穷举策略; 递推与递归策略; 分而治之策略; 回溯策略; 贪心策略; 动态规划策略 。,1.2.4 编程解决问题的一般步骤,1.分析问题 2.概要设计 3.详细设计 4.算法实现、调试与测试 5.整理、编写文档,例:求一元二次方程 ax2+bx+c=0 的实根,求根公式,输入数据是什么?,方程系数:a,b,c,输出数据是什么?,如果有实根:x1,x2 如果没有实根:提示信息,输入,处理,输出,1.问题分析,1. 输入a,b,c 2. 数据变换 3. 输出x1,x2,2-1. 计算判别式d 2-2. 根据d的值进行不同处理 2-2-1:if d0 x1= x2= 2-2-2:if d=0 x1=x2= 2-2-3:if d0 .,2.概要设计,3.详细设计,输入a,b,c d=sqrt(b*b-4*a*c) if(d0) 输出 x1=(-b+d)/(2*a) x2=(-b-d)/(2*a) else if(d=0) 输出 x1=x2=-b/(2*a) else 输出:无实根提示信息,自然语言描述的算法,#include void main() float a,b,c,d,x1,x2; scanf(“%d%d%d”, ,4算法实现,思考或问答题: 1、C程序中是否一定包含注释,注释的作用是什么? 2、每个程序至少包含一个什么函数? 3、程序中main函数可以含两个以上吗? 4、程序的执行次序是怎样的? 5、语句的标记是什么? 6、 C程序的上机步骤? 7、什么叫算法 8、表示算法的基本结构是哪三种? 9、编程解决问题的一般步骤是什么?,1、C程序中是否一定包含注释, 注释的作用是什么?,答案:不一定,是方便阅读程序的。,2、每个程序至少包含一个什么函数?,答案:主函数main,3、程序中main函数可以含两个以上吗?,答案:不能,有且只能有一个。,4、语句的标记是什么?,答案:是结尾用分号即: “;”,5、程序的执行次序是怎样的?,答案:从主函数main开始执行,在主函数结尾结束。中间可以调用其他函数,6、 C程序的上机步骤?,答案:编辑、编译、连接、执行,7、什么叫算法?,答案:算法就是解决问题的步骤;,8、表示算法的基本结构是哪三种?,答案:顺序结构、选择结构、循环结构,9、编程解决问题的一般步骤是什么?,答案: 1.分析问题 2.概要设计 3.详细设计 4.算法实现、调试与测试 5.整理、编写文档,C程序的开发过程,程序代码的录入, 生成源程序*.c或.cpp,语法分析查错,翻译 生成目标程序*.obj,与其它目标程序或库 链接装配,生成可执行 程序*.exe,C程序的开发过程,1.编辑 2.编译,(1)编辑指编辑创建源程序是将编写好的C语言源程序代码录入到计算机中,形成源程序文件。 (2)本课程用Visual C+ 6.0环境提供的全屏幕编辑器。 (3)在VC 6.0环境中的源程序文件,其扩展名为.cpp。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号