大数加法字符串版本
发布时间:2020-12-14 02:58:07 所属栏目:大数据 来源:网络整理
导读:大数+大数。 #include iostream#include cstdio#include cstringusing namespace std;char * add(char *a,char *b,char *c){ int lena = strlen(a); int lenb = strlen(b); int lenc = 0; int righta,rightb ; righta = lena -1 ; rightb = lenb - 1; int up
大数+大数。 #include <iostream> #include <cstdio> #include <cstring> using namespace std; char * add(char *a,char *b,char *c) { int lena = strlen(a); int lenb = strlen(b); int lenc = 0; int righta,rightb ; righta = lena -1 ; rightb = lenb - 1; int up = 0; int x,y,z; while(righta >=0 || rightb >=0) { if(righta < 0) x = 0 ; else x = a[righta--] - '0'; if(rightb < 0) y = 0 ; else y = b[rightb--] - '0'; z = x+y + up; //处理进位 if(z >= 10) { up = z/10; z = z%10; } else up = 0; c[lenc++] = z+'0'; } if(up) c[lenc++] = up + '0'; c[lenc] = 0; for(int i=0 ; i<lenc/2 ; i++) { char t; t = c[i];c[i]=c[lenc-i-1];c[lenc-i-1]=t; } return c; } int main() { FILE *pInput; pInput = fopen("input.txt","r"); char a[110],b[110],c[110]; while(fscanf(pInput,"%s%s",a,b) == 2) { printf("%sn",add(a,b,c)); } fclose(pInput); return 0; } 需要在同目录下新建输入文件,文件名为input.txt,可以有多行,每行两个数字,空格隔开,例如 input。txt: 123456 654321 7451 258 直接执行,结果会在屏幕上输出,如果需要输出到文件,则可以做如下修改: #include <iostream> #include <cstdio> #include <cstring> using namespace std; char * add(char *a,z; while(righta >=0 || rightb >=0) { if(righta < 0) x = 0 ; else x = a[righta--] - '0'; if(rightb < 0) y = 0 ; else y = b[rightb--] - '0'; z = x+y + up; //处理进位 if(z >= 10) { up = z/10; z = z%10; } else up = 0; c[lenc++] = z+'0'; } if(up) c[lenc++] = up + '0'; c[lenc] = 0; for(int i=0 ; i<lenc/2 ; i++) { char t; t = c[i];c[i]=c[lenc-i-1];c[lenc-i-1]=t; } return c; } <pre name="code" class="cpp">int main() { FILE *pInput,*pOut; pInput = fopen("in.txt","r"); pOut = fopen("out.txt","w"); char a[110],b) == 2) { fprintf(pOut,"%sn",c)); } fclose(pInput); fclose(pOut); return 0; } 标准输入输出的,可以直接对main函数修改,将文件相关的都去掉: int main() { char a[110],c[110]; while(scanf("%s%s",c)); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |