首页 > 代码库 > 杭电oj 1002
杭电oj 1002
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 int nCases; 5 int m[1001], n[1001]; 6 char a[1001], b[1001]; 7 int main() 8 { 9 scanf("%d", &nCases); 10 for(int i = 1; i <= nCases; ++i) 11 { 12 memset(m, 0, sizeof(m)); 13 memset(n, 0, sizeof(n)); 14 getchar(); 15 scanf("%s %s", a, b); 16 int len1 = strlen(a); 17 int len2 = strlen(b); 18 if(len1 > len2) //是m长度大于n 19 { 20 // 把字符数组a逆序转成int数组m 21 int cnt = 0; 22 for(int j = len1-1; j >= 0; --j) 23 m[cnt++] = a[j] - ‘0‘; 24 // 把字符数组b逆序转成int数组n 25 cnt = 0; 26 for(int j = len2-1; j >= 0; --j) 27 n[cnt++] = b[j] - ‘0‘; 28 } 29 else 30 { 31 // 把字符数组a逆序转成int数组n 32 int cnt = 0; 33 for(int j = len1-1; j >= 0; --j) 34 n[cnt++] = a[j] - ‘0‘; 35 // 把字符数组b逆序转成int数组m 36 cnt = 0; 37 for(int j = len2-1; j >= 0; --j) 38 m[cnt++] = b[j] - ‘0‘; 39 } 40 int len = len1 > len2? len2: len1; 41 int k = 0; //指示最高位 42 43 for(int j = 0; j < len; ++j) 44 { 45 m[j] += n[j]; 46 if(m[j] >= 10) 47 k = j+1; 48 m[j+1] += (m[j]/10); 49 m[j] %= 10; 50 } 51 printf("Case %d:\n", i); 52 printf("%s + %s = ",a, b); 53 len = len1>len2? len1: len2; 54 if(k < len-1) 55 k = len-1; 56 for(int j = k; j >= 0; --j) 57 printf("%d", m[j]); 58 i == nCases? printf("\n"): printf("\n\n"); 59 } 60 return 0; 61 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。