C程序设计导引

出版社:机械工业出版社
出版日期:2013-5
ISBN:9787111418917
页数:244页

章节摘录

版权页:   [例2—7]时钟指针普通时钟的时针和分针的夹角随时间而变化。从标准输入读入一个24小时制的时间,其格式为“h:m”,其中h(0≤h≤23)表示小时,m(0≤m≤59)表示分钟,均为整数。求该时刻时针和分针的夹角A(0≤A≤180)。在标准输出上输出结果,保留3位小数。例如,当输人为8:10时,输出175.000。 求解这道题目的基本思想是,首先根据给定的时间分别计算出时针和分针相对于某一参考方向的角度,然后再将两个角度相减,计算出两个指针之间的夹角。为方便起见,我们以表盘上12点的方向为起点顺时针计算各个指针的角度。因为分针每分钟转动6度,所以使用分钟数乘以6就是分针的角度。时针每小时转动30度,每分钟转动0.5度,因此以时数乘以30再加上分钟数乘以0.5就是时针的角度。但是,使用这样算出的指针角度相减得到的结果可能不符合要求。首先,题目中给出的小时的范围是0~23,以上述方法算出的时针的角度在0~720度之间,有可能超过一个圆周角。其次,由于两个指针的相对位置不固定,两个角度相减的结果可能为正,也可能为负;即使结果为正,也不一定在0~180度的范围内。为解决这两个问题,需要在计算过程中进行一系列的变换,以便使最终结果符合题目的要求: 1)将小时数从区间[0,23]映射到区间[0,11],以便使时针的角度在0~360度之间。例如,将15点转换为3点。 2)将结果为负数的夹角角度转换为正数。例如,将一30度转换为30度。 3)将大于180度的夹角角度转换为小于180度的角度。例如,将185度转换为175度。 所有上述变换,都需要根据给定的数据或计算结果所处的不同区间进行不同的处理: 1)当小时数处于区间[12,23]时,从中减去12。 2)对于负数的夹角角度a,取—a。 3)对大于180度的夹角角度a,取360—a。 为实现上述这些变换,最容易想到的方法就是使用条件语句,根据相关数据所在的区间分别执行不同的操作。例如,将区间[0,360)中的角度映射到区间[0,180)的方法是对位于区间[0,180)中的角度不做任何处理,而对位于区间[180,360)中的角度,则用360减去该角度。我们到目前为止还没有学习条件语句,因此这种方法暂时还不可用。我们可以换另一种方法,在不使用条件语句的情况下,利用刚刚学过的算术运算和强制类型转换完成所需的数据变换。 将24小时制下的小时转换为12小时制下的时问的方法是直接将小时数模12。这样,就不必判断小时数的具体数值了。根据转换后的小时数计算出的时针的角度必然位于区间[0,360)中。

内容概要

尹宝林,北京航空航天大学计算机系教授、博士生导师。全国信息学奥林匹克科学委员会副主席。从事计算机专业教学和科研工作多年,曾主讲“C语言程序设计”、“高级语言程序设计”、“UNIX程序设计环境”、“计算机图形学”、“图像处理”等课程,其中“高级语言程序设计”被评为北京市精品课程。

书籍目录

作者自序 教学建议 例题索引 第0章引言 第1章C程序的创建及其基本结构 1.1C程序的创建过程 1.2C程序的基本组成 1.3调试初步——语法错误的定位 1.4数据的输入/输出和标准文件 习题 第2章常量、变量和表达式 2.1常量 2.1.1数字常量 2.1.2字符常量 2.1.3字符串字面量 2.2变量 2.2.1变量名和变量类型 2.2.2变量的赋值和类型转换 2.2.3变量的初始化 2.2.4类型限定符const 2.3算术表达式 2.3.1算术运算符 2.3.2增量和减量运算符 2.3.3位运算 2.3.4复合赋值运算符 2.4强制类型转换 2.5数据输出/输入函数printf()和scanf() 2.5.1数值的输出函数printf 2.5.2数值的输入函数scanf 2.6常量的符号表示方法 2.6.1常量宏 2.6.2枚举常量 习题 第3章条件语句和开关语句 3.1关系运算符和逻辑运算符 3.2运算符的优先级 3.3从实际问题中的条件到逻辑表达式 3.4条件语句 3.4.1条件语句中的条件 3.4.2复合语句 3.4.3条件语句的嵌套和级联 3.4.4使用条件语句时的注意事项 3.4.5条件运算符和条件表达式 3.5switch语句 习题 第4章循环语句和goto语句 4.1while语句 4.2for语句 4.3dowhile语句 4.4循环语句的选择和使用 4.5逗号表达式 4.6循环语句的嵌套 4.7循环语句中的非常规控制 4.8goto语句 习题 第5章函数 5.1函数的基本概念 5.2函数的调用 5.3函数的结构 5.4函数的定义 5.5函数的调用关系和返回值 5.6局部变量和全局变量 5.6.1局部变量 5.6.2全局变量 5.6.3对全局变量的访问 5.7函数参数的传递 5.8标准库函数 5.8.1常用的头文件 5.8.2常用的数据输入/输出函数 5.8.3字符类型判断函数 5.8.4字符串处理函数 5.8.5其他常用函数 5.9递归初步 习题 第6章数组 6.1一维数组 6.1.1一维数组的定义和初始化 6.1.2一维数组元素的使用 6.1.3数组的复制 6.1.4作为函数参数的一维数组 6.1.5数组元素的排序和查找 6.2使用一维数组的常用数据结构 6.2.1散列表 6.2.2栈 6.2.3队 6.3字符串和字符数组 6.3.1字符串 6.3.2字符数组 6.4常用的标准字符串函数 6.4.1字符串输出函数 6.4.2字符串输入函数 6.4.3字符串复制和追加函数 6.4.4字符串比较函数 6.4.5字符串检查函数 6.4.6字符串扫描函数sscanf() 6.5二维数组 6.5.1二维数组的定义 6.5.2二维数组元素的引用 6.5.3二维数组元素的遍历 6.5.4二维数组元素的排列方式 6.5.5作为参数的二维数组 习题 第7章指针初步 7.1地址与指针 7.2指针变量 7.2.1指针变量的定义和赋值 7.2.2通过指针访问数据 7.2.3作为函数参数的指针 7.2.4返回指针的函数 7.3指针运算 7.3.1指针与整数的加减 7.3.2指针相减 7.3.3指针的比较 7.3.4指针的强制类型转换和void* 7.3.5不合法的指针运算 7.3.6指针类型与数组类型的差异 7.4指针与数组 7.5指向二维数组的指针 7.6多重指针 7.7指针数组 7.7.1一维指针数组 7.7.2命令行参数 7.8函数指针 7.8.1函数指针变量的定义 7.8.2具有函数指针参数的库函数 习题 第8章程序设计的基本方法 8.1程序设计的基本过程 8.2问题分析 8.2.1程序功能和输入/输出数据 8.2.2对程序性能的要求 8.2.3程序中的错误处理 8.2.4程序的测试 8.2.5问题分析的结果 8.3方案设计 8.3.1解题思路 8.3.2算法的描述 8.3.3数据结构和算法的选择 8.4编码:从算法到代码 8.4.1代码的结构 8.4.2代码的检查 8.4.3代码中的注释 8.5程序的调试 8.5.1调试的基本方法 8.5.2调试工具的基本功能和使用 8.5.3标准输入/输出的重新定向 习题 第9章结构和联合 9.1结构(struct) 9.1.1结构类型的定义 9.1.2结构成员的访问 9.1.3包含结构的结构 9.2联合(union) 9.2.1联合类型的定义 9.2.2联合成员的访问 9.3类型定义(typedef)语句 9.4复杂类型的解读 习题 第10章输入/输出和文件 10.1输入/输出的基本过程和文件类型 10.2文件的打开、创建和关闭 10.3文件数据的正文格式读写 10.4读写操作中的定位 10.5文件数据的二进制格式读写 习题 附录A不同版本的C语言标准之间的主要区别 附录Bvi/vim的常用命令 附录C使用MSVC++6.0IDE创建C程序的基本过程 附录Dcc/gcc的常用命令行选项 附录E常用的标准库函数名及其头文件 附录FASCII编码 附录G调试工具GDB的常用命令 参考文献和推荐书目

编辑推荐

《C程序设计导引》特别适合作为计算机和非计算机专业学生学习高级语言程序设计的教材,也可供计算机等级考试者和其他各类学习者使用参考。


 C程序设计导引下载



发布书评

 
 


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024