首页 > 编程知识 正文

c语言程序设计书(c语言大数运算程序设计报告,C语言程序设计–大数运算.doc)

时间:2023-05-03 14:30:30 阅读:123248 作者:1130

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=

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。