正在加载图片...
107设计算法,完成两个超长整数相加。 解:超长整数相加的方法很多,本例采用数组表示超长整数,数组的每一个数表示万进制 数的一位,结构中设计一个表示位数的成员,数组下标从超长整数的低位开始存放,参考 程序如下: #include <stdio. h> #definen 100 typedef struct LONG int len: void in long(LoNg *s) I char ch, str[N+1 int 1, j, k, kk, end, n while(ch= getchar()!=\n’)/*接收超长整数*/ f(ch>=’0&&ch<=9”) str[i++]=ch strli]=\0 s->len=i: k=1-1 for(i=0;i<=s->len/4;i++)/*存储超长整数* if (i==s->len /*最高位处理* end=s->len-i*4 If (end==0) else end=4 for (j=0; j<end; j++) m=m+(str[k-]-’0’)*k kk*=10 S->n[i]=m void add (LONG *a, LONG *b, LONG *c) inti,j,cc,k,end;/进位*/ if (a->len>b->len)} 10.7 设计算法,完成两个超长整数相加。 解:超长整数相加的方法很多,本例采用数组表示超长整数,数组的每一个数表示万进制 数的一位,结构中设计一个表示位数的成员,数组下标从超长整数的低位开始存放,参考 程序如下: #include <stdio.h> #define N 100 typedef struct LONG { int n[N]; int len; } LONG; void in_long(LONG *s) { char ch,str[N+1]; int i,j,k,kk,end,m; i=0; while ((ch=getchar())!='\n') /*接收超长整数*/ if (ch>='0'&&ch<='9') str[i++]=ch; str[i]='\0'; s->len=i; k=i-1; for (i=0;i<=s->len/4;i++) /* 存储超长整数 */ { m=0; kk=1; if (i==s->len/4) /* 最高位处理 */ { end=s->len-i*4; if (end==0) break; } else end=4; for (j=0;j<end;j++) { m=m+(str[k--]-'0')*kk; kk*=10; } s->n[i]=m; } } void add(LONG *a,LONG *b,LONG *c) { int i,j,cc,k,end; /* 进位 */ if (a->len>b->len)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有