c语言编程最大数运算
#包含
#包含
#包含
#定义maxn 1010
/*
将满足XX、XXXX、XXXX形式的字符串s转换为数字串并存储到数组shu中
*/
intget_Shu(char*s,int shu[] ) ]
{
索引=0;
char* point;
scanf(s,“%d”,shu[index ]; 从//s中取得第一个,计数为num[]
for (; (//先找),)找到后将该位置的文字转换为)空格,然后从该位置读取数字
point=strchr(s,','; 从//s中找到第一个','将其地址存在point中
if (点==空) break; 如果找不到//“”,就“解开循环直到结束”
*积分=' '; //找到“”,在“”后转换为“”空格
Scanf(point,' %d ',shu[index ]; //从空格后面将数字检索到num[]
}
int i,temp; //index记录数组中的数量使数组的反转高位在低位之前
for(I=0; I索引/2; I ) {
temp=shu[i];
墅[ I ]=墅[索引- I-1 ];
墅[索引- I-1 ]=temp;
}
返回索引; 返回索引值的数组的长度注意长度比下标大1
}
/*
进行加法运算的函数适用于相同编号的情况
*/
(intadd(int*S1,int len1,int *s2,int len2,int *res ) ) ) ) ) ) 0
{
intlen=(len1len2)? len1: len2;//以2个个数的串的最长长度为基准作为运算次数
索引,增量=0;
for (索引=0; 索引len; 从索引下位向上位进行运算
{
RES[index]=S1[index]S2[index]三角洲;
delta=RES [索引]/10000;
res[index] %=10000;
}
if(delta ) res[index ]=delta; //如果最后有进位,则设为位1,进位为最高位
返回索引; //返回结果的长度
}
/*
减法的函数适用于异号的情况
*/
intsub(int*S1,int len1,int *s2,int len2,int *res,int *len0) () ) ) ) ) ) 6550
{
int len、*up、*dn; //len记录计算次数up为绝对值大的数dn指向绝对值小的数
while (len1==len2len 1s1[ len1-1]==S2 [ len2-1] (/! 如果两个数列的长度相同,高位相同,则长度会不断向后缩短
{ len1--; len2--; //因为相同的高位被抵消,但这个循环至少在两个个数上保留一位
len=(len1len2)? len1: len2; //取较长的长度作为计算次数
if(len1!=len2(//! 如果两个数列的长度不同
{
up=(len1len2)? s1: s2; //! 长度的绝对值一定会很大程度上分配给up
dn=(up==S1 )? s2: s1; //! 短的对dn
(else(/两个数字串的长度相等时
up=(S1[Len1-1]S2[Len2-1]? s1: s2; //给up最高位数值大的数
dn=(up==S1 )? s2: s1;
}
索引,增量=0; //从这里开始从下位向上计算
for(index=