题目:很多小学生在学习加法时,发现“进位”特别容易出错,你的任务是计算两个整数在相加时需要多少次进位。你编程的程序应当可以处理多组数据,直到读到两个0(这是输入结束标志)。假如输入的整数都不超过9个数字。
Java语言程序实现:
package java521;
import java.util.Scanner;
public class 小学生算术 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
char[] is = {'0','0','0','0','0','0','0','0','0'};//标志位
String a = scanner.next();
String b = scanner.next();
//当两个数都不为0时
if(Integer.valueOf(a) != 0 && Integer.valueOf(b) != 0){
System.out.println("进位了...."+num(a,b,is)+"位");
}
else
{
break;
}
}
}
private static int num(String a,String b, char[] is){
char[] arrA = a.toCharArray();
char[] arrB = b.toCharArray();
int aInt,bInt;
int count = 0;
int k = arrA.length>arrB.length?arrB.length:arrA.length;
for(int i=0;i<k;i++){
if(arrA.length-i-1>=0){
aInt = Integer.valueOf(String.valueOf(arrA[arrA.length-i-1]));
}
else
{
aInt = 0;
}
if(arrB.length-i-1>=0){
bInt = Integer.valueOf(String.valueOf(arrB[arrB.length-i-1]));
}
else
{
bInt = 0;
}
if(is[(i-1)<0?0:i-1] == '0'){
if(aInt + bInt > 9){
is[count] = '1';
}
else
{
is[count] = '0';
}
}
else
{
if(aInt + bInt + 1 > 9){
System.out.println(aInt+"---"+bInt);
is[count] = '1';
}
else
{
is[count] = '0';
}
}
count ++;
}//for循环
int sum = 0;
for(int i=0;i<is.length;i++){
if(is[i] == '1'){
sum++;
}
}
return sum;
}
}
第二种解法:
package java521;
import java.util.Scanner;
public class OtherMethod {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int a = scanner.nextInt();
int b = scanner.nextInt();
int ans = 0, c = 0;
if(a == 0 && b == 0)
break;
for(int i=9;i>=0;i--){
c = (a%10+b%10+c)>9?1:0;
ans = ans + c;
a = a / 10;
b = b / 10;
}
System.out.println("进了"+ans+"位");
}
}
}
2.阶乘的精确值:
题目:输入不超过1000的正整数,输出n!=1*2*3*4*....*n的精确结果。
Java代码如下:
package java522;
import java.math.BigDecimal;
import java.util.Scanner;
public class 阶乘的精确值 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigDecimal sum = new BigDecimal(1);
while(scanner.hasNext()){
int n = scanner.nextInt();
for(int i = 1; i <= n; i++){
sum = sum.multiply(new BigDecimal(i));
}
System.out.println("结果为:"+sum);
}
}
}