随笔分类 - c语言程序设计第五版谭浩强课后答案
摘要:用指针数组处理上一题目,字符串不等长 解题思路: 与数字的比较没什么区别,只不过需要采用strcmp进行字符串的大小比较,使用指针实现需要在最早接收数据的时候就采用字符串指针数组,这样的好处在于指针的指向可以直接通过赋值进行改变,而指针数组中的字符串的顺序只需要交换不同字符串的地址就可以实现 答案:
阅读全文
摘要:在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串 解题思路: 排序方式与数字比较没什么不同,先遍历比较找出最大的字符串,与第一个字符串进行交换,然后剩下的进行比较找出最大的字符串与第二个交换.... 需要主机的就是字符串的比较采用strcmp接口,返回
阅读全文
摘要:写一函数,将一个3x3的整型矩阵转置 解题思路: 矩阵转置就是行变列,列变行,说白了就是 arry[i][j] 转换为 arry[j][i] ; 但是需要注意的是, 一. 因为行列个数可能并非相同,转换后行数或者列数变多了或者变少,因此不能直接转换。需要重新申请空间存储转换后的数据。 二. 二维数组
阅读全文
摘要:输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少 解题思路: 字符可以直接进行比较,但是要注意字符串中的数字是字符数字,必须以字符的形式比较,也就是加上单引号 答案: #include <stdio.h> #include <string.h> int main() { ch
阅读全文
摘要:有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 解题思路: 当字符串指针移动到源字符串的第m位时,则开始向另一个缓冲区中写入剩下的数据 答案: #include <stdio.h> #include <string.h> int main() { ch
阅读全文
摘要:写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度 解题思路: 字符串以\0作为结尾,则从第一个字符开始向后移动遇到\0认为字符串结束。 答案: #include <stdio.h> int mystrlen(char *str) { int len = 0; char *ptr
阅读全文
摘要:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 解题思路: 从第一个人开始,逐个报数,谁报3就退出,并且重置报数,直到最后一个人后,又重新从第一个人继续报数,直到最终只剩一个人的时候退出即可。 答案: #include <stdi
阅读全文
摘要:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图8.43。 写一函数实现以上功能,在主函数中输人n个整数和输出调整后的n个数 解题思路: 找出倒数第m个数据,从这里开始保存倒数第m位置的数据,因为倒数第m位置的数据要放到数组最前方,将m之前的数据向后偏移一位,然后将数组第一
阅读全文
摘要:输入10个整数,将其中最小的数与第一个数对换, 把最大的数与最后一个数对换 写3个函数: ①输人10个数; ②进行处理; ③输出10个数。 解题思路: 在进行数值逐个比较的同时找到最小值的空间地址以及最大值的空间地址,使用这两个空间中的数据最终与第一和最后数据进行对换即可。 答案: #include
阅读全文
摘要:输入3个字符串,要求按由小到大的顺序输出 解题思路: 字符串的比较可以使用strcmp函数,返回值>0表示大于,返回值小于0表示小于,返回追等于0表示相同。其他的比较排序思路与数字的排序交换没有区别,逐个进行比较先找出最大的,然后找出第二大的。 答案: #include <stdio.h> int
阅读全文
摘要:输入3个整数,要求按由小到大的顺序输出 解题思路: 先获取到三个变量的地址,然后获取三个数据,通过指针进行比较转换即可 答案: #include <stdio.h> void swap(int *p_a, int *p_b) { int temp = *p_a; *p_a = *p_b; *p_b
阅读全文
摘要:给出年、月、日,计算该日是该年的第几天 题目解析: 此题采用枚举法进行每月天数的累加,其中关键点注意需要判断年份是否为闰年,如果是还需要多累加1天。 代码示例: #include <stdio.h> #include<stdio.h> /* 函数sum_day:计算日期 */ int sum_day
阅读全文
摘要:用递归法将一个整数n转换成字符串。例如,输人483,应输出字符串”483”。n的位数不确定,可以是任意位数的整数 题目解析: 递归法求解主要要有结束条件,此题为n/10 == 0时就直接输出,其次本题还要考虑如果整数位负数的情形,此时需要输出一个字符串的负号。 #include<stdio.h> v
阅读全文
摘要:写一个函数,输人一个十六进制数,输出相应的十进制数 题目解析: 转换的过程需要乘的基数为16,其次注意十六进制中的a~f的字母转换,并且无论大小写都要能够转换。 代码示例: #include<stdio.h> size_t HextoDec(char s[]) { size_t i, n; n =
阅读全文
摘要:输人10个学生5门课的成绩,分别用函数实现下列功能: ①计算每个学生的平均分; ②计算每门课的平均分; ③找出所有50个分数中最高的分数所对应的学生和课程; ④计算平均分方差: 其中,x;为某一学生的平均分。 题目解析: 此题的关键是如何存储某个学生对应某门课程的分数,这里利用了一个二维数组scor
阅读全文
摘要:用递归方法求n阶勒让德多项式的值,递归公式为 题目解析: 递归函数的设计,有一个点非常重要,那就是必须要有返回条件,,此题中的返回条件即为n0和n1时,因为当n为这两值时,程序直接返回相应的值,只有n>=1时,才进行递归运算。 代码示例: #include<stdio.h> double polya
阅读全文
摘要:用牛顿迭代法求根。方程为$ax3+bx2 +cx+d=0$,系数a,b,c,d的值依次为1,2,3,4,由主函数输人。求x在1附近的一个实根。求出根后由主函数输出 题目解析: 此题的难点并不是编程,主要是要理解数学公式的求解方法,理解之后代码的实现并不困难。 代码示例: #include<stdio
阅读全文
摘要:写一个函数,用“起泡法”对输人的10个字符按由小到大顺序排列 题目解析: 该题主要是对冒泡排序的理解,外层循环控制排序的趟数,内层循环主要是进行每一趟排序的比较,如果前面的字符大于后面的字符,就进行交换,每做一趟排序,就把一个最大字符排在最后,以及每做一趟排序就需要少比较一个字符。 代码示例: #i
阅读全文
摘要:写一个函数,输人一行字符,将此字符串中最长的单词输出 题目解析: 单词以空格进行分隔,因此寻找空格出现的位置即为关键,每次从单词的起始到空格出现的位置即为一个单词,此时计算单词的长度,如果比当前最大的还长,就进行跟新最长单词信息,当整个字符串遍历完成,word即保存最长字符串。 代码示例: #inc
阅读全文
摘要:编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输人字符串以及输出上述的结果 题目解析: 该题的关键在于要能够写出各种字符统计的条件 代码示例: #include<stdio.h> int letter, digit, space, others; vo
阅读全文

浙公网安备 33010602011771号