3:大整数加法(待复习版)
由于写得时间太久,断断续续,思维混乱,此代码仅限于蒙混过关,
由此可以看出,至于字符类型和int类型之间的转换,博主掌握得不够扎实,有待夯实。
教训:
1.从此此次过程可以看出,程序不宜放太久不去看,肯定会遗忘的甚至遗忘了当初想法
也不宜把整个时间拖得太长,要速战速决。
2.另,可以考虑再前面加一个解题思路,防止忘记思路,同时适当添加注释。
3:大整数加法
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
求两个不超过200位的非负整数的和。
- 输入
- 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
- 输出
- 一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
- 样例输入
-
22222222222222222222 33333333333333333333
- 样例输出
-
55555555555555555555
以下为程序源码:
#include <stdio.h> #define N 202//5// 202 int main(void) { char a[N]; char b[N]; char sum[N]; int c; int i; int j; int k; char ch; int tag = 0; for(i=0; i<N; i++) { a[i] = '\000'; b[i] = '\000'; sum[i] = '0'; } scanf("%s", a); scanf("%s", b); for(i=N-2, j=N-2, k=N-2; i>-1 || j>-1 ; i--, j--,k--) { while(('\000' == a[i]) && (i>-1)) { i--; } while(('\000' == b[j])&& (j>-1)) { j--; } if(i>-1&& j>-1) c = (a[i]-'0') + (b[j]-'0')+(sum[k]-'0'); else if(j>-1&&i<0) c = b[j]-'0'+(sum[k]-'0'); else if(i>-1&&j<0) c = a[i] - '0'+(sum[k]-'0'); if(c>=10) { // printf("%d\n", c); sum[k]= (c-10)+'0'; // printf("%d\n", sum[k]); if(sum[k] == '\000') sum[k] = '0'; sum[k-1] ='1'; } else { sum[k] = c+'0';//sum[k]+c;//(sum[k]-'0') + (c); // if(sum[k]>=10) { // sum[k] = sum[k]+sum[k]-10; // sum[k-1] = '1'; } } } sum[N-1] = '\0'; for(i=0; i<=N-2; i++) { if(sum[i]=='0'&&tag==0) { continue; } else if (sum[i]!='0') { tag = 1; } putchar(sum[i]); } putchar('\n'); return 0; }
转载本Blog文章请注明出处,否则,本作者保留追究其法律责任的权利。
本人转载别人或者copy别人的博客内容的部分,会尽量附上原文出处,仅供学习交流之用,如有侵权,联系立删。