本书提供了《C程序设计》(谭浩强第三版)教材中全部习题的答案和解析,旨在帮助学习者加深对C语言的理解与掌握。
第1章 位运算
编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。函数调用形式如下:
```c
int getbits(int x, int p, int n);
```
其中x是原始数据,p表示开始位置,n表示要取多少位。
编写一个函数来对一个16位的二进制数取出它的奇位数(即从左边起第1、3、5……15位)。
编一程序检查计算机系统的C编译器在执行右移时是按照逻辑位移的原则,还是算术右移。如果是逻辑右移,请编写一个函数实现算术右移;如果是算术右移,请编写一个函数实现逻辑右移。
编写一个名为move的函数用来实现左右循环位移。调用方法如下:
```c
int move(int value, int n);
```
其中value为要循环位移的数,n表示位移的位数。如n<0时为左移;n>0时为右移。
例如:当n=4时,表示需要向右移动四位;若n=-3,则需向左移动三位。
第2章 文件操作
从键盘输入一个字符串,并将其中的小写字母全部转换成大写字母后输出到磁盘文件“test”中保存。输入的字符串以!结束。
有两个磁盘文件“A”和“B”,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),然后输出到一个新文件C中。
有5个学生,每个学生有3门课的成绩,从键盘输入上述数据(包括学号、姓名及三门课程成绩)。计算出平均分后将原有数据和计算的平均分数存入磁盘文件stud中。之后执行插入操作:在已排序的学生成绩文件基础上加入一个学生的成绩,并按新的平均值重新排列。
对上题结果,不建立新文件而直接保存到原有的stu_sort文件内。
有一磁盘文件名为emploee,存放职工数据(包括姓名、编号、性别、年龄、住址及工资)。要求从该文件中提取出员工的名称和工资信息,并创建一个简明的职工工资记录文件。最后,在“职工工资”文档基础上删除一名员工的信息并保存回原文件。
以上编程任务需根据题目描述实现相关功能,确保程序能够正确处理输入输出、数据结构及算法逻辑等各个方面的要求。