项目1 显示广告语 1
1.1 项目要求 1
1.2 项目描述 1
1.3 Code::Blocks的安装和使用 6
1.3.1 Code::Blocks的安装 7
1.3.2 Code::Blocks的汉化 7
1.3.3 配置g+++编译器及调试器 8
1.3.4 编写程序 9
1.4 C语言的发展史及其特点 14
1.5 总结 16
1.6 习题 16
项目2 完成数据计算 18
2.1 项目要求 18
2.2 项目描述 18
2.3 计算机中的数据类型 19
2.3.1 变量和常量 19
2.3.2 整型数据 21
2.3.3 浮点型数据 23
2.3.4 字符型数据 24
2.4 算术运算符和赋值运算符 26
2.4.1 算术运算符和算术表达式 26
2.4.2 赋值运算符和赋值表达式 27
2.4.3 优先级和结合性 27
2.5 任意两个数相加 29
2.5.1 从键盘上输入变量的值 29
2.5.2 格式化输入(scanf) 32
2.6 求平均值 33
2.6.1 数值类型转换 34
2.6.2 格式化输出 35
2.7 总结 38
2.8 习题 39
项目3 菜单设计 43
3.1 项目要求 43
3.2 项目描述 43
3.2.1 数据输入部分 45
3.2.2 数据处理部分 46
3.3 if语句 48
3.3.1 关系运算符 50
3.3.2 布尔型数据 51
3.3.3 逻辑运算符 51
3.3.4 简化求值 53
3.3.5 运算符的优先级和结合性 54
3.4 程序实现 55
3.5 switch语句 56
3.6 选择结构嵌套问题 58
3.7 条件运算符 61
3.8 总结 62
3.9 习题 63
项目4 大量数据求和 68
4.1 项目要求 68
4.2 项目描述 68
4.3 完成大量数据求和 69
4.3.1 复合赋值运算符 69
4.3.2 自增和自减运算符 70
4.3.3 重复多次操作 70
4.3.4 循环和循环变量 71
4.3.5 循环中的初始值 72
4.3.6 define的用法 75
4.4 继续讨论循环问题 75
4.4.1 for语句 76
4.4.2 while语句 77
4.4.3 do-while语句 78
4.4.4 goto语句 79
4.4.5 循环嵌套 80
4.5 break和continue语句 81
4.6 结构化程序设计 83
4.6.1 结构化程序设计的概念 83
4.6.2 结构化程序设计的基本结构 84
4.6.3 结构化程序设计的原则 84
4.6.4 结构化程序设计的特点、优点和缺点 85
4.7 总结 85
4.8 习题 86
项目5 成绩的计算 93
5.1 项目要求 93
5.2 项目描述 93
5.3 什么是数组 93
5.3.1 数组声明 94
5.3.2 引用数组元素 94
5.3.3 初始化数组元素 96
5.4 数组元素在内存中的形式 98
5.4.1 地址的概念 98
5.4.2 运算符sizeof 99
5.4.3 数组在内存中的存储 100
5.4.4 引用超过数组范围的元素 101
5.5 排序算法 101
5.5.1 冒泡排序 102
5.5.2 选择排序 106
5.6 总结 108
5.7 习题 109
项目6 多门功课成绩的计算 114
6.1 项目要求 114
6.2 项目描述 114
6.3 二维数组 115
6.3.1 二维数组的概念 115
6.3.2 二维数组的初始化 116
6.3.3 二维数组内存存放方式 117
6.4 问题求解 117
6.4.1 数据输入输出 118
6.4.2 计算每个人的平均分 122
6.4.3 找出平均分最高的3人 123
6.4.4 求出每门课程的平均分 124
6.4.5 完整的程序 124
6.5 总结 127
6.6 习题 128
项目7 用结构体处理学生成绩 131
7.1 项目要求 131
7.2 项目描述 131
7.3 字符 132
7.4 字符串和字符数组 133
7.4.1 字符数组的输入和输出 134
7.4.2 字符串处理函数 136
7.5 结构体 138
7.5.1 定义新的结构体类型 138
7.5.2 定义结构体类型变量的方法 139
7.5.3 结构体变量的初始化 141
7.5.4 使用结构体变量 141
7.5.5 结构体数组 141
7.6 解决项目问题 142
7.7 typedef自定义数据类型 147
7.8 总结 148
7.9 习题 148
项目8 编写一个日历程序 154
8.1 项目要求 154
8.2 项目描述 154
8.3 函数 154
8.3.1 库函数 155
8.3.2 函数声明 155
8.3.3 自己编写函数 156
8.3.4 函数的嵌套调用 160
8.3.5 函数的递归调用 162
8.3.6 数组作为函数的参数 166
8.4 写一个日历程序 168
8.4.1 实现main函数 168
8.4.2 实现GiveInstructions 169
8.4.3 实现GetYearFromUser 169
8.4.4 实现PrintCalendar 169
8.4.5 实现PrintMonth 170
8.4.6 完成最后的工作 174
8.5 变量的作用域和生存周期 179
8.5.1 变量的作用域 179
8.5.2 变量的存储方式和生存期 180
8.5.3 作用域和生存期的小结 181
8.6 总结 182
8.7 习题 183
项目9 为函数设置多个返回值 187
9.1 项目要求 187
9.2 问题的提出 187
9.3 指针 189
9.3.1 地址和指针 189
9.3.2 声明指针变量 190
9.3.3 指针的基本操作 190
9.4 让函数返回多个值 192
9.5 指针和数组 195
9.5.1 指针运算 196
9.5.2 指针的自增和自减 197
9.5.3 指针和数组名 198
9.5.4 指针作为函数参数 199
9.5.5 动态分配 199
9.5.6 void*类型 200
9.5.7 动态数组 201
9.5.8 释放内存 201
9.6 总结 202
9.7 习题 203
项目10 大数求平均值问题 206
10.1 项目要求 206
10.2 项目描述 206
10.3 位运算符 207
10.3.1 “按位与”运算符(&) 208
10.3.2 “按位或”运算符(|) 208
10.3.3 “异或”运算符(∧) 208
10.3.4 “取反”运算符(~) 209
10.3.5 左移运算符(<<) 209
10.3.6 右移运算符(>>) 209
10.3.7 复合赋值运算符 209
10.4 位运算的实际应用 210
10.5 总结 211
10.6 习题 212
附录A 二进制数及其他 215
附录B ASCII码表 224
附录C 运算符的优先级和结合性 226
附录D 常用库函数 228
附录E C语言关键字 232