解题思路:
注意事项:
参考代码:
package 练习; import java.util.Scanner; /* * 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0], 即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和. 如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。 最后将C输出即可 */ public class Main { public static void main(String[] args) { int[] A = new int[100]; int[] B = new int[100]; Scanner sc = new Scanner(System.in); String a = sc.nextLine(); String b = sc.nextLine(); String ar = reverse(a, a.length() - 1); String br = reverse(b, b.length() - 1); for (int i = 0; i < ar.length(); i++) { A[i] = ar.charAt(i) - '0'; } for (int i = 0; i < br.length(); i++) { B[i] = br.charAt(i) - '0'; } int maxlen = ar.length() > br.length() ? ar.length() : br.length(); StringBuffer C = new StringBuffer(); int r = (A[0] + B[0]) / 10; C.append(String.valueOf((A[0] + B[0]) % 10)); for (int i = 1; i < maxlen; i++) { if (A[i] + B[i] + r >= 10) { C.append(String.valueOf((A[i] + B[i] + r) % 10)); r = (A[i] + B[i] + r) / 10; continue; } if (A[i] + B[i] + r < 10) { C.append(String.valueOf((A[i] + B[i] + r))); r = (A[i] + B[i]) / 10; } } if (A[maxlen - 1] + B[maxlen-1] + r >= 10) C.append((A[maxlen - 1] + B[maxlen - 1] + r) / 10); System.out.println(C.reverse()); } static String reverse(String s, int begin) { if (begin == 0) { return s.charAt(0) + ""; } return s.charAt(begin) + reverse(s, begin - 1); } }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1067 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:703 |
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1674 |
简单的a+b (C语言代码)浏览:626 |
1642题解浏览:784 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:524 |
2^k进制数 (C语言描述,蓝桥杯)浏览:1457 |
数组与指针的问题浏览:760 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:567 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:692 |