C语言作业及参考答案

输出数据 按学号升序排列的学生数据 输入示例 1103 78 1105 79 1107 95 1109 88 0 0 1102 67 1104 85 1108 93 1124 79 1136 86 0 0 1102 67 1103 78 1104 85 1105 79 输出示例 1107 95 1108 93 1109 88 1124 79 1136 86 标题 描述 10.6集合的差 有两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同学号的那些结点。 输入数据 两个链表数据,每个链表以学号为0表示数据输入结束 输出数据 表示集合差的学生数据 1102 zhansan 1105 lisi 1107 wangwu 0 0 输入示例 1102 zhangsan 1104 dongsi 1107 wangwu 0 0 输出示例 1105 lisi 标题 描述 输入数据 10.7 链表删除 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中结点的年龄等于此年龄,则将此结点删去。 一个链表数据,以学号为0表示数据输入结束 一个表示年龄的整数 输出数据 链表剩下结点的数据,每个结点用格式“%dsM,\\n”输出 101 hkhf m 25 102 yuiou f 24 106 l;l;l m 25 输入示例 103 wriju m 23 0 0 0 0 25 输出示例 102 yuiou 24 f 103 wriju 23 m 标题 描述 10.8 链表就地逆置 将一个链表按逆序排列,即将链头当链尾,把链尾当链头。 链表结点数据包括学号、姓名 输入数据 先输入结点个数,再输入每个结点的数据 输出数据 逆序输出链表中的结点,每个结点用格式“%ds\\n”输出 6 1102 zhansan 1105 lisi 输入示例 1107 wangwu 1109 dongdong 1125 dongsi 1137 xixi 1137 xixi 1125 dongsi 1109 dongdong 输出示例 1107 wangwu 1105 lisi 1102 zhansan 标题 描述 10.9 报数 n个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到3者推出圈子。找出最后留在圈子中的人原来的序号。 输入数据 一个整数n 输出数据 一个整数 输入示例 7 输出示例 4 书面作业: 1.写一个函数库,计算两个复数的加减乘除运算。在主函数调用这些函数 求一个字符串的长度。在main函数中输入字符串,并输出其长度。

2*.定义一个结构体,包含hour、minute、second,在屏幕上模拟时钟。时钟显示形式为hh:mm:ss.

3.定义一个结构体,包含3个成员:day、month、year。

(1)写一个函数,将读入的日期赋值给结构体类型数据 (2)写一个函数验证输入日期是否合法

(3)写一个函数用以下格式输出日期:April 25,2002 在主函数中调用以上函数。

4*.模拟升级游戏发牌。把含大小王的54张牌随机发给4家(用E、S、W、N表示),每家12张,留6张底牌。(提示,为实现真正的随机,设置srand((unsigned)time(NULL));) #include

void srand(unsigned int seed);

设置新的伪随机数序列的种子为seed。种子的初值为1。 int rand(void);

产生一个0到RAND_MAX之间的伪随机整数。RAND_MAX值至少为32767。

第4题图

5.定义一个用于描述旅馆的结构体,包括以下成员:名称、地址、级别、房价、房间数。编写程序,显示给定级别的旅馆(按房价排序),显示房价小于给定数目的旅馆。

6. 取小球。一个袋子中有红、黄、白3种小球若干,依次从袋子中拿出3个小球,请输出所有的拿法。要求:

(1)必须用枚举类型实现

(2)所有拿法输出在屏幕上显示,一行输出一种拿法。

位运算

上机作业: 标题 描述 11.1 右移 编写一程序,检查一下你所用的计算机系统的C编译在执行右移时是按照逻辑位移的原则,还是按算术位移的原则?如果是逻辑右移,请编一函数实现算术右移?如果是算术右移,请编一函数以实现逻辑右移。 输入数据 一个十六进制整数和一个十进制整数 输出数据 第一行输出logical(逻辑位移)或arithmetic(算术右移) 第二行输出对应的移位结果(十六进制整数) 输入示例 输出示例 f8765432 标题 描述 11.2 补码 利用位运算,输入一个十六进制数,得到该数的补码。 输入数据 一个十六进制整数 输出数据 一个十六进制整数 输入示例 输出示例 789abcdf 书面作业: 1.编写一个函数getbits,从一个16位的单元中去取出某几位(即该几位保留原值,其余位为0)。函数调用形式为getbits(value,n1,n2).

Value为该16位(两个字节)中的数据值,n1为欲取出的起始位,n2为欲取出的结束位。例如:Getbits(0101675,5,8)表示对八进制101675这个数,取出它的从左面起第5位到第8位。

2.编写一函数用来实现左右循环移位。函数名为move,调用方法为 move(unsigned value,n)

其中value为要循环位移的数,n为位移的位数。例如,n<0表示为左移;n>0为右移。 n=4表示要右移4位;n=-3表示要左移3位。

文件

上机作业:

1.有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud.txt”中。

2. 将题13.6“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu_sort”中。

3. 将题13.7已排序的学生成绩文件进行插入处理。插入一个学生的3门课程成绩,程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。

4.16×16点阵的汉字字模存放在文件hzk2.dat中。输入区位码,显示相应的汉字的字模。(进一步,输入区码,输出一个区的汉字字模)。

5.编写一个程序,比较二个文件,如果相等则返回1,否则返回0

书面作业:

1.从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以‘!’结束。

2.有两个磁盘文件“A”和“B”,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件”C”中去。

3.有一磁盘文件“employee.txt”,内存放职工的数据。每个职工的数据包括职工的姓名,职工号、性别、年龄、住址、工资、健康状况、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文件。 one 43105 m 54 beijing 8769.5 healthiness collegial two 57803 f 23 nanjing 3421.6 healthness doctor qwerty 67432 m 60 hunan 5678.4 Sub-health junior-college asdfg 48902 m 32 beijing 6741.2 healthiness doctor zxcv 23456 f 37 hebei 45321.8 sickness collegial

4.读入题3的“职工工资文件”,存入二进制文件 “employee.dat”中 5.从“employee.dat”文件中读入数据,输出年龄和平均工资

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4