随笔分类 - c程序设计第五版谭浩强课后习题答案
摘要:给出年、月、日,计算该日是该年的第几天 题目解析: 此题采用枚举法进行每月天数的累加,其中关键点注意需要判断年份是否为闰年,如果是还需要多累加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个职工的姓名和职工号;②按职工号由小到大顺序排序,姓名顺序也随之调整;③要求输人一个职工号,用折半查找法找出该职工的姓名,从主函数输人要查找的职工号,输出该职工姓名。 题目解析: 利用二分查找的关键在于数据一定要先有序,所以在查找前我们需要对数据进行排序。 代码示例: #inc
阅读全文
摘要:输人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> void cpy(char s[], char c[]) { int i, j; for (i = 0, j
阅读全文
摘要:写一个函数,使输人的一个字符串按反序存放,在主函数中输入和输出字符串 题目解析: 要把一个字符串反序存放,其实就是对字符串做一个逆序操作,操作过程为收尾字符交换,直到把所有字符全部交换完毕。 示例代码 #include<stdio.h> void ReverseString(char str[])
阅读全文
摘要:写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换 题目解析: 进行数组的行列互换,其关键在于数组互换的表达式 ar[i] [j] = ar[j] [i];其次在循环的时候,内层循环不能到达最大列,需要根据此时是第几行的交换来决定循环的次数,否则有可能数组行列交换之后最后又交换回原来的形状
阅读全文
摘要:写一个判素数的函数,在主函数输人一个整数,输出是否为素数的信息 题目解析: 素数是一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数 该题可以使用概念直接判断法求解,不过不需要判断所有的数据,只需要判断数据的一半即可,因为偶数不可能为素数(除了2),所以只需判断该数的一半即可的到
阅读全文
摘要:求方程 $ 题目解析 根据disc = \(b^2-4ac\) 的值来决定如何求根,题目本身编程不难,不过需要同学们复习一下高中的数学知识哦。 代码示例 #include<stdio.h> #include<math.h> //x1为第一个根,x2为第二个根 float x1, x2, disc,
阅读全文
摘要:写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输人 题目解析: 该题直接使用“辗转相除法”来求解最大公约数和最小公倍数 最大公约数找出两数中的最小值,然后直接相模,当能够同时被两数整除时,则为最大公约数。 最小公倍数找出两数中的最大值,然后直接
阅读全文
摘要:编一程序,将两个字符串连接起来,不要用strcat函数 【答案解析】 直接将s2中的字符逐个拷贝到s1的末尾即可,用户需要保证s1中能存的下s2中的字符 获取s1末尾的位置 将s2中的字符逐个拷贝到s1中 【代码实现】 #include<stdio.h> int main() { char s1[1
阅读全文
摘要:有一行电文,以按下面规律译成密码: A >Z a >z B >Y b >Y C >X c >x …… 即第1个字母编程第26个字母,第i个字母编程第(26-i+1)个字母,非字母字符不变,要求编程序将密码译回原文,并输出密码和原文。 【答案解析】 从题目给的实例中可以看到,编码规则非常简单,就是将从
阅读全文
摘要:有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出"无此数"。 【答案解析】 二分查找是一个非常高效简单的查找算法,笔试和面试中非常喜欢考察。 折半查找又叫二分查找,查找的前提是序列中元素必须有序,假设区间使用[left,
阅读全文
摘要:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点 【答案解析】 鞍点是行上最大,列上最小的元素,因此对数组的第i元素进行如下操作: 找到该行上最大元素,用max标记,并标记该元素所在列colindex 找colindex列上最小的元素,用min标记,并标记该元素所
阅读全文
摘要:输出"魔方阵"。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如: 8 1 6 3 5 7 4 9 2 要求输出1~$n^2$的自然数构成的魔方阵。 【答案解析】 | 17 | 24 | 1 | 8 | 15 | | 23 | 5 | 7 | 14 | 16 | | 4 | 6
阅读全文

浙公网安备 33010602011771号