小学生算术-程序编程

题目:很多小学生在学习加法时,发现“进位”特别容易出错,你的任务是计算两个整数在相加时需要多少次进位。你编程的程序应当可以处理多组数据,直到读到两个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);
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值