用C语言指针方法实现大整数加法.docVIP

  • 34
  • 0
  • 约1.62千字
  • 约 2页
  • 2017-07-29 发布于北京
  • 举报
用C语言指针方法实现大整数加法

#include string.h #include stdio.h void f1(char *a,char *b) { char t[101]; if(strlen(a)strlen(b)) { t[101]=0; strcpy(t,a); //把a中内容拷贝到字符串t中 strcpy(a,b); strcpy(b,t); //以上三条实现a与b的交换 } } void f(char *t1,char *t) { int i,n; n=strlen(t1); //n是字符串t1的长度 for(i=0;in;i++) t[i]=t1[n-1-i]; //把t1中的内容赋给与它的下标对称的下标t中 t[n]=\0; //t最后一个位置赋结束字符 } void f2(char *b,int q,int l) { char t[101]; //定义一个字符数组 int i; for(i=0;iq-l;i++) t[i]=0; t[q-l]=\0; strcat(b,t); //把t连接到b去除结束字符/0的字符后,保持和字符串a长度一致,便于运算 } void add(char *a,char *b,char *s,int q) { int i; strcpy(s,a); //把字符串a拷贝到字符串s中 for(i=0;iq;i++) if(s[i]+b[i]105) //判断两个数字的和是否大于十 ,若大于10考虑进位问题 { s[i]+=(b[i]-58); //大于10进位,s[i]加上进位后的数字,运算后赋给s[i] s[i+1]++; //s[i+1]进位加1,运算后赋给s[i] } else s[i]+=(b[i]-48); //否则不进位,运算后赋给s[i] } void print(char *s) { int i,l; l=strlen(s); if(s[l-1]9||s[l-1]0) { printf(1); for(i=l-2;i=0;i--) printf(%c,s[i]); } else for(i=l-1;i=0;i--) printf(%c,s[i]); } int main() { char a[101],b[101],a1[101],b1[101],sum[101]={0}; int q,l; printf(请输入大整数a:\n ); gets(a1); //输入字符a1 printf(请输入大整数b:\n ); gets(b1); //输入字符b1 f1(a1,b1); //调用函数f1 f(a1,a); //调用f f(b1,b); //调用f q=strlen(a); //q是字符串a的长度 l=strlen(b); //l是字符串b的长度 f2(b,q,l); //调用f2使a,b长度一致 add(a,b,sum,q); //调用add,运算a,b字符串的结果 printf(和为:); print(sum); printf(\n); return 0; }

文档评论(0)

1亿VIP精品文档

相关文档