'commit'
This commit is contained in:
68
C++专题课程/基础知识/求任意两整数之和(1000位以内.cpp
Normal file
68
C++专题课程/基础知识/求任意两整数之和(1000位以内.cpp
Normal file
@@ -0,0 +1,68 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
#define MAX 1000 /* precision */
|
||||
void input(char ch[]) {
|
||||
scanf("%s", ch);
|
||||
}
|
||||
void add(char ch1[], char ch2[], char ch3[]) {
|
||||
int len1, len2, len3, maxlen;
|
||||
int sum, flag;
|
||||
len1=strlen(ch1);
|
||||
len2=strlen(ch2);
|
||||
len3=maxlen=len1 >= len2 ? len1 : len2;
|
||||
flag=0; /* jin wei */
|
||||
|
||||
while(len1>=1 && len2>=1) {
|
||||
sum=ch1[len1-1]-'0' + ch2[len2-1]-'0' + flag; /* char -> int to calculate sum */
|
||||
flag=0;
|
||||
|
||||
if(sum>=10) {
|
||||
sum-=10;
|
||||
flag=1;
|
||||
}
|
||||
ch3[maxlen-1]=sum + '0';
|
||||
len1--;
|
||||
len2--;
|
||||
maxlen--;
|
||||
}
|
||||
while(len1>=1) { /* if num1[] is longer or maxer */
|
||||
sum=ch1[len1-1]-'0' + flag;
|
||||
flag=0;
|
||||
|
||||
if(sum>=10) {
|
||||
sum-=10;
|
||||
flag=1;
|
||||
}
|
||||
ch3[maxlen-1]=sum + '0';
|
||||
len1--;
|
||||
maxlen--;
|
||||
}
|
||||
|
||||
while(len2>=1) { /* if num2[] is longer or maxer */
|
||||
sum=ch2[len2-1]-'0' + flag;
|
||||
flag=0;
|
||||
|
||||
if(sum>=10) {
|
||||
sum-=10;
|
||||
flag=1;
|
||||
}
|
||||
ch3[maxlen-1]=sum + '0';
|
||||
len2--;
|
||||
maxlen--;
|
||||
}
|
||||
if(flag != 0) /* if flag, then print gaowei(jinwei) */
|
||||
printf("%d", flag);
|
||||
for(int i=0; i<len3; i++)
|
||||
printf("%c", ch3[i]);
|
||||
printf("\n");
|
||||
}
|
||||
int main() {
|
||||
char ch1[MAX], ch2[MAX], ch3[MAX+1];
|
||||
memset(ch3, '0', sizeof(ch3));
|
||||
input(ch1);
|
||||
input(ch2);
|
||||
add(ch1, ch2, ch3);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user