大数相加 C/C++
2016-05-17 19:44
375 查看
</pre><pre name="code" class="cpp">#include<cstdio> #include<cstring> #include<algorithm> char num1[1002]; char num2[1002]; char res[1002];//结果的逆序 void add(char *num1,char*num2) { memset(res,0,sizeof(res)); int n1=strlen(num1); int n2=strlen(num2); int i=n1-1,j=n2-1; int flag=0; int num=0; while(i>=0&&j>=0) { if(num1[i]+num2[j]+flag-'0'>'9') { res[num]=num1[i]+num2[j]+flag-'0'-10; flag=1; } else { res[num]=num1[i]+num2[j]+flag-'0'; flag=0; } i--; j--; num++; } if(i>=0) { while(i>=0) { if(num1[i]+flag>'9') { res[num]=num1[i]+flag-10; flag=1; } else { res[num]=num1[i]+flag; flag=0; } i--; num++; } } else if(j>=0) { while(j>=0) { if(num2[j]+flag>'9') { res[num]=num2[j]+flag-10; flag=1; } else { res[num]=num2[j]+flag; flag=0; } j--; num++; } } if(flag) { res[num++]='1'; } res[num++]='\0'; return ; } int main() { int T; scanf("%d",&T); for(int i=1;i<=T;i++) { //memset(num1,0,sizeof(num1)); //memset(num2,0,sizeof(num2)); scanf("%s",&num1); scanf("%s",&num2); add(num1,num2); printf("Case %d:\n",i); printf("%s + %s = ",num1,num2); int n=strlen(res); for(int j=n-1;j>=0;j--) { printf("%c",res[j]); } printf("\n"); if(i!=T) { printf("\n"); } } return 0; }
相关文章推荐
- House Robber II
- C++第6次上机作业
- House Robber
- 设计模式之装扮模式(C++实现)
- Java和C++的虚函数的异同
- 分数加减的简单运算
- 杭电 2054(指针 strchr函数)
- C语言实现电话本 动态开辟 信息存储于文件
- C语言中经常遇到的陷阱!好东西
- C++开学第二次作业(5.14)
- stm8中断使用
- MZ test17# NOIP模拟题 #T3 第3 题 登山机器人(robot.pas/cpp)
- C++ 接口的实现方式
- C++中如何可以修改const函数内的成员变量的值?
- 1007. 素数对猜想 (20)
- C++拷贝构造函数详解
- C++类内存实验(一)
- C++——成员函数
- c++ 之replace函数用法
- C语言高级知识点滴