加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数运算 数组指针

发布时间:2020-12-14 03:33:31 所属栏目:大数据 来源:网络整理
导读:我暂时还不明白这串代码,大概是任意长度数据的加法运算。 #include stdio.h#include ctype.h#define N 20void shift(int *a,int n);void shift(int *a,int n){int k,len,sft;len=N-1-n;sft=N-len;for(k=0;klen;k++)*(a+k)=*(a+k+sft);for(k=len;kN;k++)*(a+
我暂时还不明白这串代码,大概是任意长度数据的加法运算。
 
#include <stdio.h>
#include <ctype.h>
#define N 20

void shift(int *a,int n);
void shift(int *a,int n){
	int k,len,sft;
	len=N-1-n;
	sft=N-len;
	for(k=0;k<len;k++)
		*(a+k)=*(a+k+sft);
	for(k=len;k<N;k++)
		*(a+k)=0;
}

int main(void){
	int x[N],y[N],z[N+1],i,carry=0,flag;
	for(i=0;i<N;i++)
		*(z+i)=0;
	i=N-1;
	while(i>=0&&isdigit(*(x+i)=getchar()))
		*(x+i--)-='0';
	if(i>=0)  shift(x,i);
	i=N-1;
	while(i>=0&&isdigit(*(y+i)=getchar()))
		*(y+i--)-='0';
	if(i>=0)
		shift(y,i);
	for(i=0;i<N;i++){
		*(z+i)=*(x+i)+*(y+i)+carry;
		carry=(*(z+i)-*(z+i)%10)/10;
		*(z+i)%10,*(z+i)+='0';
		flag=0;
		for(i=N;i>=0;i--){
			if(flag==0&&*(z+i)!='0') flag=1;
			if(flag==1)  putchar(*(z+i));
		}
		putchar('n');
		getchar();
		return 0;
	}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读