导语
内容提要
C语言程序设计作为一门实践性很强的基础课程,在培养学生计算思维能力方面具有重要作用。本书面向程序设计初学者,以强化计算思维表达能力培养为目标,提高学生解决实际问题的逻辑思维能力。内容汇集了北京航空航天大学“程序设计基础训练”和“C语言程序设计”课程组多年实践教学的程序设计训练题集与题解分析,难度由浅入深、循序渐进。知识点覆盖了C语言编程环境与基本方法、基本数据处理、结构化编程、函数及其应用、数组与字符串及应用、指针及其应用、结构与联合以及I/O和文件操作等,集知识性、趣味性于一体。此外,在北京航空航天大学Online Judge(OJ)编程平台开设了程序设计训练专版(https://accoding.cn/index),便于使用本书的读者实践练习。
本书可作为计算机、软件等信息类专业程序设计实践环节的基础教材,也可以作为非信息类专业学生和程序设计爱好者的程序设计入门及提高训练教材。
目录
第1章 C语言编程环境与基本方法
1.1 C语言程序的基本概念及组成
1.2 常用IDE介绍
1.3 C语言编程的几个基本步骤
1.4 C语言编程的常见错误
1.5 C语言程序调试简介
第2章 基本数据处理
2.1 本章重难点回顾
2.1.1 基本输入及格式化输出
2.1.2 数据类型转换
2.1.3 const与#define
2.2 精编实训题集
题2-1 简单字符(串)输出:颜文字表情图案绘制
题2-2 简单字符(串)输出:转义符应用
题2-3 基本输入输出及运算:数的向上取整
题2-4 基本输入输出及运算:计算预期收益
题2-5 基本输入输出及运算:计算平均值
题2-6 基本输入输出及运算:计算圆柱体表面积
题2-7 模运算:简单取模操作
题2-8 模运算:数的按位拆分
题2-9 模运算:数位翻转
题2-10 模运算:学号识别码
题2-11 模运算:队列找字母
题2-12 模运算:火仙草数
题2-13 数据类型转换:分数转小数
题2-14 位运算:AopBProblem
2.3 题集解析与参考程序
2.4 本章小结
第3章 结构化编程
3.1 本章重难点回顾
3.1.1 逻辑表达式
3.1.2 条件语句常见问题
3.1.3 计数器控制循环
3.1.4 标志控制循环
3.1.5 break和continue语句
3.2 精编实训题集
题3-1 逻辑表达式的妙用:名次预测
题3-2 单分支选择结构:寻找第二小数
题3-3 单分支选择结构:重逢时刻
题3-4 单分支选择结构:方程求解
题3-5 双分支选择结构:直线与圆
题3-6 双分支选择结构:温度转换
题3-7 双分支选择结构:统计阶乘的尾数
题3-8 双分支选择结构:字符大小写转换
题3-9 多分支条件语句:求解分段函数
题3-10 多分支条件语句:窗口的嵌套
题3-11 多路选择的switch语句:简单计算器
题3-12 选择结构的嵌套:交换生条件审核
题3-13 选择结构的嵌套:观影计划
题3-14 多路分支选择结构:方向判断
题3-15 while循环(计数器控制):判断2的幂次数
题3-16 while循环(标志控制):破译密码
题3-17 dowhile循环(标志控制):士兵站队
题3-18 for循环(计数器控制):日历计算
题3-19 for循环(计数器控制):求数列的一项
题3-20 for循环:理财计划
题3-21 循环嵌套:寻找完数
题3-22 循环嵌套:寻找质因数
题3-23 循环嵌套:等式填空
题3-24 循环嵌套:最短正整数序列
3.3 题集解析及参考程序
3.4 本章小结
第4章 函数及其应用
4.1 本章重难点回顾
4.1.1 递归思想
4.1.2 变量的作用域
4.2 精编实训题集
题4-1 定义与调用函数:三角形的判断
题4-2 定义与调用函数:猜素数
题4-3 定义与调用函数:cos(x)级数展开式
题4-4 定义与调用函数:分数相加与化简
题4-5 定义与调用函数:星期几
题4-6 定义与调用函数:求未遮挡面积
题4-7 全局变量的使用:熊猫序列
题4-8 标准库函数的使用:模拟投骰子
题4-9 标准库函数的应用:求极坐标
题4-10 标准库函数的应用:求面积
题4-11 递归函数:倒序输出
题4-12 递归函数:整数划分
题4-13 递归函数:递归汉诺塔
题4-14 递归函数:走迷宫
题4-15 递归函数:Ackermann函数
题4-16 递归函数:送快递
题4-17 递归函数:二分法解方程
4.3 题集解析及参考程序
4.4 本章小结
第5章 数组与字符串及应用
5.1 本章重难点回顾
5.1.1 字符串和字符数组
5.1.2 二维数组
5.2 精编实训题集
题5-1 一维数组应用:进制转换
题5-2 一维数组应用:阿狄的冒险
题5-3 一维数组应用:最萌身高差
题5-4 一维数组应用:卖口罩
题5-5 一维数组应用:成绩平均分
题5-6 一维数组应用:狐狸捉兔子
题5-7 一维数组应用:子序列
题5-8 一维数组应用:孤独的数
题5-9 一维数组应用:数组漂移
题5-10 一维数组应用:统计质数
题5-11 一维数组应用:火柴拼图
题5-12 一维数组应用:约瑟夫问题
题5-13 一维数组应用:求蓄水量
题5-14 一维数组应用:元素查找
题5-15 一维数组应用:绝对值排序问题
题5-16 一维数组应用:集合的加法
题5-17 一维数组应用:首个出现三次的字母
题5-18 一维数组应用:字符统计
题5-19 字符串和字符数组:分子量
题5-20 字符串和字符数组:字符统计
题5-21 字符串和字符数组:字符串匹配
题5-22 字符串和字符数组:字符串纠错
题5-23 字符串和字符数组:简写字符串的扩展
题5-24 字符串和字符数组:Excel表的列号
题5-25 字符串和字符数组:求相反数
题5-26 二维数组应用:卷积计算
题5-27 二维数组应用:蛇形矩阵
题5-28 二维数组应用:游戏教学
5.3 题集解析及参考程序
5.4 本章小结
第6章 指针及其应用
6.1 本章重难点回顾
6.1.1 指针与数组
6.1.2 常见问题
6.2 精编实训题集
题6-1 作为函数参数的指针:成绩统计
题6-2 作为函数参数的指针:矩阵变换
题6-3 作为函数参数的指针:整数求和
题6-4 作为函数参数的指针:高斯消元法解方程
题6-5 作为函数参数的指针:单词排序
题6-6 指向一维数组的指针:字符串替换
题6-7 指向一维数组的指针:子串逆置
题6-8 指向一维数组的指针:数的互逆
题6-9 指针数组的应用:计算并输出月份
题6-10 指针数组的应用:单词集合
题6-11 指针数组的应用:更遥远的星期几
题6-12 指针数组的应用:输出文章内容
题6-13 函数指针实例:有趣的排序问题
题6-14 函数指针实例:求众数
题6-15 函数指针实例:比赛排行榜
题6-16 函数指针实例:田忌赛马
题6-17 函数指针实例:求凸多边形面积
6.3 题集解析及参考程序
6.4 本章小结
第7章 结构与联合
7.1 本章难点回顾
7.1.1 结构数组与二维表的对应关系
7.1.2 单向链表
7.1.3 类型定义语句
7.2 精编实训题集
题7-1 结构应用:工作DDL
题7-2 结构应用:数据编码问题
题7-3 结构应用:按要求选择钢管
题7-4 结构应用:OJratings
题7-5 结构应用:寻找爱好相同的人
题7-6 结构应用:辅导员的生日推送
题7-7 链表应用:再解约瑟夫问题
题7-8 结构联合应用:数据表排序
7.3 题集解析及参考程序
7.4 本章小结
第8章 I/O和文件操作
8.1 本章重难点回顾
8.1.1 二进制文件操作
8.1.2 正文文件操作
8.1.3 文件读写操作中的定位
8.1.4 标准输入输出的重新定向
8.2 精编实训题集
题8-1 标准文件操作的I/O函数:分析日期和时间
题8-2 标准文件操作的I/O函数:由参数确定输出的小数位数
题8-3 指定文件的读写函数:字符输入输出
题8-4 指定文件的读写函数:读文本内容并显示
题8-5 指定文件的读写函数:文件复制
题8-6 指定文件的读写函数:成绩表格
题8-7 指定文件的读写函数:格式化输入输出
题8-8 文件读写函数的使用:日程列表
题8-9 读写操作的定位:求文件长度
题8-10 读写操作的定位:字符统计
题8-11 读写操作的定位:文件倒置输出
8.3 题集解析及参考程序
8.4 本章小结
第9章 C语言程序设计综合训练
9.1 程序设计基本方法
9.1.1 程序设计基本过程
9.1.2 程序性能分析
9.1.2 程序中的错误处理
9.1.3 程序的测试
9.2 精编实训题集
题9-1 查找指定大小数值
题9-2 位图
题9-3 时间转换问题
题9-4 切割木棍
题9-5 最长子序列
题9-6 简化比例
题9-7 组合购物
题9-8 数的奇偶分解
题9-9 序列等式
题9-10 下一个序列
题9-11 图片光滑处理
题9-12 排队接水
题9-13 公共前缀搜索
9.3 题集解析及参考程序
9.4 本章小结
参考文献