2016C语言习题全集及答案:附加题05
附加题
建立两个链表,来表示x幂的两个多项式,链表中的结点有三个字段coef、exp和next,分别表示多项式每项的系数、x的指数及指向下一项的指针。编一程序,按x的降幂输入多项式的系数和指数,建立两个链表,然后编一函数来完成把两个多项式的链表叠加到第三个链表中。例如:
第一个多项式为: -4x8 +5x6 +3x4 -4x的链表为:
-4 8 5 6 3 4 -4 1
第二个多项式为: 5x9 -5x8 -3x4 +7x的链表为:
5 9 -9 8 5 6 3 1
结果的多项式为: 5x9 -9x8 +5x6 +3x
5 9 -9 8 5 6 3 1
编程把链表(1)变成链表(2)。
head
(1) data next data next data next
记录1 记录2 记录3
data next data next
记录4 记录5
head
(2) data next data next data next
记录1 记录2 记录3
data next data next
记录4 记录5
把下面(1)、(2)两个有序链表合并为一个链表(3),合并之后链表仍有序。
(1) first 10 30 90
(2) second 45 100
(3) first
10 30 45 90 100
填写n阶(n>2)纵横图(纵横图又称魔方阵、幻方)。
纵横图是指这样一种方阵,它的每一行和每一列以及两个对角线上的每一元素之和都是相等的。最普通的纵横图由 1到n2个自然数构成。沿每行、每列及对角线的各数之和为 1/2×n(n2+1),称为纵横图常数。
例如:3×3的纵横图如下图所示,它的每行、每列及对角线各数之和为1/2×3×(9+1)=15。一个 n阶纵横图便是一个n×n的矩阵。每个格中放一个数,共可放n2个数,请你把整数 1到整数n2分别放入各格中,且使每行的和、每列的和以及两个对角线上的和均相等。
(一)填写方法分析:
1)奇阶纵横图
举个最简单的例子(3阶纵横图的填法)。 画一正方形,把它分为九个格,按左下图的样子依斜线方向将1~9各数顺序填入图内。正方形外的数字填到图内与它相反的那面(仍在原行),结果得到右下图的正方形。
3
2 7 6 9 5 1 4 3 8 2 6
1 5 9
4 8
7
当n为奇数,n阶方阵共有n2个数,排序为1、2、…、n2。按数的排序依次填入 n阶方阵中每个空格。以下图的5阶方阵为例:
11 10 4 23 17 18 12 6 5 24 25 19 13 7 1 2 21 20 14 8 9 3 22 16 15填法如下:
⑴先将1填在行、列位置为((n+1)/2,n),即1填在((5+1)/2,5)
=(3,5)的3行、5列位置上;
⑵继续在该位置所在的对角线上(斜线)上,由左上往右下依次填;
⑶若列出界,则当前行加1,以n为模的余数为应填的列数。
⑷若行出界, 则当前行加1,以n为模的余数为应填的行数。
⑸若应填的位置上行、列并未出界,却已填上它数,应在当前位置左横移一个
此篇博客介绍了如何使用C语言编写程序,通过链表结构表示和操作多项式,并展示了如何合并两个有序链表以及填充n阶纵横图(魔方阵)。涉及链表的创建、合并和多项式运算,同时包含数学和编程技巧的应用。
283

被折叠的 条评论
为什么被折叠?



