1.07k likes | 1.21k Vues
C 程 序 设 计. 第三版 计算机学院基础教学中心. 课程教学安排. 学时分配:课堂 —— 48 学时 实验 ——30 学时; ( 包括大作业上机 ) 学习目标: 掌握 C 语言基本语法、语义、数据类型; 掌握程序设计的基本方法、常用算法; 掌握调试程序的基本技能 : 能够熟练应用 Turbo C 、 Visaul C++ 集成环境或其它集成开发环境进行 C 语言的编写、编译与调试. 考核内容和方式. 内容 1 :习题集和课后内容编程题 方式:在本地机调试后,在指定时间内上传到服务器,由计算机改题。
E N D
C 程 序 设 计 第三版 计算机学院基础教学中心
课程教学安排 • 学时分配:课堂—— 48学时 实验——30学时; (包括大作业上机) • 学习目标: • 掌握C语言基本语法、语义、数据类型; • 掌握程序设计的基本方法、常用算法; • 掌握调试程序的基本技能:能够熟练应用Turbo C、Visaul C++集成环境或其它集成开发环境进行C语言的编写、编译与调试 计算机学院基础教学中心
考核内容和方式 • 内容1:习题集和课后内容编程题 • 方式:在本地机调试后,在指定时间内上传到服务器,由计算机改题。 • 内容2:习题集中的客观题(选择题,填空题,程序修改题) • 方式:在本学期内由教师收取习题集批改检查。 计算机学院基础教学中心
考核内容和方式(续) • 内容3:实验编程题 • 方式:在实验课上完成提交给服务器后由计算机批改 • 内容4:技能测试题 • 方式:在最后一次实验课上用1个半小时时间进行测试。 • 内容5:提交大作业 计算机学院基础教学中心
考核 • 理论成绩:平时作业(30%)+期末考试(70%) • 实验成绩:大作业成绩(30%)+技能测试成绩(70%) 计算机学院基础教学中心
内容和进度1 • 第 1 章 C语言概述 • 第 2 章 程序的灵魂—算法 • 第 3 章 数据类型、运算符与表达式 • 第 4 章 最简单的程序设计—顺序程序设计 • 第 5 章 选择结构程序设计 • 第 6 章 循环控制 计算机学院基础教学中心
内容和进度2 • 第 7 章 数组 • 第 8 章 函数 • 第 9 章 预处理命令 • 第10章 指针 • 第11章 结构体 • 第12章 位运算 • 第13章 文件 计算机学院基础教学中心
第一章 c语言概述 • 1.1 C语言出现的历史背景 • 1.2 C语言的特点 • 1.3 简单C程序介绍 计算机学院基础教学中心
C语言历史 • 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 • 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。 • 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个名字“B语言”。 • 1973年,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言 计算机学院基础教学中心
C语言历史(Contiue) • 1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言 计算机学院基础教学中心
1.1 c语言概述 • 常见的高级语言 • FORTRAN——数值计算、丰富的数学库; • BASIC——解释型、编译型; • PASCAL——第一个系统体现结构化的语言; • C——可用于系统软件、应用软件的开发; • C + +——面向对象的方法;C的超集; • JAVA——与操作平台无关,适于编写网络异构 环境应用软件 计算机学院基础教学中心
1.2 C语言的特点 • C语言允许直接访问物理地址,能进行位运算,可以直接对硬件进行操作。 • 计算机语言的分类 • 机器语言——二进制机器指令、可直接执行、依 赖具体计算机硬件; • 汇编语言——助记符号、需经汇编处理、依赖具 体计算机硬件; • 高级语言——需经编译处理、与硬件无关,可移 植性好; 计算机学院基础教学中心
1.3 简单的C程序介绍 • 输出hello,world main() { printf(“hello,world”); } 编译 运行 Hello.c Hello.exe 计算机学院基础教学中心
YS • 计算两个数中的较大数 main( ) { int a , b , c ; scanf (”%d,%d”, &a, &b) ; c = max(a , b) ; /*调用max函数*/ printf (“max=%d\n”, c) ; } int max(int x , int y) /*自定义函数*/ { int z ; if (x>y) z=x ; else z=y ; return(z) ; } 计算机学院基础教学中心
总结C程序概貌1 • 函数是构成C程序的基本单位; • 被调用函数可以是用户自定义函数、也可是系统提供的函数; • 函数的构成: 函数类型 函数名(函数参数) 函数首部 {…………} 函数体 计算机学院基础教学中心
总结C程序概貌2 • 一个C程序中必须有一个而且只能有一个main函数;一个程序总是从main函数开始执行。 • 每个语句最后必须有一个分号。 • 可以用/*…*/在c程序中加以注释. 计算机学院基础教学中心
第一章要点: • C程序的关键特点 • C程序由函数构成,优点 计算机学院基础教学中心
第二章 程序的灵魂--算法 • 2.1 算法的概念 • 2.2 简单算法举例 • 2.3 算法的特征(自学) • 2.4 算法的表示 • 2.2 算法举例 • 2.5 结构化程序设计方法 计算机学院基础教学中心
2.1 算法的概念 • 算法——求解问题的方法和步骤; • 算法设计——要考虑到是否正确、质量优劣、 表达明确清晰; • 算法类别——数值运算算法、非数值运算算法; 计算机学院基础教学中心
2.4 怎样表达一个算法 • 算法的表示方法: • 自然语言 • 传统流程图 • N-S结构化流程图 • 伪代码 • 结构化程序设计的三种基本结构: • 顺序结构 • 选择结构 • 循环结构 计算机学院基础教学中心
开始 A B 结束 结构化程序设计的三种基本结构1 • 顺序结构 N-S流程图 传统流程图 计算机学院基础教学中心
T F P P B A T F A B 结构化程序设计的三种基本结构2 • 选择结构(分支结构) 入口 N-S流程图 传统流程图 出口 计算机学院基础教学中心
结构化程序设计的三种基本结构3 • 例:对学生成绩s进行判断,及格则输出PASS字样 s>=60? T F 输出"PASS" s<60? T F 输出"PASS" 计算机学院基础教学中心
结构化程序设计的三种基本结构4 • 循环结构 其中:P为循环判断条件;A为要重复执行的操作,称为循环体 当P为真 A P A 出口 计算机学院基础教学中心
2.5 结构化程序设计方法 • 自顶向下:由整体到具体 • 逐步细化:逐层划分功能 • 模块化设计:每个模块各司其值实现具体功能 • 结构化编程:用结构化语句描述控制过程 • 特点:结构清晰,可靠性强,易于调试,验证,扩充 计算机学院基础教学中心
第三章 数据类型、运算符与表达式 • 3. 1 C的数据类型 • 3. 2 常量与变量 • 3. 3 整型数据 • 3. 4 实型数据 • 3. 5 字符型数据 计算机学院基础教学中心
第三章 数据类型、运算符与表达式 • 3. 6 变量赋初值 • 3. 7 各类数值型数据间的混合运算 • 3. 8 算术运算符和算术表达式 • 3. 9 赋值运算符和赋值表达式 • 3. 10 逗号运算符和逗号表达式 计算机学院基础教学中心
3.1 C的数据类型 计算机学院基础教学中心
3. 2 常量与变量 • 常量 • 符号常量的使用 • 变量 • 变量三要素 • 标识符命名规则 计算机学院基础教学中心
常量定义 • 常量: 其值不能改变的量 形式上:程序序中直接书写的数据 例如:a=100; b=a+12; 常量类型:以字面形式区分 例如: 12 (基本整型) 3.5 (实型) 123L(厂整型) ‘A’ (字符型) 计算机学院基础教学中心
常量--符号常量1 符号常量:用标识符代表的常量 例如: #define PRICE 30 /*定义符号常量*/ main( ) { int num1, num2, num3, cost1, cose2, cost3; ┇ cost1=num1*PRICE; /*引用符号常量*/ cost2=num2*PRICE; cost2=num2*PRICE; ┇ } 计算机学院基础教学中心
常量--符号常量2 定义符号常量的意义: 在程序中多处引用同一个常数时,采用符号常 量便于参数的修改、减少较长数据的输入工作量。 注意: • 符号常量名可用大写或小写字母,为了便于与变量名区分,通常用大写。 • 在符号常量作用域内,不得出现符号常量被赋值 现象。如:PRICE=20 非法。 计算机学院基础教学中心
变量 • 定义: 其值可以改变的量 计算机学院基础教学中心
变量--命名规则1 • 标识符命名规则 • 由大或小写字母、数字、下划线组成,且第一个字符必须是字母或下划线。 • 变量命名举例: 合法:sum、SUM、Average、toal、cost_1、_1 非法:for、num-1、1a、ABC# 计算机学院基础教学中心
变量--命名规则2 • C变量名中字母可大小写,但有大小写之分, SUM、sum、Sum被视为不同的变量。 • 有效字符相同的变量名被视为是同一个变量; • 如MS C中student_name与 student_number。 • 在实际应用中命名应尽量见名知义。 • C中变量必须先定义后引用。 计算机学院基础教学中心
┇ ┇ n的地址→ 202 m的地址→204 10 25 变量--三要素1 • 变量名 • 变量值 • 变量的地址: • 给变量分配的存储单元第一个字节的地址(变量的指针) 例如:int n, m; n=10; m=25; 计算机学院基础教学中心
变量--三要素2 • 变量被赋值的物理意义是向它的存储单元存数; • 变量可多次被赋值,新值将覆盖旧值; 例如:n=10; /*赋值:破坏性的*/ n=45; • 变量被引用的物理意义是从它的存储单元中读数; 例如:n=10; m=n+2; /*引用:非破坏性的*/ • 定义变量的时候用数据类型定义 例如:int a; 计算机学院基础教学中心
3. 3 整型数据 • 整型常量 • 整型变量 • 整型数据的溢出 计算机学院基础教学中心
整型常量 有三种表示形式: • 十进制 • 八进制——以数字0开头; • 十六进制——以0x 或0X开头; 其中0:数字0 例:53 0123 0x53 -127 -0177 -0X7F 计算机学院基础教学中心
整型变量--类型 计算机学院基础教学中心
整型变量--类型2 • 在TC中各类型值的范围 32bit -231~ (231-1) 即-2147483648~2147483647 • 在VC++ 6.0中各类型值的范围 计算机学院基础教学中心
整型变量—定义形式 • C变量定义的一般形式: (适合于任何类型) 类型标识符 变量名表; 其中: 变量名表——多个变量以逗号分隔; 变量定义位置——通常在函数体内执行语句之前。 计算机学院基础教学中心
┇ 2byte i 初值不定 j K m 初值为0 a 初值不定 b 初值为5 u 4byte ┇ 2byte ┇ 例: main( ) { int i, j, k; static int m; long a, b=5; unsigned u; ┇ i=20; b=20; ┇ } 计算机学院基础教学中心
整常量--类型 • int 型常数: -32768~32767视为int常数,可赋给int、long型变量。 • long型常数: 在 -2147483648 ~ 2147483647之内、但超出 • -32768~32767的数及带后缀l / L的视为long型常数;可赋给long型变量。 • 一个整常量后面加上一个U/u,认为是unsigned int,例:123u 计算机学院基础教学中心
整型量--溢出 • 一个变量无法容纳下要存入的数,这种现象称为溢出,溢出将导致数据存储错误;在运算过程中也有可能产生溢出导致运算结果错,因此程序设计中应避免产生溢出。 计算机学院基础教学中心
整型量--溢出(续1) 例:int a, b; a=65536; b=123*456; printf("a=%d, b=%d", a, b); (溢出的错误结果) a=0, b=-9448 计算机学院基础教学中心
整型量--溢出3 • a=65536; 65535=(1 0000 0000 0000 0000 )2 a: 只存后16位 • b=123*456; 123×456=56088=( 1101 1011 0001 1000 )2 b: -9448的补码 0000 0000 0000 0000 1101 1011 0001 1000 计算机学院基础教学中心
整型量--溢出4 修改后: long a, b; a=65536; b=123L*456; printf("a=%ld, b=%ld", a, b); a=65536, b=56088 (正确) 计算机学院基础教学中心
3. 4 实型数据 • 实型常量 • 实型变量 • 实型量的舍入误差 计算机学院基础教学中心
实型常量1 • 有两种表示形式:十进制小数、十进制指数 • 例:123.0 0.123 -14.2 0.0 0. .123 1.23e2 12.3e1 • 例:表示12亿3千万 数学方式——1230000000或12.3×108 程序中——1230000000.0 (小数形式的实常数),12.3e+8、1.23e9、123e7 (指数形式) 计算机学院基础教学中心