关注公众号 程序员成长指南
在里面回复 谭浩强答案
获取完整版答案
有问题也可以公众号后台私信我.

09 2020 档案

摘要:建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去 #include <stdio.h> #include <stdio.h> typedef struct student { int num; char sex[10]; cha 阅读全文
posted @ 2020-09-08 11:02 赵一凡177 阅读(3016) 评论(0) 推荐(0)
摘要:有两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同学号的那些结点 解题思路: 对于b链表中的每一个节点,都从a链表的表头开始查找,如果可以找到,直接删除,如果找不到,继续从a链表表头找下一个b的节点。 #include <stdio.h> typedef struct stud 阅读全文
posted @ 2020-09-08 11:01 赵一凡177 阅读(417) 评论(0) 推荐(0)
摘要:已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并, 按学号升序排列 解题思路: 首先合并两个链表,然后采用选择排序,给合并之后的链表进行排序。 #include <stdio.h> typedef struct student { int num; double grade; 阅读全文
posted @ 2020-09-08 11:00 赵一凡177 阅读(940) 评论(0) 推荐(0)
摘要:综合本章例9.9(建立链表的函数creat)、例9.10(输出链表的函数print)和本章习题第7题(删除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数,先后调用这些函数。用以上5个函数组成一个程序,实现链表的建立、输出、删除和插入,在主函数中指定需要删除和插人的结 阅读全文
posted @ 2020-09-08 10:59 赵一凡177 阅读(781) 评论(0) 推荐(0)
摘要:写一个函数insert,用来向一个动态链表插入结点 #include <stdio.h> #include <stdlib.h> typedef struct LNode { int num; struct LNode *next; } LNode; void insert(int n, LNode 阅读全文
posted @ 2020-09-08 10:58 赵一凡177 阅读(636) 评论(0) 推荐(0)
摘要:在第9章例9.9和例9.10的基础上,写一个函数del,用来删除动态链表中指定的节点 解题思路: 首先创建一个带头的单链表,然后让用户输入需要删除的节点,调用del函数,找到需要删除的节点,把待删除节点的前驱和后继重新链接。 #include <stdio.h> #include <stdlib.h 阅读全文
posted @ 2020-09-08 10:56 赵一凡177 阅读(296) 评论(0) 推荐(0)
摘要:13个人围成一圈,从第1个人开始顺序报号1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现 解题思路: 创建一个环形链表,给链表中的每一个节点从1~13编号,然后开始淘汰过程,对于淘汰的节点,序号置为0,淘汰完成之后,找到序号不为0的即为最后留下的。 #include 阅读全文
posted @ 2020-09-08 10:55 赵一凡177 阅读(572) 评论(0) 推荐(0)
摘要:有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输人10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数) #include <stdio.h> #define NAMLEN 20 #define STUCNT 10 typed 阅读全文
posted @ 2020-09-08 10:54 赵一凡177 阅读(1528) 评论(0) 推荐(0)
摘要:在第3题的基础上,编写一个函数input,用来输人5个学生的数据记录 #include <stdio.h> #define NAMLEN 20 //定义一个student结构体数组,包含5个元素 struct student_t{ int num; char name[NAMLEN]; int sc 阅读全文
posted @ 2020-09-08 10:51 赵一凡177 阅读(433) 评论(0) 推荐(0)
摘要:编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输人这些记录,用print函数输出这些记录 #include <stdio.h> #define NAMLEN 20 //定义一个student结构体数组,包含5个元 阅读全文
posted @ 2020-09-08 10:50 赵一凡177 阅读(656) 评论(0) 推荐(0)
摘要:写一个函数days,实现第1 题的计算。由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出 #include <stdio.h> struct Date{ int year; int month; int day; }; int Days(struct Date date) { s 阅读全文
posted @ 2020-09-08 10:49 赵一凡177 阅读(570) 评论(0) 推荐(0)
摘要:定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题 解题思路: 用一个日期数组保存每一月的天数,二月的天数记为28天,后面根据输入的时间确定是否是闰年的二月,如果是,天数在加1。 #include <stdio.h> struct Date{ int year; int m 阅读全文
posted @ 2020-09-08 10:48 赵一凡177 阅读(977) 评论(0) 推荐(0)
摘要:用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。 解题思路: 指向指针的指针其实就是二级指针,使用二级指针的保存一级指针的地址,让这个一级指针指向具体的数据空间。排序就是按照每个元素指针指向空间中的数据进行比对排序即可。 答案: # 阅读全文
posted @ 2020-09-08 10:28 赵一凡177 阅读(1668) 评论(0) 推荐(0)
摘要:用指向指针的指针的方法对5个字符串排序并输出 **解题思路:**指向指针的指针其实就是二级指针,使用二级指针的保存一级指针的地址,让这个一级指针指向具体的数据空间; 定义一个字符串指针数组包含5个元素,每个元素可以保存一个字符串的首地址,而这个地址指向的是具体的字符串数据空间,通过指针访问实现对指向 阅读全文
posted @ 2020-09-08 10:27 赵一凡177 阅读(846) 评论(0) 推荐(0)
摘要:(1) 编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。(2)写一函数free,将前面用new函数占用的空间释放。free(p)表示将p(地址)指向的单元以后的内存段释放。 解题思路: 封装malloc函数 阅读全文
posted @ 2020-09-08 10:25 赵一凡177 阅读(885) 评论(0) 推荐(0)
摘要:编一程序,输入月份号,输出该月的英文月名。例如,输人3,则输出"March" ,要求用指针数组处理 解题思路: 首先定义字符串指针数字,数组中每一个元素都存放一个字符串指针,每个指针指向不同字符串的位置。则输入月份数字后,根据下标获取对应月份字符串的地址即可 答案: #include<stdio.h 阅读全文
posted @ 2020-09-08 10:23 赵一凡177 阅读(1908) 评论(0) 推荐(0)
摘要:写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2。要求当s1=s2时,返回值为0;若s1≠s2,返回它们二者第1个不同字符的ASCII码差值(如"BOY"与"BAD" 阅读全文
posted @ 2020-09-05 12:31 赵一凡177 阅读(1697) 评论(0) 推荐(0)
摘要:输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? ,302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a1[1].....统计共有多少个整数,并输出这些数 解题思路: 遇到数字字符,则开始统计连续数字字符的个数,统 阅读全文
posted @ 2020-09-05 12:30 赵一凡177 阅读(1160) 评论(0) 推荐(0)
摘要:有一个班4个学生,5门课程。 ①求第1门课程的平均分; ②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩; ③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。 分别编3个函数实现以上3个要求。 解题思路: 4个学生,5门课程就是一个4x5的二维数组, 求第一门课的平 阅读全文
posted @ 2020-09-05 12:29 赵一凡177 阅读(2327) 评论(0) 推荐(0)
摘要:将n个数按输入时顺序的逆序排列,用函数实现 解题思路: 定义两个指针,一个指向数组头部,一个指向数组尾部,头部每次+1,尾部每次-1;则在头部小于尾部的情况下进行数据交换即可。 答案: #include<stdio.h> #include<math.h> void reorder(int *arry 阅读全文
posted @ 2020-09-05 12:27 赵一凡177 阅读(1563) 评论(0) 推荐(0)
摘要:写一个用矩形法求定积分的通用函数,分别求$\int_01 sinxdx, \quad \int_01 cosxdx, \quad \int_01 exdx,$ ,说明: sin,cos,exp 函数已在系统的数学函数库中,程序开头要用#include <math. h> 解题思路: 矩形法,学过高等 阅读全文
posted @ 2020-09-05 12:24 赵一凡177 阅读(935) 评论(0) 推荐(0)
摘要:用指针数组处理上一题目,字符串不等长 解题思路: 与数字的比较没什么区别,只不过需要采用strcmp进行字符串的大小比较,使用指针实现需要在最早接收数据的时候就采用字符串指针数组,这样的好处在于指针的指向可以直接通过赋值进行改变,而指针数组中的字符串的顺序只需要交换不同字符串的地址就可以实现 答案: 阅读全文
posted @ 2020-09-05 12:23 赵一凡177 阅读(229) 评论(0) 推荐(0)
摘要:在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串 解题思路: 排序方式与数字比较没什么不同,先遍历比较找出最大的字符串,与第一个字符串进行交换,然后剩下的进行比较找出最大的字符串与第二个交换.... 需要主机的就是字符串的比较采用strcmp接口,返回 阅读全文
posted @ 2020-09-05 12:22 赵一凡177 阅读(983) 评论(0) 推荐(0)
摘要:将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。 解题思路: 将二维数组当做一维数组进行处理比较方便,而二维数组本身就是扁平化存储,所以直接使用首地址即可。 先遍历找到最大值,将其与中间数字交换,而中 阅读全文
posted @ 2020-09-05 12:20 赵一凡177 阅读(855) 评论(0) 推荐(0)
摘要:写一函数,将一个3x3的整型矩阵转置 解题思路: 矩阵转置就是行变列,列变行,说白了就是 arry[i][j] 转换为 arry[j][i] ; 但是需要注意的是, 一. 因为行列个数可能并非相同,转换后行数或者列数变多了或者变少,因此不能直接转换。需要重新申请空间存储转换后的数据。 二. 二维数组 阅读全文
posted @ 2020-09-02 18:18 赵一凡177 阅读(1849) 评论(0) 推荐(0)
摘要:输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少 解题思路: 字符可以直接进行比较,但是要注意字符串中的数字是字符数字,必须以字符的形式比较,也就是加上单引号 答案: #include <stdio.h> #include <string.h> int main() { ch 阅读全文
posted @ 2020-09-02 18:17 赵一凡177 阅读(899) 评论(0) 推荐(0)
摘要:有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 解题思路: 当字符串指针移动到源字符串的第m位时,则开始向另一个缓冲区中写入剩下的数据 答案: #include <stdio.h> #include <string.h> int main() { ch 阅读全文
posted @ 2020-09-02 18:16 赵一凡177 阅读(3602) 评论(0) 推荐(0)
摘要:写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度 解题思路: 字符串以\0作为结尾,则从第一个字符开始向后移动遇到\0认为字符串结束。 答案: #include <stdio.h> int mystrlen(char *str) { int len = 0; char *ptr 阅读全文
posted @ 2020-09-02 18:15 赵一凡177 阅读(1449) 评论(0) 推荐(0)
摘要:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 解题思路: 从第一个人开始,逐个报数,谁报3就退出,并且重置报数,直到最后一个人后,又重新从第一个人继续报数,直到最终只剩一个人的时候退出即可。 答案: #include <stdi 阅读全文
posted @ 2020-09-02 18:14 赵一凡177 阅读(3292) 评论(0) 推荐(0)
摘要:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图8.43。 写一函数实现以上功能,在主函数中输人n个整数和输出调整后的n个数 解题思路: 找出倒数第m个数据,从这里开始保存倒数第m位置的数据,因为倒数第m位置的数据要放到数组最前方,将m之前的数据向后偏移一位,然后将数组第一 阅读全文
posted @ 2020-09-02 18:13 赵一凡177 阅读(1207) 评论(0) 推荐(0)
摘要:输入10个整数,将其中最小的数与第一个数对换, 把最大的数与最后一个数对换 写3个函数: ①输人10个数; ②进行处理; ③输出10个数。 解题思路: 在进行数值逐个比较的同时找到最小值的空间地址以及最大值的空间地址,使用这两个空间中的数据最终与第一和最后数据进行对换即可。 答案: #include 阅读全文
posted @ 2020-09-02 18:11 赵一凡177 阅读(3620) 评论(0) 推荐(0)
摘要:输入3个字符串,要求按由小到大的顺序输出 解题思路: 字符串的比较可以使用strcmp函数,返回值>0表示大于,返回值小于0表示小于,返回追等于0表示相同。其他的比较排序思路与数字的排序交换没有区别,逐个进行比较先找出最大的,然后找出第二大的。 答案: #include <stdio.h> int 阅读全文
posted @ 2020-09-02 15:07 赵一凡177 阅读(827) 评论(0) 推荐(0)
摘要:输入3个整数,要求按由小到大的顺序输出 解题思路: 先获取到三个变量的地址,然后获取三个数据,通过指针进行比较转换即可 答案: #include <stdio.h> void swap(int *p_a, int *p_b) { int temp = *p_a; *p_a = *p_b; *p_b 阅读全文
posted @ 2020-09-02 14:59 赵一凡177 阅读(2246) 评论(0) 推荐(0)
摘要:给出年、月、日,计算该日是该年的第几天 题目解析: 此题采用枚举法进行每月天数的累加,其中关键点注意需要判断年份是否为闰年,如果是还需要多累加1天。 代码示例: #include <stdio.h> #include<stdio.h> /* 函数sum_day:计算日期 */ int sum_day 阅读全文
posted @ 2020-09-02 14:57 赵一凡177 阅读(297) 评论(0) 推荐(0)
摘要:用递归法将一个整数n转换成字符串。例如,输人483,应输出字符串”483”。n的位数不确定,可以是任意位数的整数 题目解析: 递归法求解主要要有结束条件,此题为n/10 == 0时就直接输出,其次本题还要考虑如果整数位负数的情形,此时需要输出一个字符串的负号。 #include<stdio.h> v 阅读全文
posted @ 2020-09-02 14:56 赵一凡177 阅读(1071) 评论(0) 推荐(0)
摘要:写一个函数,输人一个十六进制数,输出相应的十进制数 题目解析: 转换的过程需要乘的基数为16,其次注意十六进制中的a~f的字母转换,并且无论大小写都要能够转换。 代码示例: #include<stdio.h> size_t HextoDec(char s[]) { size_t i, n; n = 阅读全文
posted @ 2020-09-02 14:55 赵一凡177 阅读(748) 评论(0) 推荐(0)