内 容 简 介
本书以Visual C++ 6.0为开发平台,全面介绍了C语言的基础知识、程序结构及程序编写技巧。全书共分为12章,包括引言、C语言基础知识、顺序结构程序设计、选择结构程序设计、循环结构程序设计、函数、预处理、数组、指针、结构体与共用体、文件、位运算。
本书内容丰富、结构合理、思路清晰、语言简练流畅、示例翔实,在准确讲解概念的基础上力求通俗易懂,大量引入实例,分析程序设计思路,旨在培养学生的实践动手能力。每章均配有丰富的例题和习题,并附有参考答案。
本书既可作为普通高校非计算机专业计算机公共课的教材,也可作为学习C语言程序设计的自学用书。
前 言
“C语言程序设计”是高校计算机专业和理工科专业重要的公共基础课程之一。C语言的功能强大,使用灵活方便,移植性强,兼有高级语言和低级语言的特点,利用C语言可以编写系统软件和应用软件。
作者根据多年的教学经验,结合高校非计算机专业计算机基础教学的最新大纲,在分析国内外多种同类教材的基础上,编写了本书。本书力求通过理论联系实际,采用计算思维的方法,引导和启发学生掌握思考和解决问题的方法,达到举一反三的目的。
本书共分12章,主要内容如下:
第1章主要介绍C语言的发展过程及特点、C语言的结构特点、C语言程序的执行过程。
第2章主要介绍C语言的数据类型、标识符、常量和变量、运算符和表达式等内容。
第3章主要介绍算法的基本概念、C语言的基本语句、数据的输入和输出等内容。
第4章主要介绍if结构、if…else结构、if语句的嵌套、switch语句。
第5章主要介绍while语句、do…while语句、for语句、循环的嵌套、break和continue语句在循环结构中的应用等内容。
第6章主要介绍函数的基本概念、变量的作用域和存储类型、内部函数和外部函数、函数的递归调用等内容。
第7章主要介绍宏定义、文件包含、条件编译等内容。
第8章主要介绍数组概述、一维数组、二维数组、字符数组与字符串等内容。
第9章主要介绍指针概述、指针变量与简单变量的关系、指针与数组、指针作为函数的参数、函数的返回值为指针、指向指针的指针等内容。
第10章主要介绍结构体类型、结构体数组、结构体变量与函数、共用体数据类、枚举数据类型、链表的概念等内容。
第11章主要介绍C文件的基本概念和分类、文件的基本操作、文件的定位、出错的检测等内容。
第12章主要介绍位的取反运算、左移运算、右移运算、与运算、或运算、异运算、复合位运算等内容。此章为选讲章节。
本书内容丰富、结构合理、思路清晰、语言简练流畅,书中所有示例都已在Visual C++ 6.0 环境下调试并运行通过。为了帮助读者更好地掌握C语言,每章末尾都安排了类型丰富的习题,并且随书提供了自主开发的“C语言辅导学习系统”软件。辅导学习系统中有“学习指导”、“单元练习”、“综合练习”以及“经典算法”等模块,紧密结合教学内容,已应用于教学实践多年,深受师生好评。读者依据本书循序渐进地学习,可以巩固基本知识、培养实践能力、增强对基本概念的理解和解决实际问题的能力,能够比较容易地掌握C语言的主要用法。
本书获内蒙古科技大学教材建设项目资助,由内蒙古科技大学计算机教学基地的教师编写,由黄迎久、庞润芳任主编,徐扬、贾茹、赵军富、胡晓燕任副主编。第1章和第2章由黄迎久编写;第3章、第4章和前言由徐扬编写;第5章和第11章由庞润芳编写;第6章、第7章和第12章由贾茹编写;第8章和附录由赵军富编写;第9章和第10章由胡晓燕编写。全书由黄迎久负责统稿。
由于作者水平有限,书中的疏漏和瑕疵在所难免,欢迎广大读者批评指正。
编 者
目 录第1章 引言 11.1 C语言的发展过程及特点 21.1.1 C语言的发展过程 21.1.2 C语言的特点 21.2 简单的C语言程序 31.3 C语言程序的结构 51.4 C语言程序的执行 61.4.1 编译源程序 61.4.2 链接目标程序 61.4.3 C语言开发工具简介 7本章小结 12习题 13第2章 C语言基础知识 152.1 C语言的数据类型 162.1.1 整型数据 162.1.2 浮点型数据 182.1.3 字符型数据 192.2 标识符、常量和变量 202.2.1 标识符 202.2.2 常量 212.2.3 变量 232.3 运算符与表达式 242.3.1 概述 242.3.2 算术运算符及算术表达式 252.3.3 赋值运算符及赋值表达式 262.3.4 自增、自减运算符 272.3.5 关系运算符及关系表达式 282.3.6 逻辑运算符及逻辑表达式 292.3.7 位运算符及位运算 302.3.8 条件运算符及条件表达式 312.3.9 逗号运算符及逗号表达式 322.3.10 数据类型的转换 322.4 小型实训案例 33本章小结 34习题 34第3章 顺序结构程序设计 373.1 算法 383.1.1 算法的概念 383.1.2 算法的表示 393.2 结构化程序设计的三种基本结构 403.3 C语言的基本语句 403.4 数据的输入/输出 423.4.1 格式输出函数printf( ) 423.4.2 格式输入函数scanf( ) 433.4.3 格式字符 443.4.4 字符输入/输出函数 473.5 程序应用实例 483.6 小型实训案例 50本章小结 51习题 51第4章 选择结构程序设计 554.1 if结构 564.1.1 if语句 564.1.2 if…else语句 574.1.3 if语句的嵌套 584.2 switch语句 604.2.1 switch语句的一般格式 604.2.2 break语句在switch语句中的应用 624.3 程序应用实例 634.4 小型实训案例 65本章小结 66习题 66第5章 循环结构程序设计 715.1 概述 725.2 while语句 725.3 do…while语句 765.4 for语句 775.5 循环的嵌套 795.6 break语句与continue语句 805.6.1 break语句 805.6.2 continue语句 815.6.3 break语句与continue的比较 835.7 几种循环的比较 835.8 程序应用实例 835.9 小型实训案例 89本章小结 90习题 90第6章 函数 956.1 函数概述 966.1.1 函数的定义 976.1.2 函数的声明和调用 1006.1.3 函数的参数传递 1056.2 变量的作用域和存储类型 1076.2.1 变量的作用域 1086.2.2 变量的存储类型 1106.3 内部函数与外部函数 1146.4 函数的递归调用 1166.5 程序应用实例 1176.6 小型实训案例 119本章小结 120习题 121第7章 预处理 1277.1 宏定义 1287.2 文件包含 1307.3 条件编译 131本章小结 133习题 133第8章 数组 1378.1 概述 1388.2 一维数组 1398.2.1 一维数组的定义 1398.2.2 一维数组的初始化 1408.2.3 一维数组元素的引用 1408.2.4 一维数组的应用 1428.3 二维数组 1478.3.1 二维数组的定义 1478.3.2 二维数组的初始化 1488.3.3 二维数组的引用 1498.3.4 二维数组的应用 1498.4 字符数组与字符串 1528.4.1 字符数组 1528.4.2 字符串 1538.4.3 字符串处理函数 1558.4.4 字符数组的应用 1598.5 数组作函数参数 1608.5.1 数组元素作函数实参 1608.5.2 数组名作函数实参 1618.6 小型实训案例 162本章小结 163习题 164第9章 指针 1719.1 指针概述 1729.1.1 指针变量的定义 1729.1.2 指针变量的初始化 1739.1.3 指针变量的引用 1749.1.4 指针的运算 1749.2 指针变量与简单变量的关系 1759.3 指针与数组 1779.3.1 指向一维数组的指针 1779.3.2 指向多维数组的指针 1789.3.3 字符指针 1829.3.4 指针数组 1859.4 指针作为函数的参数 1869.5 函数的返回值为指针 1889.6 指向函数的指针 1899.6.1 指向函数的指针变量定义 1899.6.2 函数指针变量的使用 1909.7 指向指针的指针 1919.8 程序应用实例 1929.9 小型实训案例 194本章小结 195习题 196第10章 结构体与共用体 20110.1 结构体类型 20210.1.1 结构体的概念 20210.1.2 结构体类型的定义 20210.1.3 结构体变量的定义 20410.1.4 结构体变量的初始化 20510.1.5 结构体变量成员的引用 20610.2 结构体数组 20810.2.1 结构体数组的定义 20810.2.2 结构体数组的初始化 20810.2.3 结构体数组的引用 20910.3 结构体变量与函数 21010.4 共用体数据类型 21210.4.1 共用体类型的声明 21210.4.2 共用体变量的定义、初始化及引用 21310.5 枚举数据类型 21510.5.1 枚举类型的定义 21510.5.2 枚举变量的定义 21510.5.3 有关枚举型数据的操作 21610.6 链表的概念 21610.6.1 动态分配内存 21710.6.2 单链表的建立 21810.6.3 从单链表中删除节点 22010.6.4 向链表中插入节点 22010.7 小型实训案例 222本章小结 223习题 223第11章 文件 22911.1 C语言文件的基本概念与分类 23011.1.1 文件的基本概念 23011.1.2 文件的分类 23011.2 文件的基本操作 23111.2.1 文件类型指针 23111.2.2 打开文件函数fopen( ) 23211.2.3 关闭文件函数fclose( ) 23311.3 文件的读写 23311.3.1 字符读/写函数 23411.3.2 字符串读/写函数 23711.3.3 数据块读/写函数 23711.3.4 格式化读/写函数 23811.4 文件的定位 23911.4.1 rewind()函数 23911.4.2 fseek()函数 23911.4.3 ftell()函数 24011.5 出错的检测 24111.6 小型实训案例 242本章小结 243习题 243第12章 位运算 24712.1 按位取反运算 24812.2 按位左移运算 24912.3 按位右移运算 24912.4 按位与运算 25012.5 按位或运算 25112.6 按位异或运算 25212.7 复合位运算符 253本章小结 254习题 254附录A C语言的关键字 257附录B ASCII码表 259附录C 常用库函数 260附录D C运算符的优先级与结合性 267