大数+大数。
#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("%s\n",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,"%s\n",c)); } fclose(pInput); fclose(pOut); return 0; }
标准输入输出的,可以直接对main函数修改,将文件相关的都去掉:
int main() { char a[110],c[110]; while(scanf("%s%s",c)); } return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。