超长正整数的加法
- 格式:doc
- 大小:33.50 KB
- 文档页数:5
整数的加减法运算整数的加减法运算是数学中最基础的运算方法之一。
在日常生活中,我们经常需要进行整数的加减运算,比如计算购物时的账单、统计人口增长或减少等。
本文将介绍整数的加减法运算,并提供一些例子来帮助读者更好地理解和掌握这些运算方法。
一、整数的加法运算整数的加法运算是指将两个整数相加得到一个新的整数的过程。
具体的加法规则如下:1. 两个正整数相加,结果仍为正整数。
例如:3 + 4 = 7、15 + 6 = 21。
2. 两个负整数相加,结果仍为负整数。
例如:-5 + (-3) = -8、-10 + (-7) = -17。
3. 正整数和负整数相加,结果的符号取决于绝对值较大的整数。
例如:5 + (-2) = 3、-8 + 4 = -4。
二、整数的减法运算整数的减法运算是指从一个整数中减去另一个整数,得到一个新的整数的过程。
具体的减法规则如下:1. 正整数减去正整数,结果的符号取决于两个整数的大小关系。
例如:7 - 3 = 4、15 - 6 = 9。
2. 负整数减去负整数,结果的符号取决于两个整数的大小关系。
例如:(-5) - (-3) = -2、(-10) - (-7) = -3。
3. 正整数减去负整数,可以转化为加法运算。
即,a - b = a + (-b)。
例如:5 - (-2) = 5 + 2 = 7、8 - (-4) = 8 + 4 = 12。
三、整数的加减法混合运算在实际应用中,常常会遇到整数的加减法混合运算,也就是在一个运算式中既有加法又有减法。
这时,我们需要根据运算符的优先级和结合性进行运算。
通常的规则是:1. 先进行括号内的运算。
2. 先乘除后加减。
3. 从左往右依次计算。
例如:2 + 3 - 4 + (-5) + 6 - (-7)的计算过程如下:2 +3 -4 + (-5) + 6 - (-7) (先括号内的运算)= 2 + 3 - 4 - 5 + 6 - 7 (再从左往右依次计算)= 5 - 4 - 5 + 6 - 7 (依次相加减)= 1 - 5 + 6 - 7= -4 + 6 - 7= 2 - 7= -5通过以上的混合运算例子,可以看到整数的加减法运算并不复杂,只需要根据规则进行相应的计算就可以了。
数学整数的加法和减法整数是数学中的基础概念之一,它包括正整数、负整数和零。
在数学运算中,整数的加法和减法是最基本的运算之一。
本文将从整数的加法和减法的定义、运算规则以及实际应用等方面进行详细介绍。
一、整数的加法整数的加法是指将两个整数相加得到另一个整数的过程。
整数的加法运算符号为 "+",两个整数的和称为它们的和数。
整数的加法运算有以下几种情况:1. 两个正整数相加:正整数与正整数相加的结果仍然为正整数。
例如,3 + 5 = 8。
2. 两个负整数相加:负整数与负整数相加的结果仍然为负整数。
例如,(-2) + (-4) = -6。
3. 正整数与负整数相加:正整数与负整数相加的结果可能为正整数、负整数或零,具体取决于它们的数值大小。
例如,3 + (-5) = -2。
4. 任何整数与零相加:任何一个整数与零相加的结果都等于它本身。
例如,7 + 0 = 7。
二、整数的减法整数的减法是指将一个整数减去另一个整数得到另一个整数的过程。
整数的减法运算符号为 "-",减法可以看作是加法的逆运算。
整数的减法运算有以下几种情况:1. 正整数减去正整数:如果被减数大于减数,则结果为正整数;如果被减数小于减数,则结果为负整数。
例如,8 - 3 = 5,9 - 11 = -2。
2. 负整数减去负整数:如果被减数大于减数,则结果为正整数;如果被减数小于减数,则结果为负整数。
例如,(-4) - (-6) = 2,(-5) - (-3)= -2。
3. 正整数减去负整数:正整数减去负整数的结果可能为正整数、负整数或零,具体取决于它们的数值大小。
例如,7 - (-3) = 10,5 - (-5) = 10,4 - (-4) = 8。
4. 任何整数减去零:任何一个整数减去零的结果都等于它本身。
例如,9 - 0 = 9。
三、整数的加法和减法的运算规则在进行整数的加法和减法运算时,需要遵守以下运算规则:1. 加法的交换律:对于任意两个整数a和b,a + b = b + a。
信息工程学院数据结构与C语言综合训练报告(2011~2012学年第二学期)报告题目:____超长正整数的加法________姓名:______李莉_______专业:信息管理与信息系统年级班级: ____112班________指导教师:__李宏利、张晶___完成日期:_2012年7月12日一、综合训练目的和要求本综合训练是计算机科学与技术、信息管理与信息系统、软件工程、电子商务专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》、《数据结构》课程后进行的一次全面的综合练习。
本课综合训练的目的和任务:1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言、数据结构解决实际问题的能力二、综合训练任务内容利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。
要求输入和输出每四位一组,组间用逗号隔开。
如:1,0000,0000,0000,0000。
提高要求:完成两个超长正整数的乘法。
三、总体设计函数调用关系图(如下)mainAdd() Output() Input() Change() Mul()Sum()函数的流程图(如下)Y NYNNY开始m=0操作说明 输入字符串a[] Input() n=N输入n 输入字符串b[] Input() n=N ’输入n Change(a) Change(b) 输入mMul()Add()四、详细设计说明主函数模块包括判断函数输入模式是否正确的模块,输入转换模块,数值计算模块和输出模块。
在主函数中首先调用函数Input (),然后调用到函数Change (),在Change ()函数中调用了函数Sum (),随后主函数中又根据操作者调用了函数Add ()或者函数Mul (),最后主函数调用了函数Output ()后程序结束。
整数的四则运算方法整数是数学中的一种基本数,它包括正整数、负整数和零。
四则运算是指加法、减法、乘法和除法这四种基本运算。
在进行整数的四则运算时,需要注意一些方法和规则,本文将详细介绍整数的四则运算方法。
一、整数的加法运算整数的加法是指将两个整数进行相加,得到它们的和。
整数的加法满足以下规则:1. 两个正整数相加,结果为正整数。
例如:3 + 5 = 82. 两个负整数相加,结果为负整数。
例如:-4 + (-7) = -113. 正整数和负整数相加,取绝对值较大的整数的符号作为结果的符号。
例如:7 + (-5) = 2,-5 + 7 = 24. 任何整数与零相加,结果为该整数本身。
例如:5 + 0 = 5,-3 + 0 = -3二、整数的减法运算整数的减法是指将一个整数减去另一个整数,得到它们之间的差。
整数的减法满足以下规则:1. 正整数减去正整数,结果为正整数或零。
例如:8 - 3 = 5,5 - 2 = 32. 负整数减去负整数,结果为负整数或零。
例如:-9 - (-4) = -5,-5 - (-5) = 03. 正整数减去负整数,取绝对值较大的整数的符号作为结果的符号。
例如:8 - (-3) = 11,5 - (-7) = 124. 任何整数减去零,结果为该整数本身。
例如:5 - 0 = 5,-3 - 0 = -3三、整数的乘法运算整数的乘法是指将两个整数进行相乘,得到它们的积。
整数的乘法满足以下规则:1. 两个正整数相乘,结果为正整数。
例如:3 × 5 = 152. 两个负整数相乘,结果为正整数。
例如:-4 × (-7) = 283. 正整数和负整数相乘,结果为负整数。
例如:7 × (-5) = -35,-5 × 7 = -354. 任何整数与零相乘,结果为零。
例如:5 × 0 = 0,-3 × 0 = 0四、整数的除法运算整数的除法是指将一个整数除以另一个整数,得到它们的商。
2011年计算机二级C语言编写程序题及答案解析精选【4.1】已知银行整存整取存款不同期限的月息利率分别为:0.315%期限一年0.330%期限二年月息利率=0.345%期限三年0.375%期限五年0.420%期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
【4.2】输入年份year和月month,求该月有多少天。
判断是否为闰年,可用如下C语言表达式:year%4==0&&year0!=0||year@0==0。
若表达式成立(即表达式值为1),则year 为闰年;否则,表达式不成立(即值为0),year为平年。
【4.3】编写一个简单计算器程序,输入格式为:data1op data2。
其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。
【4.4】输入n值,输出如图所示矩形。
【4.5】输入n值,输出如图所示平行四边形。
【4.6】输入n值,输出如图所示高为n的等腰三角形。
【4.7】输入n值,输出如图所示高为n的等腰三角形。
【4.8】输入n值,输出如图所示高和上底均为n的等腰梯形。
【4.9】输入n值,输出如图所示高和上底均为n的等腰空心梯形。
【4.10】输入n值,输出如图所示边长为n的空心正六边型。
【4.11】输入n值,输出如图所示图形。
【4.12】输入n值,输出如图所示图形。
【4.13】输入n值,输出如图所示图形。
【4.14】输入n值,输出如图所示图形。
【4.15】输入n值,输出如图所示图形。
【4.16】输入n值,输出如图所示图形。
(例为n=6时)【4.17】编写程序,输出如图所示sin(x)函数0到2π的图形。
【4.18】编写程序,在屏幕上输出一个由*号围成的空心圆。
【4.19】编写程序,在屏幕上绘制如图余弦曲线和直线。
若屏幕的横向为x轴,纵向为y 轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。
【4.1】已知银行整存整取存款不同期限的月息利率分别为:0.315% 期限一年0.330% 期限二年月息利率= 0.345% 期限三年0.375% 期限五年0.420% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
【4.2】输入年份year和月month,求该月有多少天。
判断是否为闰年,可用如下C语言表达式:year%4==0 && year 0!=0 || year@0==0。
若表达式成立(即表达式值为1),则year 为闰年;否则,表达式不成立(即值为0),year为平年。
【4.3】编写一个简单计算器程序,输入格式为:data1 op data2。
其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。
【4.4】输入n值,输出如图所示矩形。
【4.5】输入n值,输出如图所示平行四边形。
【4.6】输入n值,输出如图所示高为n的等腰三角形。
【4.7】输入n值,输出如图所示高为n的等腰三角形。
【4.8】输入n值,输出如图所示高和上底均为n的等腰梯形。
【4.9】输入n值,输出如图所示高和上底均为n的等腰空心梯形。
【4.10】输入n值,输出如图所示边长为n的空心正六边型。
【4.11】输入n值,输出如图所示图形。
【4.12】输入n值,输出如图所示图形。
【4.13】输入n值,输出如图所示图形。
【4.14】输入n值,输出如图所示图形。
【4.15】输入n值,输出如图所示图形。
【4.16】输入n值,输出如图所示图形。
(例为n=6时)【4.17】编写程序,输出如图所示sin(x) 函数0到2π的图形。
【4.18】编写程序,在屏幕上输出一个由*号围成的空心圆。
【4.19】编写程序,在屏幕上绘制如图余弦曲线和直线。
若屏幕的横向为x轴,纵向为y轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。
整数的加减法运算规则在数学中,整数是指不带小数的数,包括正整数、负整数和零。
整数的加减法是我们常见的基本运算之一,下面将介绍整数加减法运算的规则。
一、加法运算规则1. 同号整数相加:两个正整数相加,结果仍然是正整数;两个负整数相加,结果仍然是负整数。
如:2 + 3 = 5,(-2) + (-3) = (-5)。
2. 异号整数相加:一个正整数与一个负整数相加,结果的符号取绝对值较大的整数的符号。
如:2 + (-3) = (-1),(-2) + 3 = 1。
3. 加法交换律:整数加法的结果与加数的顺序无关。
即 a + b = b + a,其中 a 和 b 为任意整数。
如:2 + 3 = 3 + 2。
二、减法运算规则1. 正整数相减:大的正整数减去小的正整数,结果仍然是正整数。
如:5 - 2 = 3。
2. 负整数相减:负整数相减相当于加上相反数,即 a - b = a + (-b)。
如:(-5) - (-2) = (-5) + 2 = (-3)。
3. 正整数与负整数相减:正整数减去一个负整数,相当于加上这个负整数的相反数。
如:5 - (-3) = 5 + 3 = 8。
三、整数加减混合运算在整数的加减混合运算中,先按照加法规则进行同号整数的加法运算,再将异号整数相减。
如:5 + (-3) - 2 = (5 + (-3)) - 2 = 2 - 2 = 0。
四、加减法运算的计算顺序整数的加减法运算遵循数学中的计算顺序,即先乘除后加减,可以使用括号来改变计算顺序。
如:2 + 3 * 4 = 2 + (3 * 4) = 2 + 12 = 14。
五、加减法运算中的注意事项1. 需要特别注意减法中的负号问题。
如:(-2) - 3 ≠ -5,而是 (-2) - 3= (-2) + (-3) = (-5)。
2. 当整数加减法运算同时出现时,可以根据需要使用括号来改变运算顺序,确保运算结果的准确性。
总结:整数的加减法运算规则包括同号整数相加、异号整数相加、正整数相减、负整数相减、正负整数相减以及运算顺序等内容。
整数的加减运算整数加减运算是数学中最基本的运算之一,也是日常生活中经常遇到的运算类型。
在进行整数加减运算时,我们需要遵循一定的规则和方法,以确保计算的准确性和正确性。
一、整数的概念在数学中,整数是自然数、负整数和零的集合。
整数可以表示有向数量,可以用来表示负债、负温度等概念。
整数由正整数、负整数和零三部分组成,用符号表示为Z。
二、整数加法整数加法是指将两个整数相加的运算。
在进行整数加法时,有以下几种情况:1. 两个正整数相加:两个正整数相加的结果仍为正整数。
例如:3 +2 = 5。
2. 两个负整数相加:两个负整数相加的结果仍为负整数。
例如:(-3) + (-2) = -5。
3. 一个正整数与一个负整数相加:正整数加负整数的结果可能为正整数、负整数或零,取决于两个数的大小和符号。
例如:4 + (-2) = 2,1 + (-3) = -2,5 + (-5) = 0。
在进行整数加法时,可以使用竖式或计算器等工具进行计算。
计算时需要注意保持进位和对齐数字,以确保结果的准确性。
三、整数减法整数减法是指将一个整数减去另外一个整数的运算。
在进行整数减法时,有以下几种情况:1. 正整数减去正整数:正整数减去一个比它小的正整数的结果仍为正整数。
例如:5 - 2 = 3。
2. 负整数减去负整数:负整数减去一个比它大的负整数的结果仍为负整数。
例如:(-3) - (-2) = -1。
3. 正整数减去负整数:正整数减去一个负整数的结果可能为正整数、负整数或零,取决于两个数的大小和符号。
例如:4 - (-2) = 6,5 - (-5)= 10,3 - (-3) = 6。
在进行整数减法时,同样可以使用竖式或计算器等工具进行计算。
计算时需要注意借位和对齐数字,以确保结果的准确性。
四、整数加减混合运算在实际问题中,经常会遇到整数的加减混合运算,即同时进行加法和减法运算。
在进行整数加减混合运算时,可以根据计算优先级依次进行,先计算加法,再计算减法,最后得出结果。
整数的加减法掌握整数加减法的规则和运算技巧整数的加减法是数学中的基础运算之一,掌握整数的加减法规则和技巧对于学习数学以及解决实际问题非常重要。
在本文中,我们将详细介绍整数的加减法规则和一些简单而实用的运算技巧。
一、整数的加法规则整数的加法遵循以下规则:规则1:同号相加,取相同符号,数值相加。
例如,(-3) + (-5) = -8,(-10) + (-2) = -12。
规则2:异号相加,取绝对值较大的数的符号,数值取两数的差的绝对值。
例如,(-3) + 5 = 2,(-10) + 7 = -3。
二、整数的减法规则整数的减法遵循以下规则:规则1:减去一个整数等于加上它的相反数。
例如,8 - 5 = 8 + (-5) = 3,(-10) - (-2) = (-10) + 2 = -8。
规则2:减去一个整数等于加上它的相反数的相反数。
例如,8 - (-5) = 8 + 5 = 13,(-10) - 2 = (-10) + (-2) = -12。
三、整数加减法的运算技巧除了了解整数加减法的规则外,掌握一些运算技巧可以更快速地计算结果。
技巧1:绝对值法通过对整数的绝对值进行计算,再根据符号确定结果的正负。
例如,(-8) + (-3) = -(8 + 3) = -11。
技巧2:取消法利用整数的性质,将减法问题转化为加法问题,通过消去相同的数来简化运算。
例如,8 - 5 = 8 + (-5) = 3。
技巧3:移项法通过对等式两边同时加上或减去相同的数,可以改变等式的形式,简化运算。
例如,7 + x = 15,可以通过减去7得到x = 15 - 7 = 8。
技巧4:分段计算法将复杂的加减法问题分解成多个简单的加减法问题,分段计算后再合并结果。
例如,(2 + 3) + (6 - 4) = 5 + 2 = 7。
通过掌握这些运算技巧,可以在解决实际问题时更加灵活和高效地进行整数的加减法运算。
总结:本文详细介绍了整数的加减法规则和运算技巧。
1已知银行整存整取存款不同期限的月息利率分别为:0.315% 期限一年0.330% 期限二年月息利率=0.345% 期限三年0.375% 期限五年0.420% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
2输入年份year和月month,求该月有多少天。
判断是否为闰年,可用如下C语言表达式:year%4==0 && year%100!=0 || year%400==0。
若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。
3编写一个简单计算器程序,输入格式为:data1 op data2。
其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。
4输入n值,输出如图所示矩形。
5输入n值,输出如图所示平行四边形。
6输入n值,输出如图所示高为n的等腰三角形。
7输入n值,输出如图所示高为n的等腰三角形。
8输入n值,输出如图所示高和上底均为n的等腰梯形。
9输入n值,输出如图所示高和上底均为n的等腰空心梯形。
10输入n值,输出如图所示边长为n的空心正六边型。
11输入n值,输出如图所示图形。
12输入n值,输出如图所示图形。
13输入n值,输出如图所示图形。
14输入n值,输出如图所示图形。
15输入n值,输出如图所示图形。
16输入n值,输出如图所示图形。
(例为n=6时)17编写程序,输出如图所示sin(x) 函数0到2π的图形。
18编写程序,在屏幕上输出一个由*号围成的空心圆。
19编写程序,在屏幕上绘制如图余弦曲线和直线。
若屏幕的横向为x轴,纵向为y轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。
其中cos图形用"*"表示,f(y)用"+"表示,在两个图形的交点处则用f(y)图形的符号。
20编写程序,输出如图所示高度为n的图形。
超长正整数的加法请设计一个算法来完成两个超长正整数的加法。
*问题分析与算法设计首先要设计一种数据结构来表示一个超长的正整数,然后才能够设计算法。
首先我们采用一个带有表头结点的环形链来表示一个非负的超大整数,如果从低位开始为每个数字编号,则第一位到第四位、第五位到第八位...的每四位组成的数字,依次放在链表的第一个、第二个、...结点中,不足4位的最高位存放在链表的最后一个结点中,表头结点的值规定为-1。
例如:大整数“587890987654321”可用如下的带表头结点head的链表表示:按照此数据结构,可以从两个表头结点开始,顺序依次对应相加,求出所需要的进位后代入下面的运算。
具体的实现算法请见程序中的注释。
*程序与程序注释#include<stdio.h>#include<stdlib.h>#define HUNTHOU 10000typedef struct node{ int data;struct node *next;}NODE; /*定义链表结构*/NODE *insert_after(NODE *u,int num); /*在u结点后插入一个新的NODE,其值为num*/ NODE *addint(NODE *p,NODE *q); /*完成加法操作返回指向*p+*q结果的指针*/ void printint(NODE *s);NODE *inputint(void);void main(){NODE *s1,*s2,*s;NODE *inputint(), *addint(), *insert_after();printf("Enter S1= ");s1=inputint(); /*输入被加数*/printf("Enter S2= ");s2=inputint(); /*输入加数*/printf(" S1="); printint(s1); putchar('\n'); /*显示被加数*/printf(" S2="); printint(s2); putchar('\n'); /*显示加数*/s=addint(s1,s2); /*求和*/printf("S1+S2="); printint(s); putchar('\n'); /*输出结果*/}NODE *insert_after(NODE *u,int num){NODE *v;v=(NODE *)malloc(sizeof(NODE)); /*申请一个NODE*/v->data=num; /*赋值*/u->next=v; /*在u结点后插入一个NODE*/return v;}NODE *addint(NODE *p,NODE *q) /*完成加法操作返回指向*p+*q结果的指针*/{NODE *pp,*qq,*r,*s,*t;int total,number,carry;pp=p->next; qq=q->next;s=(NODE *)malloc(sizeof(NODE)); /*建立存放和的链表表头*/s->data=-1;t=s; carry=0; /*carry:进位*/while(pp->data!=-1&&qq->data!=-1) /*均不是表头*/{total=pp->data+qq->data+carry; /*对应位与前次的进位求和*/number=total%HUNTHOU; /*求出存入链中部分的数值*/carry=total/HUNTHOU; /*算出进位*/t=insert_after(t,number); /*将部分和存入s向的链中*/pp=pp->next; /*分别取后面的加数*/qq=qq->next;}r=(pp->data!=-1)?pp:qq; /*取尚未自理完毕的链指针*/while(r->data!=-1) /*处理加数中较大的数*/{total=r->data+carry; /*与进位相加*/number=total%HUNTHOU; /*求出存入链中部分的数值*/carry=total/HUNTHOU; /*算出进位*/t=insert_after(t,number); /*将部分和存入s指向的链中*/r=r->next; /*取后面的值*/}if(carry) t=insert_after(t,1); /*处理最后一次进位*/t->next=s; /*完成和的链表*/return s; /*返回指向和的结构指针*/}NODE *inputint(void) /*输入超长正整数*/{NODE *s,*ps,*qs;struct number {int num;struct number *np;}*p,*q;int i,j,k;long sum;char c;p=NULL; /*指向输入的整数,链道为整数的最低的个位,链尾为整数的最高位*/ while((c=getchar())!='\n') /*输入整数,按字符接收数字*/if(c>='0'&&c<='9') /*若为数字则存入*/{q=(struct number *)malloc(sizeof(struct number)); /*申请空间*/q->num=c-'0'; /*存入一位整数*/q->np=p; /*建立指针*/p=q;}s=(NODE *)malloc(sizeof(NODE));s->data=-1; /*建立表求超长正整数的链头*/ps=s;while(p!=NULL) /*将接收的临时数据链中的数据转换为所要求的标准形式*/ {sum=0;i=0;k=1;while(i<4&&p!=NULL) /*取出低四位*/{sum=sum+k*(p->num);i++; p=p->np; k=k*10;}qs=(NODE *)malloc(sizeof(NODE)); /*申请空间*/qs->data=sum; /*赋值,建立链表*/ps->next=qs;ps=qs;}ps->next=s;return s;}void printint(NODE *s){if(s->next->data!=-1) /*若不是表头,则输出*/{printint(s->next); /*递归输出*/if(s->next->next->data==-1)printf("%d",s->next->data);else{int i,k=HUNTHOU;for(i=1;i<=4;i++,k/=10)putchar('0'+s->next->data%(k)/(k/10));}}}NODE *pp,*qq,*r,*s,*t;int total,number,carry;pp=p->next; qq=q->next;s=(NODE *)malloc(sizeof(NODE)); /*建立存放和的链表表头*/s->data=-1;t=s; carry=0; /*carry:进位*/while(pp->data!=-1&&qq->data!=-1) /*均不是表头*/{total=pp->data+qq->data+carry; /*对应位与前次的进位求和*/number=total%HUNTHOU; /*求出存入链中部分的数值*/carry=total/HUNTHOU; /*算出进位*/t=insert_after(t,number); /*将部分和存入s向的链中*/pp=pp->next; /*分别取后面的加数*/qq=qq->next;}r=(pp->data!=-1)?pp:qq; /*取尚未自理完毕的链指针*/while(r->data!=-1) /*处理加数中较大的数*/{total=r->data+carry; /*与进位相加*/number=total%HUNTHOU; /*求出存入链中部分的数值*/carry=total/HUNTHOU; /*算出进位*/t=insert_after(t,number); /*将部分和存入s指向的链中*/r=r->next; /*取后面的值*/}if(carry) t=insert_after(t,1); /*处理最后一次进位*/t->next=s; /*完成和的链表*/return s; /*返回指向和的结构指针*/}NODE *inputint(void) /*输入超长正整数*/{NODE *s,*ps,*qs;struct number {int num;struct number *np;}*p,*q;int i,j,k;long sum;char c;p=NULL; /*指向输入的整数,链道为整数的最低的个位,链尾为整数的最高位*/ while((c=getchar())!='\n') /*输入整数,按字符接收数字*/if(c>='0'&&c<='9') /*若为数字则存入*/{q=(struct number *)malloc(sizeof(struct number)); /*申请空间*/q->num=c-'0'; /*存入一位整数*/q->np=p; /*建立指针*/p=q;}s=(NODE *)malloc(sizeof(NODE));s->data=-1; /*建立表求超长正整数的链头*/ps=s;while(p!=NULL) /*将接收的临时数据链中的数据转换为所要求的标准形式*/ {sum=0;i=0;k=1;while(i<4&&p!=NULL) /*取出低四位*/{sum=sum+k*(p->num);i++; p=p->np; k=k*10;}qs=(NODE *)malloc(sizeof(NODE)); /*申请空间*/qs->data=sum; /*赋值,建立链表*/ps->next=qs;ps=qs;}ps->next=s;return s;}void printint(NODE *s){if(s->next->data!=-1) /*若不是表头,则输出*/{printint(s->next); /*递归输出*/if(s->next->next->data==-1)printf("%d",s->next->data);else{int i,k=HUNTHOU;for(i=1;i<=4;i++,k/=10)putchar('0'+s->next->data%(k)/(k/10));}}}。