《C语言学习笔记》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:薛小龙编著
  • 出 版 社:中国铁道出版社有限公司
  • 出版年份:2019
  • ISBN:9787113261757
  • 页数:400 页
图书介绍:

第1章 C语言基础知识介绍 1

1.1永不过时的C语言 1

1.1.1品味C语言这一坛老酒 1

1.1.2 C语言的发展史 2

1.1.3学习C语言还有用吗 2

1.2认识第一段C语言程序 3

1.2.1编写第一段C语言程序 3

实例1-1:第一段C语言程序(定义变量并进行算数操作) 3

1.2.2分析C语言程序的具体组成 4

1.3如何学好C语言 6

第2章 安装C语言开发工具 7

2.1一步到位的Visual Studio 7

2.1.1安装Visual Studio 2017 7

2.1.2使用Visual Studio 2017 9

实例2-1:使用Visual Studio 2017运行一个C程序 9

2.2使用DEV C++开发C语言程序 12

2.2.1安装DEV C++ 12

2.2.2使用DEV C++运行一个C语言程序 14

2.3使用Turbo C 3.0开发C语言程序 14

2.3.1安装Turbo C 3.0 14

2.3.2使用Turbo C 3.0 15

第3章 C语言语法基础 16

3.1标识符和关键字 16

3.1.1标识符 16

3.1.2关键字 17

3.2数据类型 19

3.3常量和变量 20

3.3.1常量 20

3.3.2变量 21

实例3-1:计算圆的周长和面积 23

3.4整型数据 24

3.4.1整型常量 24

3.4.2整型变量 26

实例3-2:计算两个整型变量的和 27

3.5实型数据类型 28

3.5.1实型常量 28

3.5.2实型变量 29

实例3-3:对一个很大的数和一个很小的数进行加法运算 29

3.6字符型数据 30

3.6.1字符常量详解 30

实例3-4:通过转义字符输出指定的文本字符 31

3.6.2字符串常量 32

实例3-5:我最喜欢的偶像是欧阳娜娜 32

3.6.3字符变量 33

实例3-6:将字符变量和整型变量进行相互赋值 33

3.7整型、实型和字符型数据之间的运算 34

3.7.1强制转换 34

实例3-7:将int类型强制转换为double类型 35

3.7.2自动转换 35

实例3-8:计算圆的大概面积和精确面积 36

第4章 运算符和表达式 37

4.1运算符和表达式介绍 37

4.2算术运算符和算术表达式 38

4.2.1算术运算符的分类 38

4.2.2单目运算符 39

实例4-1:使用单目运算符实现基本的数学运算 39

4.2.3双目运算符 39

实例4-2:获取任意小于1000的正整数的个位、十位、百位和千位的数字 40

4.3赋值运算符和赋值表达式 40

4.3.1基本的赋值运算符 41

4.3.2复合赋值运算符 43

4.3.3赋值表达式 43

实例4-3:实现基本的赋值表达式运算处理 43

4.4关系运算符和关系表达式 44

4.4.1关系运算符 44

4.4.2关系表达式 44

实例4-4:比较体重 45

4.5逗号运算符和逗号表达式 46

4.5.1逗号运算符 46

4.5.2逗号表达式 46

实例4-5:使用逗号运算符实现数学运算 47

4.6逻辑运算符和逻辑表达式 48

4.6.1逻辑运算符 48

4.6.2逻辑表达式 49

实例4-6:对变量进行逻辑运算处理,并输出运算后的结果 49

4.7求字节数运算符sizeof 50

实例4-7:使用sizeof运算符计算不同类型数据的字节大小 51

4.8运算符的优先级 52

第5章 数据的输入和输出 54

5.1语句介绍 54

5.1.1 C语句简介 54

5.1.2赋值语句 56

5.2 C语言内置的数据输入和输出函数 57

5.2.1使用字符输出函数putchar 58

实例5-1:使用函数putchar输出指定的字符 58

5.2.2使用字符输入函数getchar 59

实例5-2:使用getchar函数获取在键盘中输入的内容 60

5.2.3使用格式输出函数printf 60

实例5-3:使用printf函数输出不同格式变量a和b的数据 61

实例5-4:使用printf格式字符输出指定格式的数据 62

5.2.4使用格式输入函数scanf 64

实例5-5:输出显示用户输入字符的ASCII码和对应的大写字母 66

5.2.5使用字符串输出函数puts 67

实例5-6:使用函数puts输出指定的字符串 67

5.2.6使用字符串输入函数gets 68

实例5-7:输出显示用户的姓名和身高信息 68

第6章 使用流程控制语句 69

6.1顺序结构 69

实例6-1:计算三角形的面积 70

6.2选择结构 70

6.2.1单分支结构语句 71

实例6-2:从大到小排列3个数字 71

6.2.2双分支结构语句 72

实例6-3:判断用户输入内容的格式 72

实例6-4:判断变量a和b的值是多少 74

6.2.3使用多分支结构语句 75

实例6-5:提示用户输入数字,然后将用户输入的数字输出。 77

6.2.4条件运算符和条件表达式 77

实例6-6:比较两个数字的大小并输出最大数 79

6.3循环结构 79

6.3.1使用for语句 79

实例6-7:计算某个整数的阶乘 80

6.3.2使用while循环语句 81

实例6-8:依次输出1*1、 1*2…到1*20的积 82

6.3.3使用do-while语句 83

实例6-9:猜数游戏 84

6.3.4正确对待goto语句 84

实例6-10:统计从键盘输入一行字符的个数 85

6.3.5使用break语句 85

实例6-11:计算圆的面积 86

6.3.6使用continue语句 86

实例6-12:输出显示100到200之间的不能被3整除的整数 87

6.3.7死循环/退出程序 87

第7章 数组存储数据 89

7.1使用一维数组 89

7.1.1定义一维数组 89

7.1.2引用即使用 90

实例7-1:输出数组内的各个元素值 91

7.1.3数组需要初始化 91

实例7-2:实现一个由小到大排列的冒泡程序 92

7.2多维数组 93

7.2.1二维数组 93

实例7-3:输出显示10行杨辉三角 95

7.2.2使用多维数组 96

实例7-4:获取成绩最高分的球员编号 98

7.3使用字符数组与字符串 99

7.3.1侃侃字符数组 99

7.3.2字符串与字符数组 100

7.3.3字符数组的输入输出 101

实例7-5:比较两个字符串的大小 102

7.4使用字符处理函数和字符串处理函数 103

7.4.1使用测试字符串长度函数strlen 103

实例7-6:使用函数strlen输出程序中数组字符串的长度 103

7.4.2使用字符串大小写转换函数strupr和strlwr 103

实例7-7:分别输出输入字符串的小写形式和大写形式 103

7.4.3使用字符串复制函数strcpy和strncpy 104

实例7-8:复制用户输入的字符串 104

7.4.4使用字符串比较函数strcmp和strncmp 105

实例7-9:比较用户输入的字符串 106

7.4.5使用字符串连接函数strcat和strncat 106

实例7-10:连接用户输入的字符串 107

7.4.6将字符串转换成数值的函数 108

实例7-11:将用户输入的字符串转换为数值类型的值 108

7.4.7使用字符检测函数 109

实例7-12:判断字符串中各字符所占用的个数 109

7.4.8使用字符大小写转换函数tolower和toupper 110

实例7-13:将字符串分别输出转换为大写形式和小写形式 111

第8章 函数 112

8.1函数基础知识介绍 112

8.1.1函数的分类 112

8.1.2函数的定义 114

实例8-1:比较两个数字的大小 114

8.2函数声明和函数原型 115

8.2.1函数声明 115

实例8-2:求s=(1+2+3+…+n)/(1+2+3+…+m)的值 116

8.2.2函数原型 117

8.3函数的参数 117

8.3.1形参和实参详解 117

实例8-3:计算从1到某个数字值的和 118

8.3.2将数组作为函数参数 118

实例8-4:判断一个整数是否大于0 119

实例8-5:互换二维数组中行和列的元素 120

8.4函数的返回值 120

实例8-6:计算两个整数3和4的和 121

8.5实现函数的调用 122

8.5.1调用函数的格式 122

实例8-7:比较3个数字的大小 122

8.5.2函数调用的方式 123

实例8-8:计算最大公约数和最小公倍数 123

8.6函数的嵌套调用和递归调用 124

8.6.1函数嵌套调用详解 124

实例8-9:输出字符串中最长的单词 125

8.6.2函数递归调用 126

实例8-10:实现数学中Hanoi塔问题的解决方案 127

8.7变量的作用域 129

8.7.1局部变量作用域 129

实例8-11:计算长方体的体积和三个面的面积 129

8.7.2全局变量作用域 130

实例8-12:超市价格调整 130

8.8静态存储变量和动态存储变量 131

8.8.1静态存储和动态存储的区别 132

8.8.2四种变量存储类型 132

8.8.3自动变量 132

8.8.4外部变量 133

实例8-13:在函数间通过外部函数直接传递数据 134

8.8.5静态变量 134

实例8-14:使用静态变量设置初始值 136

8.8.6寄存器变量 136

实例8-15:使用register变量提升效率 136

8.9内部函数和外部函数 137

8.9.1内部函数详解 137

实例8-16:在不同的文件内使用同一个名称的函数 138

8.9.2使用外部函数 138

实例8-17:在一个文件内调用另一个外部函数 138

8.10库函数 139

8.10.1库函数介绍 139

8.10.2库函数的分类 139

第9章 使用指针 141

9.1指针和内存地址 141

9.2变量的指针和指向变量的指针变量 142

9.2.1声明指针变量 142

9.2.2初始化指针变量 143

9.2.3引用指针变量 144

实例9-1:将两个指针变量分别指向两个变量 145

9.2.4指针运算符 145

实例9-2:对输入的数字进行排序处理 146

9.2.5指针变量的运算 147

实例9-3:顺序显示数组内的元素并分别逆向输出 148

9.2.6指针变量作为函数参数 148

实例9-4:按照从小到大的顺序排序输出三个整数 150

9.2.7 void类型的指针 151

实例9-5:定义4个类型的变量,然后分别输出转换后的结果 151

9.3指针和数组 152

9.3.1数组元素的指针 153

9.3.2指向一维数组元素的指针变量 154

9.3.3通过指针引用数组元素 155

实例9-6:分别通过指向数组的指针引用数组、利用数组名和下标引用数组 156

9.3.4数组名作函数参数 158

实例9-7:将数组中的元素按相反顺序存放 158

实例9-8:输出数组元素中的最大值和最小值 159

9.4指针和多维数组 160

9.4.1多维数组的地址 160

实例9-9:输出显示二维数组元素的地址 162

9.4.2指向多维数组的指针变量 162

实例9-10: 2*3或3*4矩阵相乘运算 164

9.5指针和字符串 165

9.5.1指针访问字符串 165

实例9-11:把一个字符串的内容复制到另一个字符串中 166

9.5.2字符串指针作函数参数 167

实例9-12:使用函数调用复制字符串的内容 167

9.6指针数组和多级指针 168

9.6.1指针数组 168

9.6.2多级指针的定义和应用 169

实例9-13:对5个字符串进行排序 170

9.6.3指向指针的指针 171

9.6.4 main函数的参数 171

实例9-14:使用带参数的main函数输出指针数组参数的值 172

9.7指针函数和函数指针 173

9.7.1指针函数 173

9.7.2函数指针 173

第10章 结构体、共用体和枚举 177

10.1使用结构体 177

10.1.1定义结构体 177

10.1.2定义结构体类型变量 178

10.1.3引用结构体变量 180

实例10-1:输出显示对应的年龄和成绩 180

10.1.4初始化结构体变量 182

10.2结构体数组 183

10.2.1怎样定义结构体数组 183

实例10-2:计算主流手机的跑分成绩和不及格的数量 184

10.2.2初始化结构体数组 185

实例10-3:输出显示数组内的元素 185

10.2.3引用结构体数组 186

实例10-4:手机信息录入系统 186

10.3结构体指针 187

10.3.1怎样定义结构体指针变量 187

10.3.2初始化结构体指针变量 188

10.3.3引用结构体指针变量 188

实例10-5:输出显示结构体成员变量的信息 188

10.3.4指向结构变量的指针 189

10.3.5指向结构体数组的指针 190

实例10-6:输出显示主流手机的跑分成绩 190

10.4在函数中使用结构体 191

10.4.1结构体变量和结构体指针可以作为函数参数 191

实例10-7:计算某天在当年中是第几天 191

10.4.2函数可以返回结构体类型的值 192

实例10-8:输出显示所有学生的信息 192

10.5使用共用体(联合) 194

10.5.1怎样定义共用体和共用体变量 194

实例10-9:输出结构体和共同体的空间大小 194

10.5.2引用和初始化共用体变量 195

实例10-10:在定义的结构体内使用共用体成员 195

10.6使用枚举 196

10.6.1定义枚举类型 196

10.6.2定义枚举变量 197

10.6.3引用枚举变量 198

实例10-11:五色球问题解法 198

10.7使用typedef定义类型 199

10.7.1类型定义符typedef基础 199

10.7.2使用typedef 201

实例10-12:计算两个复数的乘积 201

第11章 链表 202

11.1链表基础 202

11.2链表和数组 203

实例11-1:解决“老鹰捉小鸡”问题 203

11.3单向链表 204

11.3.1单向链表基础 204

11.3.2使用单向链表 205

实例11-2:输出显示链表节点中的数据 205

第12章 位运算 207

12.1使用位运算符 207

12.1.1按位与运算符“&” 207

实例12-1:计算a&b的值 208

12.1.2按位或运算符“|” 209

实例12-2:计算a|b的值 209

12.1.3按位异或运算符“?” 210

实例12-3:计算a?b的值 211

12.1.4取反运算符“~” 211

实例12-4:计算~a的值 211

12.1.5左移运算符“〈〈” 212

实例12-5:使用左移运算符处理变量 212

12.1.6右移运算符“〉〉” 212

实例12-6:使用右移运算符处理变量 213

12.1.7位运算综合应用实例 213

实例12-7:对两个数(255,10)进行位运算并输出结果 213

12.2位域 215

12.2.1位域的定义和位域变量基础 215

12.2.2使用位域 216

实例12-8:输出显示变量的位域 217

第13章 预编译处理 218

13.1预编译基础 218

13.2使用宏定义 219

13.2.1不带参数的宏定义 219

实例13-1:使用不带参数的宏定义优化代码 220

13.2.2带参数的宏定义 221

实例13-2:使用带参数的宏定义优化代码 222

13.3文件包含 222

实例13-3:比较3个数字的大小并输出其中的最小值 222

13.4条件编译 224

13.4.1使用#ifdef…#else…#endif指令 224

13.4.2使用#ifdefined…#else…#endif指令 225

实例13-4:联合使用#i#ifdef和#i#ifndif指令 226

13.4.3使用#i#ifndef…#else…#endif指令 226

13.4.4使用#i#if!defined…#else…#endif指令 226

13.4.5使用#i#ifdef…#elif…#elif…#else…#endif指令 227

实例13-5:递增修改字母的值 228

13.4.6使用#line指令 228

实例13-6:使用#line指令修改代码的行号 229

第14章 文件操作 230

14.1计算机中的文件 230

14.1.1文件的分类 230

14.1.2文本文件 231

14.1.3文件分类 231

14.1.4文件指针 232

14.2打开与关闭文件 232

14.2.1打开文件 232

14.2.2关闭文件 235

实例14-1:通过各种方式操作本地硬盘中的指定文件 235

14.3文件读写 236

14.3.1读写字符函数getc、fgetc、 putc和fputc 237

实例14-2:读取指定文件的内容 237

实例14-3:将用户输入的一行字符写入一个文件中 238

14.3.2读写字符串函数fgets和fputs 239

实例14-4:读取目标文件中内容,并输出前10个字符 239

实例14-5:输出显示字符串的内容 240

14.3.3格式化读写函数fscanf和frintf 241

实例14-6:输出显示两个用户的数据 241

14.3.4数据块读写函数fread和fwtrite 242

实例14-7:将一组字符串数据存储在指定的目标文件中 242

14.3.5其他的读写函数 243

实例14-8:输出显示文件中的整数 244

14.4随机读写文件 244

14.4.1使用函数fseek 245

实例14-9:从文件中随机读取其中的某个数据 245

14.4.2使用函数rewind 246

14.4.3使用函数ftell 247

实例14-10:获得当前位置指针离文件开头的距离 247

14.5文件管理函数 248

14.5.1删除文件 248

实例14-11:使用函数remove删除一个文件 248

14.5.2重命名文件 248

实例14-12:使用函数rename重命名一个指定的文件 249

14.5.3复制文件 249

实例14-13:复制指定目标文件中的内容 250

14.6文件状态检测函数 251

14.6.1使用函数feof 251

14.6.2使用函数ferror 251

14.6.3使用函数clearerr 252

实例14-14:检测对文件读写时是否发生错误 252

第15章 内存管理 253

15.1 C语言的内存模型 253

15.2栈和堆 254

15.2.1操作栈 254

实例15-1:在堆中动态分配并释放内存 254

15.2.2操作堆 255

实例15-2:编写自定义函数时操作内存 255

15.3动态内存管理 256

15.3.1内存分配函数malloc 256

实例15-3:生成指定长度的随机字符串 256

15.3.2分配内存空间并初始化函数calloc 257

实例15-4:存储输入的数据 257

15.3.3重新分配内存函数realloc 258

实例15-5:使用函数realloc重新分配内存 259

15.3.4释放内存空间函数free 259

实例15-6:使用函数free释放内存空间 260

第16章 数据结构 261

16.1线性表 261

16.1.1线性表的特性 261

16.1.2顺序表操作 262

16.1.3使用顺序表操作函数 264

实例16-1:使用顺序表操作学生信息 264

16.2先进先出的队列 266

16.2.1什么是队列 266

16.2.2实现一个排号程序 267

实例16-2:模拟实现一个业务办理排号程序 267

16.3后进先出栈 270

16.3.1什么是栈? 270

16.3.2实现栈操作 271

实例16-3:使用栈操作员工信息 271

第17章 常用的C语言算法思想 273

17.1枚举算法 273

17.1.1枚举算法介绍 273

17.1.2百钱买百鸡 274

实例17-1:使用枚举法解决“百钱买百鸡”问题 274

17.2递推算法 274

17.2.1递推算法介绍 275

17.2.2斐波那契数列 275

实例17-2:使用顺推法解决“斐波那契数列”问题 275

17.3递归算法 276

17.3.1递归算法介绍 276

17.3.2汉诺塔 277

实例17-3:使用递归算法解决“汉诺塔”问题 277

17.4分治算法 279

17.4.1分治算法介绍 279

17.4.2大数相乘 280

实例17-4:用分治算法解决“大数相乘”问题 280

17.5贪心算法 282

17.5.1贪心算法介绍 282

17.5.2找零方案 283

实例17-5:使用贪心算法解决“找零方案”问题 283

17.6试探法算法 284

17.6.1试探法算法介绍 284

17.6.2八皇后 285

实例17-6:使用试探法算法解决“八皇后”问题 285

17.7迭代算法 287

17.7.1迭代算法介绍 287

17.7.2计算平方根 288

实例17-7:用迭代算法解决“求平方根”问题 288

第18章 开发图形化界面程序 290

18.1图形化界面程序介绍 290

18.2文本的屏幕输出和键盘输入 291

18.2.1在屏幕输出文本 291

实例18-1:显示7种不同的颜色 293

18.2.2键盘输入 296

18.2.3将屏幕分割为左右两个部分 297

实例18-2:设置输出屏的颜色,并分割为左右两个部分 297

18.3图形显示方式和鼠标输入 299

18.3.1初始化图形模式 299

18.3.2清屏和恢复显示函数 302

18.3.3建立独立图形运行程序 302

18.3.4基本绘图函数 303

18.3.5线性函数 307

18.3.6颜色控制函数 309

18.3.7填色函数和画图函数 312

实例18-3:绘制多个图形 315

18.3.8图形窗口函数 316

18.3.9图形方式下的文本输出函数 316

实例18-4:在图形模式下输出不同样式的文本 319

18.4菜单设计 320

18.4.1下拉式菜单 320

实例18-5:实现一个基本的下拉式菜单效果 320

18.4.2弹出式菜单 323

实例18-6:实现一个基本的弹出式菜单效果 323

第19章 学生成绩管理系统 328

19.1系统需求分析 328

19.1.1背景介绍 328

19.1.2需求分析 328

19.1.3可行性分析 329

19.1.4编写项目计划书 330

19.2系统功能模块 331

实例 19-1:学生成绩管理系统功能模块 331

19.3系统总体设计 332

19.3.1功能模块设计 333

19.3.2数据结构设计 334

19.3.3构成函数介绍 335

19.4系统具体实现 336

19.4.1预处理 337

19.4.2主函数main 337

19.4.3系统主菜单函数 338

19.4.4表格显示信息 339

19.4.5信息查找定位 340

19.4.6格式化输入数据 340

19.4.7增加学生记录 341

19.4.8查询学生记录 342

19.4.9删除学生记录 343

19.4.10修改学生记录 344

19.4.11插入学生记录 345

19.4.12统计学生记录 346

19.4.13排序处理 347

19.4.14存储学生信息 348

第20章 三江化工薪资管理系统 352

20.1项目介绍 352

20.2项目规划分析 353

20.2.1项目目的 353

20.2.2功能模块分析 353

20.3系统设计 354

20.3.1设计数据结构 354

20.3.2规划项目函数 355

20.4具体编码 355

20.4.1预处理 356

20.4.2查找定位模块 356

20.4.3格式化输入模块 357

20.4.4增加记录模块 357

20.4.5修改记录模块 358

20.4.6删除记录模块 359

20.4.7插入记录模块 361

20.4.8存储记录模块 363

20.4.9主函数模块 364

20.4.10主菜单模块 365

20.4.11统计记录模块 366

20.5客户有变 366

20.5.1查询记录模块 366

20.5.2排序显示模块 368

20.5.3最后的一些调整 368

20.6项目调试 370

第21章 启明星绘图板系统 374

21.1项目介绍 374

21.2项目规划分析 375

21.2.1绘图板的核心技术 375

21.2.2功能描述 375

21.2.3总体设计 376

21.3架构设计 377

21.3.1设计数据结构 377

21.3.2规划系统函数 377

21.4具体编码 379

21.4.1实现预处理模块 379

21.4.2实现功能控制模块 381

21.4.3实现保存加载模块 382

21.4.4实现鼠标控制模块 383

21.4.5图形绘制模块 384

21.4.6主函数模块 395

21.5项目调试 400