描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302455363丛书名: 21世纪高等学校规划教材·计算机科学与技术
为了帮助读者有效学习,本书精选了NBU OJ上不同类型的30多道题目,并提供了完善的参考程序,介绍了Visual C 6.0环境下程序调试的技巧以及NBU OJ上的评判规则,总结了程序开发中容易犯的错误,同时还挑选了OJ上的160多道题目供学生实验使用。读者可以先模仿实例操作,然后再做上机实验题,通过“模仿—调试—编写”的上机实践过程,循序渐进地熟悉编程环境及OJ平台,掌握程序设计的思想和方法。本书还提供了两个综合课程设计,并给出了程序的基础代码,供读者模仿完善。书中还提供了少量习题,可供读者巩固C语言方面的理论知识。
本书可作为高等院校理工科相关专业的程序设计类课程实践教材,也可作为以ACM/ICPC为目标的大学生程序设计竞赛的入门培训教材,还可供对程序设计感兴趣的普通读者学习参考。
目录
第1部分在
线 实 验
实验1熟悉C编程环境
1.1实验目的和要求
1.2熟悉Visual C 集成开发环境
1.2.1启动Visual C
1.2.2新建或打开源程序文件
1.2.3程序的编辑、编译、连接和运行
1.2.4程序的关闭
1.3程序调试中的错误
1.3.1编译错误
1.3.2连接错误
1.3.3运行错误
1.3.4逻辑错误
1.4实例分析
1.4.1开学的问候
1.4.2显示简单图案
1.4.3自动应答器
1.5上机实验题
1.5.1自我介绍
1.5.2才艺秀
1.5.3菜单显示
1.5.4加强版自动应答器
实验2在线评判系统(NBU OJ)的使用
2.1实验目的和要求
2.2NBU OJ系统简介
2.3在NBU OJ上注册
2.4在NBU OJ上做题
2.4.1学生自主式做题
2.4.2教师指导式做题
2.5在线课程(ONLINE COURSE)管理
2.5.1课程管理(教师用户)
2.5.2成绩管理(教师用户)
2.5.3课程学习(学生用户)
2.6NBU OJ上输入输出的特殊要求
2.7实例分析
2.7.1数字自动应答器(题号: 1000,难度: ★)
2.7.2单组A B(题号: 1002,难度: ★)
2.8上机实验题
2.8.1字符应答器(题号: 1001,难度: ★)
2.8.2两数交换输出顺序(题号: 1015,难度: ★)
2.8.3小神探的小问题(题号: 1215,难度: ★)
实验3基本数据类型与顺序结构
3.1实验目的和要求
3.2实例分析
3.2.1计算月收入(题号: 1006,难度: ★)
3.2.2温度转换(题号: 1007,难度: ★)
3.2.3卫生包干区的面积(题号: 1011,难度: ★)
3.2.4三位数的数位分离(题号: 1029,难度: ★)
3.3上机实验题
3.3.1三数求平均值(题号: 1005,难度: ★)
3.3.2圆周长和圆面积(题号: 1008,难度: ★)
3.3.3梯形面积(题号: 1205,难度: ★)
3.3.4植树问题(题号: 1018,难度: ★)
3.3.5成绩预算(题号: 1021,难度: ★)
3.3.6简单译码(题号: 1022,难度: ★)
3.3.7多项式求值2(题号: 1025,难度: ★)
3.3.8存款利息(题号: 1027,难度: ★)
3.3.9不同国家的日期写法(题号: 1258,难度: ★)
3.3.10鸡兔同笼(1)(题号: 1014,难度: ★)
3.3.11四位数的数字和(题号: 1247,难度: ★)
3.3.12平面上两点的距离(题号: 1013,难度: ★)
3.3.13旅行时间和花费(题号: 1242,难度: ★)
3.3.14零钱兑换(题号: 1243,难度: ★)
实验4选择结构
4.1实验目的和要求
4.2实例分析
4.2.1成绩合格问题(题号: 1058,难度: ★)
4.2.2符号属性判断(题号: 1036,难度: ★)
4.2.3分段函数(1)(题号: 1041,难度: ★)
4.2.4单个字母大小写互换(题号: 1047,难度: ★)
4.2.5平面上的三角形判断(1)(题号: 1012,难度: ★)
4.3上机实验题
4.3.1判断奇数偶数(题号: 1038,难度: ★)
4.3.2分段函数(3)(题号: 1043,难度: ★)
4.3.3单个字符类型判断(题号: 1049,难度: ★)
4.3.4五级制成绩评级(题号: 1060,难度: ★)
4.3.5是否闰年(题号: 1072,难度: ★)
4.3.6求点的高度(题号: 1082,难度: ★)
4.3.7求1到10的英文单词(题号:
1083,难度:
★)
4.3.8简单计算器(题号: 1084,难度: ★)
4.3.9正方形还是圆形(题号: 1218,难度: ★)
4.3.10三数求大值(题号: 1064,难度: ★)
4.3.11模拟万年历(题号: 1073,难度: ★)
4.3.12加油站加油(题号: 1078,难度: ★)
4.3.13数字加密(题号: 1077,难度: ★)
4.3.14一元二次方程(题号: 1081,难度: ★)
4.3.15石头剪刀布(题号: 1232,难度: ★)
4.3.16计算火车运行时间(题号: 1492,难度: ★)
4.3.17机器人的移动问题(题号: 1238,难度: ★★)
实验5基本循环结构
5.1实验目的和要求
5.2实例分析
5.2.11到N连续求和(题号: 1090,难度: ★)
5.2.2简单分数数列求和(题号: 1098,难度: ★)
5.2.3一组整数求平均(题号: 1108,难度: ★)
5.2.4不确定组数的A B(题号: 1003,难度: ★)
5.3上机实验题
5.3.1简单数字打印(题号: 1086,难度: ★)
5.3.2符号变化的整数数列求和(题号: 1091,难度: ★)
5.3.3乘法数列求和(题号: 1095,难度: ★)
5.3.4分数数列求和(题号: 1101,难度: ★)
5.3.5计算n!(题号: 1104,难度: ★)
5.3.6正/负数统计(题号: 1113,难度: ★)
5.3.7N组A B(题号: 1004,难度: ★)
5.3.8数字字符统计(题号: 1052,难度: ★)
5.3.9字符分类统计(题号: 1053,难度: ★)
5.3.10各位数字求和(题号: 1032,难度: ★)
5.3.11数据逆序显示(题号: 1031,难度: ★)
5.3.12水仙花数(题号: 1126,难度: ★)
5.3.13判断完全数(题号: 1127,难度: ★)
5.3.14分解质因数(题号: 1128,难度: ★)
5.3.15蟠桃记(题号: 1136,难度: ★)
5.3.16还是鸡兔同笼(题号: 1211,难度: ★)
5.3.17判断亲密数(题号: 1213,难度: ★)
5.3.18角谷猜想(题号: 1458,难度: ★)
5.3.19画正方形(题号: 1080,难度: ★)
5.3.20用天平找小球(题号: 1491,难度: ★)
5.3.21数星星(题号: 2547,难度: ★)
5.3.22统计衣服尺寸(题号: 1265,难度: ★)
5.3.23勤劳的蚂蚁(题号: 1233,难度: ★★)
5.3.24回流的时光(题号: 1235,难度: ★★)
5.3.25一数三平方数(题号: 1421,难度: ★★)
实验6嵌套循环结构
6.1实验目的和要求
6.2实例分析
6.2.1绘制字符正方形(题号: 1226,难度: ★)
6.2.2求阶乘之和(题号: 1105,难度: ★)
6.3上机实验题
6.3.1表示成两个数的平方和(题号: 1222,难度: ★)
6.3.2多组整数求和(题号: 1109,难度: ★)
6.3.3百钱百鸡问题(题号: 2095,难度: ★)
6.3.4九九乘法表(题号: 1119,难度: ★★)
6.3.5字母金字塔(题号: 1166,难度: ★★)
6.3.6打印菱形(题号: 1214,难度: ★★)
6.3.7哥德巴赫猜想(题号: 1174,难度: ★★)
6.3.8计算等式(题号: 1103,难度: ★★)
6.3.9不重复的三位数(题号: 1801,难度: ★★)
6.3.10鸡、兔、鸟同笼(题号: 1434,难度: ★★)
6.3.11满载着爱的代码(题号: 1241,难度: ★★★)
实验7一维数值型数组
7.1实验目的和要求
7.2实例分析
7.2.1无序数组的查找(题号: 1151,难度: ★)
7.2.2值和小值(题号: 1152,难度: ★)
7.2.3一维数组的删除(题号: 1154,难度: ★★)
7.3上机实验题
7.3.1一维数组基本练习(题号: 1149,难度: ★)
7.3.2平均分及不合格人数(题号: 1111,难度: ★)
7.3.3简单评委打分(题号: 1147,难度: ★)
7.3.4求年月日(题号: 1075,难度: ★)
7.3.5一维数组逆序显示(题号: 1155,难度: ★)
7.3.6斐波那契的兔子问题(题号: 1124,难度: ★)
7.3.7有序数组的查找(题号: 1158,难度: ★)
7.3.8一维数组的插入(题号: 1153,难度: ★)
7.3.9剔除数字0(题号: 1194,难度: ★)
7.3.10简单一维数组排序(题号: 1156,难度: ★)
7.3.11分和分(题号: 1157,难度: ★)
7.3.12统计素数(题号: 1131,难度: ★)
7.3.13百灯判熄(题号: 1122,难度: ★★)
7.3.14十进制转换成八进制(题号: 1172,难度: ★★)
7.3.15幂之和(题号: 1209,难度: ★★)
7.3.16三天打鱼两天晒网(题号: 1228,难度: ★★)
7.3.17数制转换(题号: 1239,难度: ★★)
7.3.18一位数出现的次数(题号: 1252,难度: ★★)
7.3.19susan的货币兑换(题号: 1167,难度: ★★)
7.3.20无重复的排序(题号: 1262,难度: ★★)
实验8二维数值型数组
8.1实验目的和要求
8.2实例分析
8.2.1二维数组的输入和输出(题号: 1141,难度: ★)
8.2.2二维数组的值(题号: 1161,难度: ★)
8.3上机实验题
8.3.1单位矩阵初始化(题号: 1140,难度: ★)
8.3.2二维数组求行平均值(题号: 1142,难度: ★)
8.3.3对角线元素和(题号: 1164,难度: ★)
8.3.4上三角置零(题号: 1298,难度: ★)
8.3.5内部和(题号: 1299,难度: ★)
8.3.6边界积(题号: 1312,难度: ★)
8.3.7二维数组值及位置(题号: 1162,难度: ★★)
8.3.8杨辉三角形(题号: 1165,难度: ★★)
8.3.9二维数组行列互换(题号: 1169,难度: ★★)
8.3.10二维数组的鞍点(题号: 1181,难度: ★★)
实验9字符数组和字符串
9.1实验目的和要求
9.2实例分析
9.2.1字符变换(题号: 1057,难度: ★)
9.2.2回文数字(题号: 1144,难度: ★)
9.3上机实验题
9.3.1相邻字符判相等(题号: 1054,难度: ★)
9.3.2特定字符出现次数(题号: 1056,难度: ★)
9.3.3单词译码(题号: 1139,难度: ★)
9.3.4数字提取(题号: 1187,难度: ★)
9.3.5镜像文字(题号: 1336,难度: ★)
9.3.6回文字符串(题号: 1145,难度: ★)
9.3.7输出短字符串(题号: 1201,难度: ★)
9.3.8数字字符出现频率(题号: 1148,难度: ★★)
9.3.9字母出现频率(题号: 1159,难度: ★★)
9.3.10文章中字符数统计(题号: 1150,难度: ★★)
9.3.11C语言合法标识符(题号: 1190,难度: ★★)
9.3.12判断字符串类型(题号: 1199,难度: ★★)
9.3.13首字母变大写(题号: 1337,难度: ★★)
9.3.14清除行注释(题号: 1138,难度: ★★)
9.3.15查找元素(题号: 1175,难度: ★★)
9.3.16城市名排序(题号: 1185,难度: ★★)
9.3.17你能找出多少个整数(题号: 1315,难度: ★★)
9.3.18幸运抽奖(题号: 1340,难度: ★★)
9.3.19去过的城市(题号: 1352,难度: ★★)
9.3.20快乐的字符串(题号: 1341,难度: ★★)
实验10函数的基本使用
10.1实验目的和要求
10.2实例分析
10.2.1大写字母变小写(题号: 2628,难度: ★)
10.2.2求阶乘(题号: 2629,难度: ★)
10.3上机实验题
10.3.1两整数相加(题号: 2627,难度: ★)
10.3.2多项式求值(题号: 2630,难度: ★)
10.3.3求两数平均值(题号: 2631,难度: ★)
10.3.4求两数值(题号: 2634,难度: ★)
10.3.5是否素数(题号: 2636,难度: ★)
10.3.6判断区域内的素数(题号: 2633,难度: ★)
10.3.7是否完全数(题号: 2635,难度: ★)
10.3.8字母金字塔(题号: 2632,难度: ★)
10.3.9求公约数(题号: 2644,难度: ★)
10.3.10不一样的斐波那契(题号: 2645,难度: ★)
10.3.11汉诺塔(题号: 1143,难度: ★★)
实验11指针、数组与函数
11.1实验目的和要求
11.2实例分析
11.2.1值和小值(题号: 1152,难度: ★)
11.2.2单位矩阵初始化(题号: 1140,难度: ★)
11.3上机实验题
11.3.1简单数字显示(题号: 2637,难度: ★)
11.3.2一维数组元素加1显示(题号: 2639,难度: ★)
11.3.3两数求和(题号: 2641,难度: ★)
11.3.4求数组中的值(题号: 2646,难度: ★)
11.3.5计算总分(题号: 1110,难度: ★)
11.3.6还是平均分(题号: 1112,难度: ★)
11.3.7一维数组排序(题号: 1170,难度: ★)
11.3.8二维数组元素加1操作(题号: 1160,难度: ★)
11.3.9字符串长度(题号: 1182,难度: ★)
11.3.9连接字符串(题号: 1183,难度: ★)
11.3.10字符串复制(题号: 1256,难度: ★)
11.3.11比较串的大小(题号: 1404,难度: ★)
11.3.12正数的平均值(题号: 1200,难度: ★)
11.3.13数组中对应元素相减(题号: 2647,难度: ★)
11.3.14无序数组的查找(题号: 1151,难度: ★)
11.3.15二维数组的输入输出(题号: 1141,难度: ★)
11.3.16数字剔除(题号: 1443,难度: ★★)
11.3.17字符接龙(题号: 1444,难度: ★★)
实验12结构体
12.1实验目的和要求
12.2实例分析
12.2.1牛刀小试结构体(题号: 1435,难度: ★)
12.2.2课程平均分(题号: 1445,难度: ★)
12.3上机实验题
12.3.1初学结构体(题号: 1436,难度: ★)
12.3.2结构体的嵌套(题号: 1437,难度: ★)
12.3.3计算总分(题号: 1438,难度: ★)
12.3.4候选人得票统计(题号: 1887,难度: ★)
12.3.5分与平均分(题号: 1310,难度: ★)
12.3.6教务系统之输入输出(题号: 1331,难度: ★)
12.3.7教务系统之平均成绩(题号: 1414,难度: ★)
12.3.8考试之后(题号: 1372,难度: ★★)
12.3.9OJ上的简单排名(题号: 1429,难度: ★★)
12.3.10庆功晚宴(题号: 1370,难度: ★★)
12.3.11情人节的百宝箱(题号: 1371,难度: ★★)
12.3.12奖学金(题号: 1439,难度: ★★)
12.3.13购买贺年卡(题号: 1440,难度: ★★★)
12.3.14简真分数递增序列(题号: 1400,难度: ★★★)
实验13单向链表
13.1实验目的和要求
13.2实例分析
13.2.1静态链表的建立和查询(题号: 1327,难度: ★)
13.2.2链表删除(题号: 1392,难度: ★★)
13.3上机实验题
13.3.1动态链表的建立和查询(题号: 1425,难度: ★)
13.3.2链表插入(题号: 1394,难度: ★★)
13.3.3约瑟夫(题号: 1390,难度: ★★)
13.3.4复杂的链表删除(题号: 1392,难度: ★★)
实验14文件
14.1实验目的和要求
14.2实例分析
14.2.1CoCo的小把戏
14.2.2存储学生信息
14.3上机实验题
14.3.1信息的显示
14.3.2专家的工作
14.3.3奇偶数分离
14.3.4学生成绩管理
实验15课程设计
15.1小学生四则运算小游戏
15.1.1问题描述
15.1.2知识点
15.1.3功能分析
15.1.4参考代码1.0
15.1.5参考代码2.0
15.2学生成绩管理系统
15.2.1问题描述
15.2.2知识点
15.2.3功能分析
15.2.4参考代码1.0
15.2.5参考代码2.0
第2部分习
题 汇 编
习题1计算机与程序设计概述
习题2基本数据类型与顺序结构
习题3选择结构
习题4循环结构
习题5数值型数组
习题6字符数组和字符串
习题7函数
习题8指针、数组与函数
习题9结构体
习题10链表
习题11文件
习题参考答案
参考文献
上机实验是高级语言程序设计课程必不可少的实践环节,学生需要通过大量的编程训练,在实践中掌握程序设计的思想及方法。然而实验课堂的效率一直是困扰我们的一个大问题。随着编程量的增加,在有限的实验时间内,教师忙于应付重复性的代码检查而无法与学生进行更多的交流,学生唯恐漏掉作业检查影响实验成绩不得不浪费大量的时间等待,这些问题大幅降低了实践环节的效率。在线评判是当前国内外流行的大学生程序设计竞赛所采用的一种评判模式,它支持程序的在线提交和实时评判。我们依据这一思想,建立了宁波大学在线评判系统(简称NBU OJ),设计、整理了大量的程序设计及算法的题目,构成了NBU OJ的题库,并将该系统用于大学一年级“高级语言程序设计C”课程的实践教学。本书是为《C程序设计方法及在线实践》(陈叶芳等编著,清华大学出版社出版)编写的配套实验指导用书及习题用书。全书的实验以NBU OJ为平台,详细介绍Visual C 下的编程要点以及OJ上的评判规则,书中的大部分题目都精选自NBU OJ题库(题目后面给出题号的都选自NBU OJ),可在NBU OJ在线提交并获得实时的评价反馈。NBU OJ面向因特网开放使用,网址为http://www.nbuoj.com。本书提供了30多个实例分析、160多道上机实验题目以及两个综合课程设计,绝大部分题目都可在NBU OJ在线提交并获得自动评判。我们根据课程的教学要求对这些题目大致进行了难度的划分: 1星(★)表示较容易,2星(★★)表示中等难度,3星(★★★)表示较难。本书对30多个实例分析提供了完善的参考代码,给出了一些调试步骤及技巧,并总结了常见的编程错误。另外的160多题题目供读者上机实验使用。读者可以先模仿实例分析,然后再做上机实验题,通过“模仿—调试—编写”的上机实践过程,循序渐进地熟悉编程环境及OJ平台,掌握程序设计的思想和方法。本书的实验1介绍Visual C 6.0集成编程环境的使用,程序调试的步骤,各种错误的原因及修正方法,供读者熟悉C语言的编程环境。实验2介绍了宁波大学在线评判系统的使用,包括学生自主做题、教师指导做题、线上课程组的使用、OJ评判规则的介绍以及NBU OJ的特点等。其中线上课程组(Online Course)功能的开发为课程教学、班级人员的管理、成绩的管理提供了极大的方便。请读者仔细阅读实验2的内容,以便更好地利用NBU OJ提供的资源。实验3到实验14提供了C语言课程相关知识点的实例分析、参考代码、常见错误描述以及程序调试的步骤,同时提供若干实验题目供读者实践。实验15包含了两个综合的课程设计,可用于读者综合检测自己的程序设计水平。致谢感谢宁波大学信息科学与工程学院的王让定老师、陈华辉老师、王晓东老师、周宇老师,他们给我提出了很多建设性的思路和建议。感谢宁波大学ACM集训队的队员们,他们和我一起为NBU OJ的建设和成长倾注了心血。他们是蒋明江、谢伟刚、叶青、吴奇、王启运、王晟宇、祝顶梁、韩马超、王杰波、赖敬峰、赵凯、陈善富、陈冬冬、王忠攀、李冰、陈雷、温兴慧、周新、张奕铭等同学。无法完全列举他们的名字,仅在此表示对他们的谢意。感谢钱江波老师、郁梅老师、李纲老师,他们在NBU OJ的使用及题库的扩充方面给我提供了很大的支持。感谢和我一起参加程序设计课程建设及教学的其他老师,他们是董一鸿老师、石守东老师、何贤芒老师、宋宝安老师、钮俊老师、王小权老师,他们参与了NBU OJ的大量实践并及时提出了改进意见。本书得到宁波大学计算机科学与技术专业国家高等学校特色专业建设、浙江省重点高校建设、浙江省本科院校“十二五”优势专业建设、浙江省高等教育教学改革项目和课堂教学改革项目、宁波大学精品在线开放课程、宁波大学混合式教学课程、宁波大学重点教研等项目的经费资助,谨致谢意。本书的编写及题库的建设参考了近年来出版的大量书籍以及一些学校的在线评判系统,吸取了很多专家同仁的宝贵经验,在此一并表示衷心的感谢!书中肯定会存在不足之处,竭诚欢迎广大读者和同行批评指正。作者电子邮箱: [email protected]。陈叶芳2016年8月
评论
还没有评论。