描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302513018丛书名: 高等学校计算机专业教材精选·算法与程序设计
内容设计紧密契合计算机类及相关专业学生毕业要求及能力特点,注重教学实用性与易用性。既可作为高等院校计算机专业、信息专业学生学习“程序设计基础”和其他程序设计类课程的参考教材,也可作为广大参加自学考试的人员和软件工作者的参考用书。
本书有广泛的适用范围,可作为微软办公软件认证考试MOS Outlook 2016的培训教材,也可以作为Outlook 2016教学及培训的教材、实验教材、教辅资料等,广泛适用于Outlook 2016的教学或实践环节。
本书的案例及习题覆盖了“程序设计基础”课程的关键知识点,内容全面,题量丰富。实验指南及课程设计的内容安排注重教学的实用性与易用性。
本书可作为《C语言入门经典(第5版)》(ISBN: 9787302170839)的配套学习辅导教材。也可自成一体,脱离其他程序设计基础教材单独使用;可作为高等院校计算机专业、信息专业或其他相关专业学生学习“程序设计基础”和其他程序设计类课程的参考教材,也可作为广大参加计算机自学考试的人员和软件工作者的参考用书。
上篇习题解析及专项练习1
第1章C程序的基本结构1
1.1本章内容1
1.1.1基本内容1
1.1.2学习目标1
1.1.3习题解析1
1.2专项练习2
1.2.1单项选择题2
1.2.2程序阅读题3第2章数据类型、运算符与表达式4
2.1本章内容4
2.1.1基本内容4
2.1.2学习目标4
2.1.3习题解析4
2.2专项练习5
2.2.1单项选择题5
2.2.2程序阅读题7第3章选择结构程序设计8
3.1本章内容8
3.1.1基本内容8
3.1.2学习目标8
3.1.3习题解析8
3.2专项练习9
3.2.1单项选择题9
3.2.2程序阅读题10第4章循环结构程序设计12
4.1本章内容12
4.1.1基本内容12
4.1.2学习目标12
4.1.3习题解析12
4.2专项练习13
4.2.1单项选择题13
4.2.2程序阅读题14第5章数组16
5.1本章内容16
5.1.1基本内容16
5.1.2学习目标16
5.1.3习题解析16
5.2专项练习17
5.2.1单项选择题17
5.2.2程序阅读题18第6章字符串20
6.1本章内容20
6.1.1基本内容20
6.1.2学习目标20
6.1.3习题解析20
6.2专项练习22
6.2.1单项选择题22
6.2.2程序阅读题23第7章指针25
7.1本章内容25
7.1.1基本内容25
7.1.2学习目标25
7.1.3习题解析25
7.2专项练习26
7.2.1单项选择题26
7.2.2程序阅读题27第8章函数29
8.1本章内容29
8.1.1基本内容29
8.1.2学习目标29
8.1.3习题解析29
8.2专项练习30
8.2.1单项选择题30
8.2.2程序阅读题32第9章数组、函数和指针再探34
9.1本章内容34
9.1.1基本内容34
9.1.2学习目标34
9.1.3习题解析34
9.2专项练习35
9.2.1单项选择题35
9.2.2程序阅读题36第10章结构体38
10.1本章内容38
10.1.1基本内容38
10.1.2学习目标38
10.1.3习题解析38
10.2专项练习39
10.2.1单项选择题39
10.2.2程序阅读题40第11章文件42
11.1本章内容42
11.1.1基本内容42
11.1.2学习目标42
11.1.3习题解析42
11.2专项练习43
11.2.1单项选择题43
11.2.2程序阅读题43第12章单项选择综合练习45第13章程序阅读综合练习57
中篇实验指南69第1章实验目标69第2章实验要求70第3章C语言的运行环境71
3.1启动Visual Studio 201771
3.2建立工程71
3.3向已有工程中加入新文件74
3.4编译、连接和运行程序76
第4章上机实验77
4.1编程环境认识和编制简单C程序77
4.1.1实验目的77
4.1.2基础练习77
4.1.3进阶练习78
4.1.4实验结果78
4.2编程初步79
4.2.1实验目的79
4.2.2基础练习79
4.2.3进阶练习81
4.2.4实验结果82
4.3选择结构程序设计82
4.3.1实验目的82
4.3.2基础练习83
4.3.3进阶练习83
4.3.4实验结果84
4.4循环结构程序设计84
4.4.1实验目的84
4.4.2基础练习85
4.4.3进阶练习85
4.4.4实验结果88
4.5数组88
4.5.1实验目的88
4.5.2基础练习88
4.5.3进阶练习89
4.5.4实验结果90
4.6字符串91
4.6.1实验目的91
4.6.2基础练习91
4.6.3进阶练习91
4.6.4实验结果92
4.7指针92
4.7.1实验目的92
4.7.2基础练习92
4.7.3进阶练习94
4.7.4实验结果95
4.8函数95
4.8.1实验目的95
4.8.2基础练习95
4.8.3进阶练习97
4.8.4实验结果98
4.9数组、指针与函数综合98
4.9.1实验目的98
4.9.2基础练习98
4.9.3进阶练习100
4.9.4实验结果104
4.10结构体104
4.10.1实验目的104
4.10.2基础练习105
4.10.3进阶练习105
4.10.4实验结果107
4.11文件108
4.11.1实验目的108
4.11.2基础练习108
4.11.3进阶练习109
4.11.4实验结果111
4.12综合实验111
4.12.1实验目的111
4.12.2基础练习111
4.12.3进阶练习112
4.12.4实验结果113
下篇课程设计115第1章课程设计的目的115第2章课程设计流程116第3章考核办法117第4章应提交的资料118第5章选题须知119附录AC语言常用调试技巧120
A.1C语言编程的特点120
A.2C语言编译的常见错误120
A.2.1源程序错误信息分类120
A.2.2C程序的常见错误分析120附录B课程设计报告文档格式133
B.1问题描述134
B.2需求分析134
B.2.1功能需求134
B.2.2性能需求134
B.3系统设计134
B.3.1系统功能模块图134
B.3.2系统功能设计134
B.3.3接口及流程设计136
B.4系统测试137
B.4.1菜单模块137
B.4.2选择模块138
B.4.3计算及分数输出模块138
B.4.4退出模块139
B.5总结139
B.5.1工作总结139
B.5.2心得体会139附录C课程设计备选题目145
C.1基础类/算法类145
C.1.1长整数运算器145
C.1.2求解自守数145
C.1.3进制转换145
C.1.4数字乘积根问题145
C.1.5整数拆分146
C.1.6分数加法计算问题146
C.1.7整数乘除法练习器146
C.1.8整数加减法练习器146
C.1.9回文数问题147
C.1.10八皇后问题147
C.1.1124点游戏147
C.1.12清除数字游戏147
C.1.13万年历148
C.1.14迷宫问题148
C.2字符串类148
C.2.1单词统计和替换148
C.2.2单词匹配149
C.2.3简单翻译程序149
C.2.4高级语言源程序注释部分的处理149
C.2.5模拟C语言语法分析器150
C.2.6英文打字训练程序150
C.2.7简单的文件相似度统计150
C.2.8背单词程序150
C.2.9数据构建器151
C.2.10源程序简单分析器151
C.2.11文件简单加密与解密151
C.3管理系统类152
C.3.1考勤信息管理152
C.3.2学生成绩管理152
C.3.3学生宿舍住宿管理153
C.3.4交通处罚单管理程序153
C.3.5校园跳蚤市场信息管理154
C.3.6停车场管理系统154
C.3.7快餐店POS机计费系统155
C.3.8杂志订阅管理系统155
C.3.9点歌台歌曲信息管理155
C.3.10学分信息管理156
C.3.11学生学籍信息管理156
C.3.12网吧信息管理157
C.3.13五金店库存管理158
C.3.14职工信息管理158
C.3.15图书借阅管理159
C.3.16手机通信录管理159
C.3.17单项选择题标准化考试系统160附录D专项练习参考答案161
我国高等学校计算机教育近年来迅猛发展,应用所学计算机知识解决实际问题,已经成为当代大学生的必备能力。
时代的进步与社会的发展对高等学校计算机教育的质量提出了更高、更新的要求。现在,很多高等学校都在积极探索符合自身特点的教学模式,涌现出一大批非常优秀的精品课程。
为了适应社会的需求,满足计算机教育的发展需要,清华大学出版社在进行了大量调查研究的基础上,组织编写了《高等学校计算机专业教材精选》。本套教材从全国各高校的优秀计算机教材中精挑细选了一批很有代表性且特色鲜明的计算机精品教材,把作者们对各自所授计算机课程的独特理解和先进经验推荐给全国师生。
本系列教材特点如下。
(1) 编写目的明确。本套教材主要面向广大高校的计算机专业学生,使学生通过本套教材,学习计算机科学与技术方面的基本理论和基本知识,接受应用计算机解决实际问题的基本训练。
(2) 注重编写理念。本套教材作者群为各校相应课程的主讲,有一定经验积累,且编写思路清晰,有独特的教学思路和指导思想,其教学经验具有推广价值。本套教材中不乏各类精品课配套教材,并力图努力把不同学校的教学特点反映到每本教材中。
(3) 理论知识与实践相结合。本套教材贯彻从实践中来到实践中去的原则,书中的许多必须掌握的理论都将结合实例来讲,同时注重培养学生分析、解决问题的能力,满足社会用人要求。
(4) 易教易用,合理适当。本套教材编写时注意结合教学实际的课时数,把握教材的篇幅。同时,对一些知识点按教育部教学指导委员会的最新精神进行合理取舍与难易控制。
(5) 注重教材的立体化配套。大多数教材都将配套教师用课件、习题及其解答,学生上机实验指导、教学网站等辅助教学资源,方便教学。
随着本套教材陆续出版,相信能够得到广大读者的认可和支持,为我国计算机教材建设及计算机教学水平的提高,为计算机教育事业的发展做出应有的贡献。
清华大学出版社前言
随着计算机技术的发展,各应用领域已逐渐将计算思维能力、程序设计能力作为从业者的基本能力。“程序设计基础”课程旨在帮助学习者学习结构化程序设计的一般性方法,深入理解编程思想,提高计算思维能力。通过学习一门程序设计语言,结合大量编程实践,学习者可以熟练掌握基本编程技术,形成对数据及其存储的认知,进而利用计算机这一工具解决实际工程应用问题。本书设置了典型案例、专项练习,尤其是程序阅读练习及大量精心选择和设计的实验,使学习者通过循序渐进的实践提高编程基本功,成为“会编程序”的程序员。学习者应注意把握程序设计方法与编程语言学习相辅相成的原则,通过学习程序设计语言理解程序设计思想,避免学习时只见树木、不见森林,为进一步学习编写高效的计算机程序,以及学习计算机系统的相关理论奠定坚实的技术基础。
1. 结构安排
全书分为上、中、下三篇。
上篇是习题解析及专项练习,包括13章。第1~11章为章节练习,内容包括C程序的基本结构,数据类型、运算符与表达式,选择结构程序设计,循环结构程序设计,数组,字符串,指针,函数,结构体,文件,同时还包括数组、函数和指针再探,每章分别包括本章内容和专项练习两大模块。其中,本章内容中的习题解析对典型知识点进行深入细致的分析,专项练习包括单项选择题和程序阅读题两种题型。第12、13章分别为单项选择综合练习和程序阅读综合练习。
中篇是实验指南,内容包括实验目标、实验要求、C语言的运行环境及上机实验四部分。其中上机实验包括12个实验模块。每个实验模块分为实验目的、基础练习、进阶练习、实验结果部分。实验题目选取注重突出程序设计思想、能力的培养,难度循序渐进,以适应不同读者的需要。实验内容丰富,全部12个实验模块的代码量超过5000行。
下篇是课程设计,内容包括对课程设计目的、课程设计流程、考核办法、应提交的资料及选题须知的详细描述。
本书的附录包括C语言常用调试技巧、课程设计报告文档格式、课程设计备选题目及专项练习参考答案。其中课程设计题目包括基础类/算法类、字符串类、管理系统类三类题目,共计42个备选题目,供读者选择学习,这些题目覆盖了程序设计基础的常用知识点,涉及经典算法及小型应用。
2. 本书特点
本书内容的规划和组织源于作者多年讲授“程序设计基础”课程及指导学生实验的教学实践经验,同时参考近年来出版的多种程序设计基础理论、实践教材及其他参考书籍编写而成。本书具有如下特色。
(1) 内容覆盖全面
本书包括习题解析及专项练习、实验指南、课程设计三部分内容,覆盖了教学的理论、实验、课程设计三大环节,适用于教学全程,包括课内教学和课外自学,具有良好的实用性和易用性。
(2) 实验内容丰富,富有层次,突出个性化学习
本书的实验独立成篇,便于程序设计基础的实验教学。实验内容丰富,实验总代码量超过5000行。基础练习以“快速练习,熟练掌握”为目标;进阶练习以“深入练习,灵活运用”为目标。按难易层次划分实验内容,便于教师因人施教,也便于读者自学时自我评价。
(3) 案例典型,专项练习突显能力培养,富有启发性
本书的习题解析案例与课程的关键知识点结合紧密。专项练习题数量丰富,注重选取与实际应用相结合的带启发性的习题,以突出学习重点,提高学生学习兴趣,加深对结构化程序设计方法的理解。全书的专项练习、实验习题配置突显培养问题分析、程序设计、编写、调试能力的课程主旨。
为方便教学,本书配套资料包含练习题答案及实验习题、课程设计答案、课程教学视频资源、课程设计教学视频资源,本书配套实验习题均可通过在线平台(http://coj.cqut.edu.cn)进行在线练习。
3. 适用对象
本书内容自成一体,既可配合程序设计基础教材使用,也可以脱离教材作为单独的学习指导书,起到衔接课堂教学与实验教学、课后辅导的作用。
本书可作为高等院校计算机类本科、专科各专业,理工科信息类本科、专科各专业或其他相关专业学生学习“程序设计基础”和其他程序设计类课程的参考教材,也可作为广大参加计算机自学考试的人员和软件工作者的参考用书。
本书上篇第6~8章及中篇实验1~8由卢玲编写,上篇第1~5章及中篇实验9~12由曹琼编写,上篇第9~13章及下篇由刘恒洋编写,附录A及附录B由李梁编写,附录C及附录D由刘亚辉编写。全书由卢玲统稿。
由于编者的知识和写作水平有限,本书内容虽经过反复校正,仍难免存在错误或不妥之处,敬请广大同行专家和读者不吝指正,以便我们及时修改,感激不尽!
本书的编写得到重庆理工大学计算机科学与技术系机器学习与信息检索实验室同学的协助,参与本书习题校正的有陈继学、李莹、李云乔、雷子鉴、张欢、张毅。在此向各位付出辛勤劳动的同行表示衷心的感谢!
作者2018年5月
5.1.2学习目标
(1) 理解产生、运用数组数据类型的问题场景。
(2) 掌握一维数组的定义及元素访问方法,掌握一维数组的存储方法及因存储结构带来的操作特点。
(3) 掌握二维数组的定义及元素访问方法,掌握二维数组的存储方法。
5.1.3习题解析
【例51】在C语言中,数组的名字代表。
(A) 数组全部元素的值 (B) 数组的首地址
(C) 数组第一个元素的值 (D) 数组元素的个数
解答: (B)。
分析: 在C语言中,如果在程序中引用数组的名字,实质是引用数组的首地址。例如:int data_array[]={1,2,3,4,5,6,7,8,9,10};
printf(“%x”, data_array);//输出数组的首地址
printf(“%d”, data_array[0]);//输出数组的第一个元素的值【例52】下列关于C语言数组的描述,正确的是。
(A) 一维数组中的元素,按其下标的先后顺序,在内存中占据连续的存储空间
(B) 引用数组元素的下标,不能是变量,必须是常量
(C) 如果数组元素的下标超过了数组长度的合法范围,编译时会报错
(D) 同一个数组中存储的多个元素,数据类型可以不一样
解答: (A)。
分析: 数组是一种顺序存储方式,其元素按其下标的先后顺序在计算机的内存中占据连续的存储空间,因此选项(A)正确。这一特点使数组元素的查询及定位操作比较容易、快速,但也使数组元素的动态操作代价较高,因为添加或删除元素时需移动大量的其他数组元素。引用数组元素的下标可以是变量,只要在合法的下标范围之内即可。当下标超出合法范围时,编译既不会报错,也不会报警。因此选项(B)和(C)错误。数组中所有的元素数据类型是完全一样的,因此选项(D)错误。
【例53】以下数组的定义和操作,错误的是。
(A) int a[10]; a[10]=0;(B) char a[10];
(C) int a[]={1,2,3};(D) #define SIZE 10float a[SIZE];
解答: (A)。
分析: 定义数组时,指定的数组长度可以是普通常数或者符号常量。如果在定义数组时初始化数组元素,则可以不指定数组的长度,此时数组的长度为初始的元素个数,因此选项(B)、(C)、(D)是正确的。选项(A)定义了长度为10的整型数组,但是用a[10]引用数组元素,其下标10超出了界限。
5.2专 项 练 习〖*4/5〗5.2.1单项选择题1. 以下对一维数组a的定义,正确的是。
(A) char a(10); (B) int a[];
(C) int k=5, a[k]; (D) char a[3]={‘a’,’b’,’c’};
2. 以下能对一维数组a进行初始化的语句是。
(A) int a[5]=(0,1,2,3,4,);(B) int a(5)={};
(C) int a[3]={0,1,2}; (D) int a{5}={101};
3. 已知一维数组a定义为“int a[10];”,则对a数组元素的正确引用是。
(A) a[10] (B) a[3.5](C) a(5)(D) a[0]
4. 以下说法中,错误的是。
(A) 构成数组的所有元素数据类型必须相同
(B) 用指针法引用数组元素允许数组元素的下标越界
(C) 一维数组元素的下标依次是0,1,2,3……
(D) 删除一个数组元素时,该元素的存储空间不会释放
5. 若有以下数组定义,则数值a中最小的和最大的元素下标分别是。int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};(A) 1,12(B) 0,11 (C) 1,11(D) 0,12
6. 假设int类型变量占用2个字节,有定义“int x[10]={0,2,4};”,则数组x在内存中所占字节数是。
(A) 3 (B) 6 (C) 10 (D) 20
7. 若有说明语句“int a[][3]={{1,2,3},{4,5},{6,7}};”,则数组a第一维的大小为。
(A) 2 (B) 3 (C) 4 (D) 无确定值
8. 以下定义语句中,错误的是。
(A) int a[]={1,2}; (B) char a;
(C) char s[10]=”test”; (D) int a[3]={0,0,0,0};
9. 以下对二维数组的定义,正确的是。
(A) int a[][]={1,2,3,4,5,6}; (B) int a[2][]={1,2,3,4,5,6};
(C) int a[][3]={1,2,3,4,5,6}; (D) int a[2,3]={1,2,3,4,5,6};
10. 若有定义“int a[3][4];”,则对数组a的元素引用,正确的是。
(A) a[2][4] (B) a[1,3] (C) a[2][0](D) a(2)(1)
5.2.2程序阅读题
1. 以下程序的输出结果是: 。void main()
{ int a[3][3]={{1,3,6},{7,9,11},{14,15,17}},sum1=0,sum2=0,i,j;
for(i=0;i<3;i )
for(j=0;j<3;j )
if(i==j) sum1=sum1 a[i][j];
for(i=0;i<3;i )
for(j=0;j<3;j )
if(i j==2)sum2=sum2 a[i][j];
printf(“sum1=%d,sum2=%d\n”,sum1,sum2);
}2. 以下程序的输出结果是: 。void main()
{ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i )
for(j=0;jprintf(“%d\n”,s);
}3. 以下程序的输出结果是: 。void main()
{ int i, a[10];
for(i=9;i>=0;i–)
a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}4. 以下程序的输出结果是: 。void main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7 && p[i]%2)
{ k=k p[i];
i ;
}
printf(“%d\n”,k);
}5. 以下程序的输出结果是: 。void main()
{ int f[10]={1,1}, i;
for(i=2;i<=9;i )
f[i]=f[i-2] f[i-1];
for(i=0;i<=6;i )
printf(“%3d”,f[i]);
}6. 以下程序的输出结果是: 。void main()
{ int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i )
printf(“%d “,x[i][2-i]);
}
评论
还没有评论。