当前位置:首页 >> 小学教育 >>

第一章C语言初步


C语言程序设计
1、课程性质:全区统考,为考试课程。 课程性质:全区统考,为考试课程。 主讲老师: 2、主讲老师:黄建灯 老师 课本教材: 3、课本教材:
(1)谭浩强等 C语言程序设计教程 (1)谭浩强等. C语言程序设计教程.高等教育出版社 谭浩强等. 语言程序设计教程. (2)谭浩强 谭浩强等 C语言习题集与上机指导 语言习题集与上机指导. (2)谭浩强

等. C语言习题集与上机指导.高等教育出 版社出版社 参考书: 4、参考书: (1)谭浩强.C程序设计题解与上机指导 第二版) 谭浩强.C程序设计题解与上机指导( (1)谭浩强.C程序设计题解与上机指导(第二版).清 华大学出版社. 华大学出版社. (2)其他有关计算机二级考试 其他有关计算机二级考试( 语言)题解。 (2)其他有关计算机二级考试(C语言)题解。

第1章 C语言概述
1、计算机语言与程序设计 2、C语言概述 3、C语言上机实践步骤 4、算法的基本概念 5、学习C语言应该注意的问题 学习C

1、计算机语言与程序设计
(1)什么是计算机语言? 什么是计算机语言? 简言之,计算机语言就是人与计算机之间进行信息“ 简言之,计算机语言就是人与计算机之间进行信息“交 的语言。 流”的语言。 翻译

语言

(2)怎样用计算机语言与计算机进行交流? 怎样用计算机语言与计算机进行交流? 用户通过计算机语言将命令或要求编写成程序形式,从键 用户通过计算机语言将命令或要求编写成程序形式, 盘将程序输入到计算机内部存储,再通过编译 连接、运行等 编译、 盘将程序输入到计算机内部存储,再通过编译、连接、运行等 步骤,将程序转变成计算机硬件能够识别和运行的形式, 步骤,将程序转变成计算机硬件能够识别和运行的形式,由计 算机自动按程序要求运行,并将结果显示或输出。 算机自动按程序要求运行,并将结果显示或输出。

用户 输出

程序

输入

编译、连接、 编译、连接、运行

计算机语言

问题:word文档是不是计算机语言? 文档是不是计算机语言? 问题:word文档是不是计算机语言 回答:不是!因为word文档是通过别人已经 回答:不是!因为word文档是通过别人已经 做好了的word软件执行的 软件执行的。 做好了的word软件执行的。而这里说的计算 机语言是用户通过某个语言软件工具编写的、 机语言是用户通过某个语言软件工具编写的、 可以通过编译 连接、运行、调试等方式在计 编译、 可以通过编译、连接、运行、调试等方式在计 算机上运行的程序或软件。简言之, 算机上运行的程序或软件。简言之,计算机语 言是可以用来编写程序或软件的工具。 言是可以用来编写程序或软件的工具。

(3)计算机语言的发展 (3)计算机语言的发展 (1)第一代计算机语言:机器语言,即由一系列0、1代码组 第一代计算机语言:机器语言,即由一系列0 成的语言。 B88B12H表示将数据 表示将数据128BH传送给寄存器 。 传送给寄存器AX 成的语言。如B88B12H表示将数据128BH传送给寄存器AX。 (2)第二代计算机语言:汇编语言,即由便于记忆的符号 第二代计算机语言:汇编语言, 助记符)替换由0 代码组成的一系列指令而构成的语言。 (助记符)替换由0、1代码组成的一系列指令而构成的语言。 如用MOV AX,128BH替换B88B12H表示将数据128BH传送 如用MOV AX,128BH替换B88B12H表示将数据128BH传送 替换B88B12H表示将数据128BH 给寄存器AX。 给寄存器AX。 (3)第三代计算机语言:高级语言,即由与特定计算机系统 第三代计算机语言:高级语言,即由与特定计算机系统 无关的、更接近于人类自然语言的计算机语言。例如: 无关的、更接近于人类自然语言的计算机语言。例如:C、 PASCAL、BASIC、FORTRAN等 PASCAL、BASIC、FORTRAN等。

(4)计算机程序及程序设计 (4)计算机程序及程序设计 简言之,计算机程序就是用计算机语言编写的命 简言之, 令的集合(或通俗地说,就是用户根据构思,按计 令的集合(或通俗地说,就是用户根据构思, 算机语言的语法编写成的能在计算机上运行并处理 某些功能的“文章” 某些功能的“文章”)。 程序设计就是如何编写出“漂亮的”程序的方法。 程序设计就是如何编写出“漂亮的”程序的方法。

2、C语言概述
(1)C语言的发展和特点 C 语言的前身是ALGOL语言和B语言。20世纪60年代曾经流 语言的前身是ALGOL语言和B语言。20世纪60年代曾经流 ALGOL语言和 世纪60 行一种称为ALGOL 60的语言 因为其不能满足发展的需要, 的语言, 行一种称为ALGOL 60的语言,因为其不能满足发展的需要,英 国人马丁.理查德(Mating Richards)在ALGOL语言的基础上发 国人马丁.理查德(Mating Richards)在ALGOL语言的基础上发 明了BCPL语言(简称B语言)。1972年贝尔实验室的布朗.W.卡 BCPL语言 )。1972年贝尔实验室的布朗.W. 明了BCPL语言(简称B语言)。1972年贝尔实验室的布朗.W.卡 尼汉和丹尼斯.M.利奇又在BCPL语言的基础上发明了C语言, .M.利奇又在BCPL语言的基础上发明了 尼汉和丹尼斯.M.利奇又在BCPL语言的基础上发明了C语言,并 语言改写了Unix操作系统。 Unix操作系统 用C语言改写了Unix操作系统。 1983年美国标准化协会制定了 1983年美国标准化协会制定了ANSI C标准。目前,PC机上 年美国标准化协会制定了ANSI C标准 目前,PC机上 标准。 流行的C C等版本 等版本, 流行的C有Turbo C, Quick C, Microsoft C等版本,教学中普 遍用的是Turbo C语言 语言。 遍用的是Turbo C语言。

(2)C语言具有下述特点: 语言具有下述特点: 1.语言简洁: 语言只有32个关键字, 1.语言简洁:C语言只有32个关键字,提供了很多语法供程序员尽 32个关键字 语言简洁 量简化程序。例如:用b=a++代替b=a; a=a+1。 量简化程序。例如: b=a++代替 代替b=a; a=a+1。 2.运算符丰富:共提供了34种运算符。运算符多, 2.运算符丰富:共提供了34种运算符。运算符多,运算对象的种 34种运算符 运算符丰富 类也多。 类也多。 3.数据结构丰富:提供了整型、实型、字符型、枚举型、数组、 3.数据结构丰富:提供了整型、实型、字符型、枚举型、数组、 数据结构丰富 结构体、共用体、指针、空等9种以上的数据类型。 结构体、共用体、指针、空等9种以上的数据类型。 4.具有结构化的控制语句,且语法限制不太严格。 4.具有结构化的控制语句,且语法限制不太严格。 具有结构化的控制语句 5.允许直接访问物理地址,能进行位操作, 5.允许直接访问物理地址,能进行位操作,能实现汇编语言的大 允许直接访问物理地址 部分功能,可以直接对硬件进行操作。 部分功能,可以直接对硬件进行操作。 6.生成目标代码质量高,程序执行效率高: 6.生成目标代码质量高,程序执行效率高:C的目标代码的效率仅 生成目标代码质量高 比汇编语言低15% 15%。 比汇编语言低15%。 7.可移植性好,基本不做修改就能用于各种计算机, 7.可移植性好,基本不做修改就能用于各种计算机,和各种操作 可移植性好 系统。 系统。

(3) 简单C程序示例 简单C
例1 求3个数中的最大数
main( ) /*主函数 /*主函数*/ 主函数* { int a,b,c,d;/*定义变量a,b,c,d*/ a,b,c,d;/*定义变量 定义变量a,b,c,d*/ scanf(“ d,%d,% ,&a,&b,&c);/*输入 个数送给a,b,c*/ scanf(“%d,%d,%d”,&a,&b,&c);/*输入3个数送给a,b,c*/ 输入3 d=max(a,b,c);/*调用函数max, a,b,c中大的一个 然后放置于变量d d=max(a,b,c);/*调用函数max,求a,b,c中大的一个,然后放置于变量d中*/ 调用函数max 中大的一个, printf(“ printf(“The maximal value is %d\n”,d);/*输出d的值*/ ,d);/*输出 的值* 输出d } int max(x,y ,z) /*定义函数max,求x,y,z中最大值 /*定义函数max,求x,y,z中最大值 */ 定义函数max,

int x,y;z;/*函数的形式参数x,y,z定义为整型*/ x,y; /*函数的形式参数x,y,z定义为整型 函数的形式参数x,y,z定义为整型* { int m; /*定义max函数中用到的变量m为整型*/ /*定义max函数中用到的变量 为整型* 定义max函数中用到的变量m if (x>=y) && (x>=z) m=x; m=x;

if (y>=x) && (y>=z) m=y; m=y; if (z>=x) && (z>=y) m=z; m=z; return(m); return(m); } /*返回 的值* /*返回m的值*/ 返回m

C语言程序结构 例2 C语言程序结构 stdio.h” #include “stdio.h stdio.h main( { int ) x, y ;
函数头

编译预处理

说明部分

scanf(“%d%d ,&x,&y) scanf( %d%d”,&x,&y) ; %d%d 程序部分 printf(“%d,%d,x+y=%d %d,%d,x+y=%d”,x printf( %d,%d,x+y=%d ,x , y, x+y) ; }

由此可看出C语言的一些结构特点,归纳起来有下面几点: 由此可看出C语言的一些结构特点,归纳起来有下面几点: 1).C程序是由一个或多个函数构成的,有且仅有一个主函数 1).C程序是由一个或多个函数构成的, 程序是由一个或多个函数构成的 main函数 函数)。 (main函数)。 2).无论程序中有多少函数,程序的执行总是从main函数开始 2).无论程序中有多少函数,程序的执行总是从main函数开始 无论程序中有多少函数 main main函数是整个程序的入口 函数是整个程序的入口。 的,即main函数是整个程序的入口。 3).函数由函数的首部和函数体两部分组成。首部包含函数类 3).函数由函数的首部和函数体两部分组成。 函数由函数的首部和函数体两部分组成 函数名、函数形式参数名、形式参数定义; 型、函数名、函数形式参数名、形式参数定义;例2中的 int max(x,y ,z) x,y; int x,y;z; max函数的首部 就是max函数的首部。它的各项对应如下: 就是max函数的首部。它的各项对应如下: int 函数类型 max 函数名 (x,y ,z) 函数形式参数名 x,y; int x,y;z; 形式参数定义

函数体部分包括说明部分和语句部分, 函数体部分包括说明部分和语句部分,是由最外层的大括弧括 包括说明部分和语句部分 起的部分。说明部分可有可无。 起的部分。说明部分可有可无。 语言书写格式自由,一行内可以写几条语句, 4). C语言书写格式自由,一行内可以写几条语句,一条语句 也可以分写在多行。 也可以分写在多行。 5).每条语句和说明的后面必须有一个分号。 5).每条语句和说明的后面必须有一个分号。 每条语句和说明的后面必须有一个分号 6).可以用/*…*/对程序的任何地方做注释。注释部分可以用 6).可以用/* */对程序的任何地方做注释。 可以用/* */对程序的任何地方做注释 汉字也可以用英语写,主要是为了便于理解, 汉字也可以用英语写,主要是为了便于理解,对编译和运行不 起作用。建议在编写有价值的程序时尽量使用注释。 起作用。建议在编写有价值的程序时尽量使用注释。

从上述程序我们还看到了C 从上述程序我们还看到了C语言程序的什 么“风格”? 风格”
但凡用计算机语言编写程序时,从程序上看总是 但凡用计算机语言编写程序时, 一条语句一条语句顺序写成的。★ 一条语句一条语句顺序写成的。 因此,我们今后看程序或写程序, 因此,我们今后看程序或写程序,要养成一个习 惯,就是看问题或想问题要善于将问题分解为一个 一个的具体可行步骤,不要总是“宏观”了解, 一个的具体可行步骤,不要总是“宏观”了解,要 先粗后细、逐步求精” “先粗后细、逐步求精”!

3、

C语言程序的编译和运行
(1) 程序运行步骤

C程序要在计算机上运行,需要经过下面几个步骤: 程序要在计算机上运行,需要经过下面几个步骤: ①编辑源文件 本阶段完成程序代码的录入和修改。修改完成后可将源 本阶段完成程序代码的录入和修改。 程序以.c为扩展名存盘。编辑C程序可以采用Edit 记事本、 .c为扩展名存盘 Edit、 程序以.c为扩展名存盘。编辑C程序可以采用Edit、记事本、 vi(Unix操作系统下的编辑工具)等,通常采用C语言提供的 vi(Unix操作系统下的编辑工具) 通常采用C 操作系统下的编辑工具 集成环境进行编辑。例如,可以采用Turbo C进行编辑 进行编辑。 集成环境进行编辑。例如,可以采用Turbo C进行编辑。 ②编译源文件 编译源文件 本阶段完成源程序的语法分析查错以及翻译源程序生成 以.obj为扩展名的目标程序。目标程序为机器语言,但是还 .obj为扩展名的目标程序。目标程序为机器语言, 为扩展名的目标程序 不能执行。 不能执行。

3、

C语言程序的编译和运行
1. 程序运行步骤

③连接、执行程序 连接、 本阶段将目标程序与其它目标程序或库连接装配, 本阶段将目标程序与其它目标程序或库连接装配,生成 以.exe为扩展名的可执行程序。可执行程序为机器语言,而 .exe为扩展名的可执行程序。可执行程序为机器语言, 为扩展名的可执行程序 且可以执行。 且可以执行。
源程序.c 源程序 编译 预处理 编 译 生 成 目 标 程序.obj 程序 连接 生成可执行 文件.exe 文件

库文件 .lib

图1-1 C语言的源程序变为可执行程序的过程

3、

C语言程序的编译和运行
(2) Turbo C 的上机过程

命令行:基于DOS环境 命令行:基于DOS环境 DOS 集成环境(IDE): 集成环境(IDE): Borland公司的 公司的Turbo 2.0和3.0为例说明 以Borland公司的Turbo C 2.0和3.0为例说明

Turbo C 2.0 的开发环境

Alt+大写字母选择菜单, Alt+F选择 Alt+大写字母选择菜单,如Alt+F选择File菜单 大写字母选择菜单 选择File菜单 F9编译源程序,Ctrl+F9连接运行,Alt+F5看运行结果 F9编译源程序,Ctrl+F9连接运行 Alt+F5看运行结果 连接运行, 编译源程序

Turbo C 3.0 的开发环境

Alt+大写字母选择菜单, Alt+F选择 Alt+大写字母选择菜单,如Alt+F选择File菜单 大写字母选择菜单 选择File菜单 F9编译源程序,Ctrl+F9连接运行,Alt+F5看运行结果 F9编译源程序,Ctrl+F9连接运行 Alt+F5看运行结果 连接运行, 编译源程序

如何进入Trubo C环境 如何进入Trubo C环境 ? ①由DOS平台进入Turbo C DOS平台进入Turbo 平台进入 C:\TC>TC.exe↙ 或其它安装路径) C:\TC>TC.exe↙ (或其它安装路径) ②Windows 平台进入Turbo C,有下面几种方法: 平台进入Turbo C,有下面几种方法 有下面几种方法: 方法1 进入MS-DOS方式,使用DOS命令; 方法1:进入MS-DOS方式,使用DOS命令; MS 方式 DOS命令 方法2 通过我的电脑或资源管理器找到tc exe, tc. 方法 2 : 通过我的电脑或资源管理器找到 tc.exe , 并且双 击运行Turbo 击运行Turbo C。 方法3 创建快捷方式, tc.exe放到桌面,方便进入。 方法3:创建快捷方式,将tc.exe放到桌面,方便进入。 放到桌面

建立Turbo 建立Turbo C 工作环境
如果安装采用Turbo 的默认目录结构,则可省略该项操作;否则, ③如果安装采用Turbo C的默认目录结构,则可省略该项操作;否则,需 要 建 立 Turbo C 工 作 环 境 : 按 Alt+O 键 盘 进 入 Options 菜 单 , 选 择 Directories项 修改下面的各项路径为安装路径: Directories项,修改下面的各项路径为安装路径: ?Include directories: C:\TC\INCLUDE Include directories: TC\ 包含文件默认目录为C TC\INCLUDE,修改为实际安装路径。 包含文件默认目录为C:\TC\INCLUDE,修改为实际安装路径。 ?Library directories: C:\TC\LIB Library directories: TC\ 库文件默认目录为C TC\LIB,修改为实际安装路径。 库文件默认目录为C:\TC\LIB,修改为实际安装路径。 ?Turbo C directories: C:\TC Turbo directories: 的默认工作目录,一般用于存放源程序文件、obj文件 文件、 Turbo C 的默认工作目录 , 一般用于存放源程序文件 、 obj 文件 、 exe文件 可修改也可不修改。 文件。 exe文件。可修改也可不修改。 修改完成后, Options菜单下的 菜单下的Save Options,保存所做配置。 修改完成后,选择 Options菜单下的Save Options,保存所做配置。

4、算 、
(1)算法的概念 算法的概念



算法是为解决某个特定问题而采取的确定且有限的步骤。 算法是为解决某个特定问题而采取的确定且有限的步骤。 要注意的是,这里所提到的算法是指在计算机上能够实现 要注意的是, 的算法。一般来说,算法对不同的计算机系统是基本不变的, 的算法。一般来说,算法对不同的计算机系统是基本不变的, 但具体实现这些算法的计算机语言则不是固定的。即: 但具体实现这些算法的计算机语言则不是固定的。 算法 ≠ C语言 语言 ?

算法和计算机语言的相互关系可用下面式子表示: 算法和计算机语言的相互关系可用下面式子表示: 算法=数据结构+ 算法=数据结构+计算机语言 算法+计算机语言= 算法+计算机语言=程序

(2)算法的特性 (2)算法的特性 有穷性: 一个算法应包含有限个操作步骤, ①有穷性: 一个算法应包含有限个操作步骤,每个步骤都在 合理的时间内完成。 合理的时间内完成。 确定性: 算法中每一条指令必须有确切的含义、 ②确定性: 算法中每一条指令必须有确切的含义、没有二义 对于相同的输入必须得出相同的结果。 性,对于相同的输入必须得出相同的结果。 ③可行性:算法中指定的操作都可以实现。 可行性:算法中指定的操作都可以实现。 ④有零个或多个输入。 有零个或多个输入。 ⑤有一个或多个输出。 有一个或多个输出。

(3)算法的设计与描述 (3)算法的设计与描述 ①设计方法:自顶向下、逐步求精 。 设计方法:自顶向下、 ②描述的方法:算法通常用流程图、N-S结构图、伪代码和语 描述的方法:算法通常用流程图、 结构图、 言描述等方法表示 。 下面我们通过例子进行说明。 下面我们通过例子进行说明。 例1:已知x,计算下面函数y的值。 已知x 计算下面函数y的值。 1 y = 0 -1 x>0 ( x>0 ) x=0 ( x=0 ) ( x < 0 )

算法初步设计(一级) 算法初步设计(一级) 1.读数据到变量x中。 读数据到变量x 2.判断x的值,将函数值赋给y,并存储在y中。 判断x的值,将函数值赋给y 并存储在y 3.打印变量y的值。 打印变量y的值。 算法逐步求精(二级):对一级算法中的第二步求精。 算法逐步求精(二级):对一级算法中的第二步求精。 ):对一级算法中的第二步求精 2-1 2-2 2-3 如果 如果 如果 ( x > 0 ) ( x = 0 ) ( x < 0 ) 则 y = 1 ; 则 y = 0 ; 则 y = -1 ;

以上算法的描述是用语言进行描述的。 语言进行描述的 以上算法的描述是用语言进行描述的。

③算法描述中的流程图组成

开始或终止框

处理框

输入输出框

判断框

流程线

连接点

上述算法用流程图或N-S结构图描述如下 上述算法用流程图或N

开始

输入X 输入
x≥0?

输入x 输入x
x≥0 x≥0 ?

Y
Y Y
x=0?

N
x = 0?

Y

N

N y=- =-1 =-

N
y=y=-1 输出y 输出 y=1 y=0

y=0 y=1 = =

输出y 输出

结束

流程图表示

N-S结构流程图表示

④根据算法编写C语言程序 根据算法编写C <stdio. #include <stdio.h> main() { float x; int y; /*定义变量x,y*/ /*定义变量x,y*/ 定义变量 /*输入变量x的值* /*输入变量x的值*/ 输入变量 /*比较* /*比较*/ 比较

scanf(“% ,&x) ,&x); scanf( %f”,&x);

(x>=0 (x=0 y=0 if (x>=0) { if (x=0) y=0; else else y=-1; y=printf(“% ,y) ,y); printf( %d”,y); } y=1 y=1; }

/*输出y的值* /*输出y的值*/ 输出

(4)计算机解题的基本步骤 (4)计算机解题的基本步骤 计算机解题的第一个任务 第一个任务就是对问题的分析讨论和对数 ① 计算机解题的第一个任务就是对问题的分析讨论和对数 据的定义过程,通过该过程对所解决的问题有清楚的了解, 据的定义过程,通过该过程对所解决的问题有清楚的了解, 并确定哪些信息需要作为原始数据输入、 并确定哪些信息需要作为原始数据输入、哪些信息要作为运 算结果输出、 算结果输出、程序中还需要哪些附加信息以及提供这些信息 的方法等。 的方法等。 数据定义好之后,就要进行算法的设计。 ② 数据定义好之后,就要进行算法的设计。算法的设计过 程就是对数据处理步骤的描述过程。 程就是对数据处理步骤的描述过程。 最后一步是写出可供计算机运行的程序, ③ 最后一步是写出可供计算机运行的程序,并交给计算机 编译运行。 编译运行。

5、 如何学好C语言程序设计? 如何学好C语言程序设计?
一、C语言的学习要点 1.学好C语言的语法、语句和功能。例如,下列程序要读懂, 1.学好C语言的语法、语句和功能。例如,下列程序要读懂, 学好 则必须要熟悉C语言的有关语法等。 则必须要熟悉C语言的有关语法等。 2.要熟练掌握C语言数据类型 比如int float、char、数组、 数据类型。 int、 2.要熟练掌握C语言数据类型。比如int、float、char、数组、 要熟练掌握 指针、结构体、文件等。 指针、结构体、文件等。 3.要熟练掌握C语言程序的结构和框架。如函数结构、 3.要熟练掌握C语言程序的结构和框架。如函数结构、分支结 要熟练掌握 程序的结构和框架 循环结构等。 构、循环结构等。 4.要熟练掌握C语言程序的编程算法。 4.要熟练掌握C语言程序的编程算法。 要熟练掌握

二、计算机的有关基本常识 1.程序是计算机语言中的语句或指令的有序集合。 1.程序是计算机语言中的语句或指令的有序集合。? 程序是计算机语言中的语句或指令的有序集合 2.编写的程序只是纸质或存储在计算机上的文档, 2.编写的程序只是纸质或存储在计算机上的文档,并不能在计 编写的程序只是纸质或存储在计算机上的文档 算机上直接运行。必须要经过编辑存储 edit)、 编辑存储( )、编译 算机上直接运行。必须要经过编辑存储(edit)、编译 compile)、连接(link或make) )、连接 (compile)、连接(link或make)后形成可执行文件 .exe),才能运行并得到结果。因此,在上机时, ),才能运行并得到结果 (.exe),才能运行并得到结果。因此,在上机时,要清楚目 前处于何种工作状态,不同的状态完成不同的功能。 前处于何种工作状态,不同的状态完成不同的功能。 3.程序中的语句或指令执行是有先后顺序的,即一个程序的执 3.程序中的语句或指令执行是有先后顺序的, 程序中的语句或指令执行是有先后顺序的 行顺序是串行的。而程序之间的执行顺序则可能是串行的, 行顺序是串行的。而程序之间的执行顺序则可能是串行的,也 可能是并行的。 可能是并行的。 4.计算机是由硬件和软件两大部分构成。 4.计算机是由硬件和软件两大部分构成。程序设计属于软件的 计算机是由硬件和软件两大部分构成 范畴,但软件的编写和设计要依赖硬件。 范畴,但软件的编写和设计要依赖硬件。

三、程序设计的基本技能 1.必须要掌握数据类型、典型的算法和程序结构。 1.必须要掌握数据类型、典型的算法和程序结构。 必须要掌握数据类型 2.必须能够具有自己独立阅读程序的能力。 2.必须能够具有自己独立阅读程序的能力。? 必须能够具有自己独立阅读程序的能力 3.必须能够自己独立编写程序并上机调试的能力。因此,不仅 3.必须能够自己独立编写程序并上机调试的能力。因此, 必须能够自己独立编写程序 的能力 要根据实际要求熟练地设计出解决的算法, 要根据实际要求熟练地设计出解决的算法,并运用学过的计算 机语言和有关的程序结构编写出程序, 机语言和有关的程序结构编写出程序,而且要能熟练掌握计算 机上有关的具体软件的功能,顺利地将程序用计算机来运行。 机上有关的具体软件的功能,顺利地将程序用计算机来运行。 4.计算机语言的学习是一门实践性很强的课程。因此,务必要 4.计算机语言的学习是一门实践性很强的课程。因此, 计算机语言的学习是一门实践性很强的课程 高度重视上机实践的环节。要敢于、勤于动手实践, 高度重视上机实践的环节。要敢于、勤于动手实践,在实践中 不断积累经验。 不断积累经验。 5.要自觉培养良好的程序设计方法、风格和习惯。 5.要自觉培养良好的程序设计方法、风格和习惯。 ? 要自觉培养良好的程序设计方法 END

求3个数中的最大数
main( ) /*主函数 /*主函数*/ 主函数* { int a,b,c,d;/*定义变量a,b,c,d*/ a,b,c,d;/*定义变量 定义变量a,b,c,d*/ scanf(“ d,%d,% ,&a,&b,&c);/*输入 个数送给a,b,c*/ scanf(“%d,%d,%d”,&a,&b,&c);/*输入3个数送给a,b,c*/ 输入3 d=max(a,b,c);/*调用函数max, a,b,c中大的一个 然后放置于变量d d=max(a,b,c);/*调用函数max,求a,b,c中大的一个,然后放置于变量d中*/ 调用函数max 中大的一个, printf(“ printf(“The maximal value is %d\n”,d);/*输出d的值*/ ,d);/*输出 的值* 输出d } int max(x,y ,z) /*定义函数max,求x,y,z中最大值 /*定义函数max,求x,y,z中最大值 */ 定义函数max,

int x,y,z;/*函数的形式参数x,y,z定义为整型*/ x,y,z;/*函数的形式参数x,y,z定义为整型 函数的形式参数x,y,z定义为整型* { int m; /*定义max函数中用到的变量m为整型*/ /*定义max函数中用到的变量 为整型* 定义max函数中用到的变量m if ((x>=y) && (x>=z)) m=x; m=x; if ((y>=x) && (y>=z)) m=y; m=y; if ((z>=x) && (z>=y)) m=z; m=z; return(m); return(m); } /*返回 的值* /*返回m的值*/ 返回m

上述算法用流程图或N-S结构图描述如下 上述算法用流程图或N

开始

输入X 输入
x≥0?

输入x 输入x
x≥0 x≥0 ?

Y
Y Y
x=0?

N
x = 0?

Y

N

N y=- =-1 =-

N
y=y=-1 输出y 输出 y=1 y=0

y=0 y=1 = =

输出y 输出

结束

流程图表示

N-S结构流程图表示

程序的基本结构: 程序的基本结构:

顺序程序结构、分支程序结构、 顺序程序结构、分支程序结构、循环程序结构 子程序结构(或函数结构) 子程序结构(或函数结构)

数据类型: 数据类型:
整型(int) 整型(int) 字符型(char) 单精度型(float) 字符型(char) 单精度型(float) 基本类型 实型(浮点型) 实型(浮点型) 双精度型(double) 双精度型(double) 枚举型 (enum) enum) 数组类型 数据类型 构造类型 结构体类型(struct) 结构体类型(struct) 共用体类型(union) 共用体类型(union) 指针类型

空类型(void) 空类型(void)

程序、C语言和算法的关系 程序、 1.程序包括两个方面的内容: 1.程序包括两个方面的内容: 程序包括两个方面的内容 (1)对数据的描述。也就是说,在程序中的要指定数据 对数据的描述。也就是说, 的类型和数据的组织形式, 数据结构。 的类型和数据的组织形式,即数据结构。 (2)对数据的操作的描述。即操作步骤,也就是算法。 对数据的操作的描述。即操作步骤,也就是算法 算法。 因此,程序、数据结构和算法的关系可用如下公式表示: 因此,程序、数据结构和算法的关系可用如下公式表示:

程序=数据结构+ 程序=数据结构+ 算法

程序、C语言和算法的关系 程序、 2.程序、C语言和算法的关系 2.程序 程序、 考虑到程序必须在一个具体的计算机语言环境下才能 实现, 实现,而数据结构在计算机语言中具体表现为数据类型和 有关的运算或操作,因此,程序、计算机语言( 有关的运算或操作,因此,程序、计算机语言(具体就是 语言)和算法的关系可表示为: 指C语言)和算法的关系可表示为:

程序=算法+数据类型+C语言工具和环境 程序=算法+数据类型+

求3个数中的最大数(好的编程风格) 个数中的最大数(好的编程风格)
main( ) /*主函数 /*主函数*/ 主函数* { int a,b,c,d;/*定义变量a,b,c,d*/ a,b,c,d;/*定义变量 定义变量a,b,c,d*/ scanf(“ d,%d,% ,&a,&b,&c);/*输入 个数送给a,b,c*/ scanf(“%d,%d,%d”,&a,&b,&c);/*输入3个数送给a,b,c*/ 输入3 d=max(a,b,c);/*调用函数max, a,b,c中大的一个 然后放置于变量d d=max(a,b,c);/*调用函数max,求a,b,c中大的一个,然后放置于变量d中*/ 调用函数max 中大的一个, printf(“ printf(“The maximal value is %d\n”,d);/*输出d的值*/ ,d);/*输出 的值* 输出d } int max(x,y ,z) /*定义函数max,求x,y,z中最大值 /*定义函数max,求x,y,z中最大值 */ 定义函数max,

int x,y,z;/*函数的形式参数x,y,z定义为整型*/ x,y,z;/*函数的形式参数x,y,z定义为整型 函数的形式参数x,y,z定义为整型* { int m; /*定义max函数中用到的变量m为整型*/ /*定义max函数中用到的变量 为整型* 定义max函数中用到的变量m if ((x>=y) && (x>=z)) m=x; m=x; else if ((y>=x) && (y>=z)) m=y; m=y; else return(m); return(m); } if ((z>=x) && (z>=y)) m=z; m=z; /*返回 的值* /*返回m的值*/ 返回m

求3个数中的最大数(不好的编程风格) 个数中的最大数(不好的编程风格)
main( ) { int a,b,c,d; scanf(“%d,%d,%d”,&a,&b,&c); a,b,c,d; scanf(“ d,%d,% ,&a,&b,&c); printf(“ printf(“The maximal value is %d\n”,d);} ,d); int max(x,y ,z) int x,y,z; x,y,z; { int m; if ((x>=y) && (x>=z)) m=x; m=x; else if ((y>=x) && (y>=z)) m=y; m=y; else if ((z>=x) && (z>=y)) m=z; m=z; return(m); return(m); } /*返回 的值* /*返回m的值*/ 返回m

例1-2 计算太阳和地球间的万 有引力
算法分析: 由普通物理知, 两个质量分别为m1和 m2的物体之间的万有引力与两个物体质量的乘 积成正比, 与两个物体质心之间的距离R的平方 成反比: m1×m2 F = G -------R2 式中的G为引力恒量。如果取质量的单位为克, 距离的单位为厘米, 力的单位为达因, 则 G ≈6.67259×10-11m ^3*s ^-2*kg ^-1 因此, 只要将太阳的质量1.987×10^30千克和 地球的质量5.975×10^24千克以及两者之间的 距离1.495×10^11米代入上式, 即可算出太阳 和地球之间的万有引力。

C0102.C分析

计算公式中要用三个变化的量:两个物体的质量 m1、m2,两者间距离r。子函数设有三个参数:
float grav(float m1,float m2,float distance)

在主函数中调用子函数时,要给这三个参数确切 的值,否则,计算时没有数值,将会出错:
float g, Msun , Mearth ,Distance;
Distance = 1.495E11; Msun = 1.987E30 ;Mearth = 5.975E24;

g = grav( Msun , Mearth , Distance );

程序运行时,主函数中三个实参经调用语句传到 子函数,在子函数经过计算将结果返回主函数:
g = G*m1*m2/(distance*distance); return g;

最后输出结果:
printf("The gravitation between sun and earth is %g Newton \n",g);

例1-2 程序(C0102.C)
/* 程序 GRAV.C: 计算太阳和地球之间的万有引力 */

float grav(float m1,float m2,float distance) { float g, G = 6.67259E-11; g = G*m1*m2/(distance*distance); return g; } //子函数 grav main( ) { float g, Msun , Mearth ,Distance;
Distance = 1.495E11; Msun = 1.987E30 ; 5.975E24; Mearth =

g = grav( Msun , Mearth , Distance ); printf("The gravitation between sun and earth is %g Newton \n",g); }



析 将计算任意两个质点之间的引力公式单
独编写为一个函数grav(), 用于计算太 阳和地球之间的万有引力。这样做有两 个好处: (1)、简化了主函数的编写。在编写主 函数时,只需按要求填写实际参数,调 用grav()就可以得到计算结果。 例 如 : g = grav(Msun,Mearth,1.495E11); (2)、如果还要计算其他物体之间的引力, 例如地球和月球之间的万有引力,就不 必再次编写相应的程序段了, 只需在调 用grav()函数时换上相应的实际参数即 可。

1.3 求解实际问题的步骤











结束语
“纸上谈兵”学不出程序设计本领; 只有大量上机、编程、调试,才能 掌握。 学好程序设计语言的唯一途径是上 机。 你的编程能力和你在机器上投入的 时间成正比。


相关文章:
第一章 C语言初步知识
第一章 C语言初步知识_IT认证_资格考试/认证_教育专区。二季C第一章 C 语言初步知识一、选择题: 1.以下叙述中错误的是 A) 用户所定义的标识符允许使用关键字...
第一章 C语言的基础知识练习题
第一章 C语言的基础知识练习题_IT认证_资格考试/认证_教育专区。第一章 C语言的基础知识练习题第一章 C 语言的基础知识 第一节 对 C 语言的初步认识 习题 ...
第1章 C语言的初步识
第一章:C 语言初步知识 1.1 C 语言的概述语言:语言是一种沟通的工具。 C 语言:它是一种和计算机沟通的语言。 程序:计算机执行的一系列指令的集合。 在计算...
第一章 C语言程序设计初步
C 语言程序设计详解第一章 C 语言程序设计初步 一、主要知识点(一)程序设计语言的发展 1、机器语言 2、汇编语言 3、面向过程的语言 4、面向对象的设计语言 (二...
C语言 第一章
第一章C语言初步 46页 10财富值 第一章 C语言 25页 1财富值 第一章 交互式c语言 53页 2财富值 第一章c语言 67页 2财富值 C语言 第一章新 26页 1财...
C语言第一章
第一章C语言初步 46页 10财富值 第一章 C语言 25页 1财富值 第一章 交互式c语言 53页 2财富值 第一章c语言 67页 2财富值 C语言 第一章新 26页 1财...
第一章 C语言基础知识
圆括号不能 第二章 C 语言程序设计的初步知识 一、选择题(该作业中空类型不属于基本类型) 1.在 C 语言中,下列类型属于构造类型的是 。 A)整型 B)字符型 ...
C语言第一章
第一章C语言初步 46页 10财富值 第一章 C语言 25页 1财富值 第一章 交互式c语言 53页 2财富值 第一章c语言 67页 2财富值 C语言 第一章新 26页 1财...
第一章 C语言程序设计基础
第一章 C语言程序设计初步 36页 免费 c语言程序设计基础(第二版... 45页 ...第一章 C 语言程序设计基础 C 语言的发展及其特点和应用: C 语言的发展: (...
第一章 C语言基础知识
第一章 C 语言基础知识 一、选择题 1、 下面叙述错误的是: A、 C 程序中可以有若干个 main()函数 B、 C 程序必须从 main()函数开始执行 C、 C 程序中...
更多相关标签:
c语言第一章 | c语言程序设计第一章 | 大奥第一章 | 胖戎母亲的屈辱第一章 | 初一数学第一章视频 | 第一章干保姆张姐 | 初二物理上册第一章 | 玉桂夫人书包网第一章 |