大数运算 数组指针
发布时间: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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |