本教材为山东省精品课程《数据库系统概论》研究成果。
C语言是国内外各高校理工科专业的一门重要基础课程,是一些计算机相关专业的研究生入学考试科目之一,地位至关重要。
本书是山东省精品课程《信息技术基础实践》的研究成果,是在长期从事程序设计类课程教学、教研经验丰富的一线教师教学手稿的基础上修改、整理而成。在本系列教材的规划、编写、整理过程中,不仅对现有较经典的教材进行了充分调研,并多次邀请专家和程序设计类课程的一线教师参会论证,力求博采众长、定位准确、突出特色。
本书具有如下特点:
(1) 全书体系完整,重点突出,深入浅出,循序渐进,图文并茂,讲解透彻,剖析深入,案例丰富新颖。
(2) 关注例题之间的阶梯性和连贯性,所有例题均有程序设计思路分析,这不仅有效降低了学习难度,而且突出了算法思想设计,注重学生编程思维和编程能力的培养。
(3) 注重理论,突出实践。每章后面均有典型例题及程序分析,以实践的形式强化理论,突出易错点,为学生提供解题思路,并通过程序调试方法的详细讲解为实践提供有力保障。
(4) 以一个小型系统为案例,随着课程学习的不断深入逐步完善,最后形成一个功能完整的小型系统。本案例着力突出培养学生利用C语言分析问题、解决问题的能力。
(5) 全方位服务。为方便教师和读者使用,提供了配套的电子课件、例题源程序、习题答案、教学大纲、参考书目等。
全书内容共分为12章,主要内容包括概述、数据类型和表达式、顺序结构和常用函数、选择结构、循环结构、数组、函数和变量、指针、结构体与共同体、编译预处理、位运算及文件等。每章的开篇文字,说明本章的主要内容;每章后面有典型例题分析,帮助读者强化理论内容;全书设有一个综合案例将全书内容有机贯穿起来,使读者随着课程学习的不断深入,能走出局部,以全局的角度综合运用C语言知识点解决实际问题。
本书的编写得益于编写小组的鼎力合作,其中王文博、郭长友负责编写第1、2章,谢延红、宋秀芹负责编写第3~5章,鲁燕负责编写第6章,李天志、张建臣负责编写第7章,赵丽敏负责编写第8章,戎丽霞、杨光军负责编写第9、10章,王付山负责编写第11、12章和附录A、B,曹金凤、戎丽霞负责编写综合案例和附录C。全书由谢延红、李丽统稿并任主编。所有教师均参与了书稿的校稿和程序调试工作。本教材在编写过程中得到了德州学院信息管理学院的鼎力支持,参考了大量书籍、报刊和互联网等参考文献,一些教师和学生也提出了宝贵的意见和建议,在此一并表示衷心的感谢。
由于编者水平有限,书中疏漏和不足在所难免,诚挚地希望专家和广大读者不吝赐教,提出宝贵意见和建议,我们会认真对待,以期不断改善教材质量。邮件请发至dzxyjsjxc@163.com。
编者
2015年1月
第1章概述
1.1计算机程序设计语言的发展
1.2算法
1.2.1算法的主要特征
1.2.2算法的描述方法
1.3C语言简介
1.3.1C语言发展历程
1.3.2C语言的特点
1.3.3C语言程序示例
1.3.4C语言程序书写约定
1.4C语言程序开发步骤
1.4.1C语言程序开发过程
1.4.2VC++ 6.0环境中C语言程序运行步骤
1.4.3VC++ 6.0环境中其他关键功能
1.5C语言程序的错误类型及调试方法
1.5.1编译错误及调试方法
1.5.2链接错误及调试方法
1.5.3运行错误及调试方法
1.5.4逻辑错误及调试方法
1.6综合案例
习题
第2章数据类型和表达式
2.1C语言字符集与词法规则
2.1.1C语言字符集
2.1.2C语言词汇及其组成规则
2.2数据类型
2.2.1基本类型
2.2.2其他数据类型
2.3常量
2.3.1整型常量
2.3.2实型常量
2.3.3字符型常量
2.3.4字符串常量
2.3.5符号常量
2.4变量
2.4.1变量的定义
2.4.2变量赋初值
2.4.3常变量
2.5运算符和表达式
2.5.1运算符的优先级与结合性
2.5.2算术运算符和算术表达式
2.5.3赋值运算符与赋值表达式
2.5.4关系运算符和关系表达式
2.5.5逻辑运算符和逻辑表达式
2.5.6其他运算符与表达式
2.5.7数据的类型转换
2.6典型例题
2.7综合案例
习题
第3章顺序结构程序设计及常用函数
3.1C语句分类
3.2常用数据输出函数
3.2.1单字符输出函数putchar
3.2.2格式输出函数printf
3.3常用数据输入函数
3.3.1单字符输入函数getchar
3.3.2格式输入函数scanf
3.4其他常用函数
3.4.1常用数学函数
3.4.2常用字符函数
3.4.3其他常用工具函数
3.5典型例题
3.6综合案例
习题
第4章选择结构程序设计
4.1if条件语句
4.2条件表达式
4.3switch语句
4.4典型例题
4.5综合案例
习题
第5章循环结构程序设计
5.1while语句
5.2dowhile语句
5.3for语句
5.4循环语句的嵌套
5.5break语句和continue语句
5.5.1break语句
5.5.2continue语句
5.6典型例题
5.7综合案例
习题
第6章数组
6.1一维数组
6.1.1一维数组的定义
6.1.2一维数组的使用
6.1.3一维数组的初始化
6.2二维数组
6.2.1二维数组的定义
6.2.2二维数组的使用
6.2.3二维数组的初始化
6.3字符串
6.3.1字符串常量
6.3.2字符串与字符数组
6.3.3字符串的输入输出
6.3.4字符串处理函数
6.4典型例题
6.5综合案例
习题
第7章函数与变量
7.1函数定义
7.2函数的调用
7.2.1函数的调用形式
7.2.2函数的调用过程
7.2.3函数的嵌套调用
7.3函数原型声明
7.4函数的参数传递
7.4.1传值方式
7.4.2传址方式
7.5递归函数
7.6变量的作用域
7.6.1局部变量
7.6.2全局变量
7.7变量的存储类型
7.7.1自动变量
7.7.2静态变量
7.7.3寄存器变量
7.7.4外部变量
7.7.5变量汇总
7.8典型例题
7.9综合案例
习题
第8章指针
8.1指针与指针变量
8.1.1指针变量的基本概念
8.1.2指针变量的定义与初始化
8.1.3指针变量的使用
8.1.4二级指针
8.2指针与数组
8.2.1一维数组和指针
8.2.2二维数组和指针
8.2.3指向字符串的指针
8.3指针与函数
8.3.1指针变量作为函数参数
8.3.2指向函数的指针
8.3.3返回值为指针的函数
8.3.4main函数的参数
8.4典型例题
8.5综合案例
习题
第9章结构体与共用体
9.1结构体类型
9.1.1定义结构体类型
9.1.2结构体变量的定义
9.1.3结构体变量的使用
9.1.4结构体变量的初始化
9.1.5结构体变量的赋值
9.2结构体数组
9.2.1结构体数组的定义
9.2.2结构体数组的初始化
9.2.3结构体数组的使用
9.3结构体类型指针
9.3.1指向结构体变量的指针
9.3.2指向结构体数组的指针
9.4结构体与函数
9.4.1结构体变量作函数参数
9.4.2指向结构体变量(或数组)的指针作函数参数
9.4.3函数的返回值为结构体类型
9.5链表
9.5.1链表概述
9.5.2动态存储分配函数
9.5.3链表的基本操作
9.6共用体
9.6.1共用体类型的定义
9.6.2共用体类型变量的定义
9.6.3共用体变量的使用
9.7枚举类型
9.8typedef类型定义
9.9典型例题
9.10综合案例
习题
第10章编译预处理
10.1宏定义
10.1.1不带参数的宏定义
10.1.2带参数的宏定义
10.2文件包含
10.3条件编译
10.4典型例题
10.5综合案例
习题
第11章位运算
11.1位运算符
11.2位运算的应用
11.3位段及其应用
11.4典型例题
习题
第12章文件
12.1文件概述
12.2文件指针
12.3文件的打开与关闭
12.4文件的定位与检测
12.5文件的读写操作
12.5.1按字符方式文件读写函数fgetc和fputc
12.5.2按字符串方式文件读写函数fgets和fputs
12.5.3按格式化方式文件读写函数fscanf和fprintf
12.5.4按数据块方式文件读写函数fread和fwrite
12.5.5文件的随机读写
12.6典型例题
12.7综合案例
习题
附录AC语言常用库函数
附录B常用字符与ASCII代码对照表
附录C综合案例参考源代码
参考文献