小学生算术-java&c-统计俩个整数相加时发生多少次进位

问题描述:计算俩个整数在相加时需要多少次进位,处理多组数据,直到输入俩个0.

1.java

import java.util.Scanner;
/**
 * 统计两个数字在相加的时候需要多少次进位,结束标志 输入俩个零
 * @author NEU-2015
 *
 */
public class Demo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int a = 0;
        int b = 0;
        int count = 0;   //统计多少次进位
        int result = 0;   //a+b 每一位数的结果
        while (input.hasNext()) {
            a = input.nextInt();
            b = input.nextInt();
            count = 0;
            result = 0;
            if(a == 0 && b == 0) {    //结束标志
                input.close();
                break;
            }

            while(a > 0 && b > 0) {
                result = (a%10 + b%10 + result) > 9 ? 1 : 0;
                count += result;
                a /= 10;
                b /= 10;
            }
            System.out.println(count);    //输出共进位多少次
        }
    }
}

2.c

#include<iostream>
#include<stdio.h>
using namespace std;
//输入的整数都不超过9个数字
//@author NEU-2015
int main() {
    int a, b;
    while(scanf("%d%d", &a, &b) == 2) {
        if(!a && !b) return 0;
        int c = 0, ans = 0;
        for(int i = 9; i >= 0; i--) {
            c = (a%10 + b%10 + c) > 9 ? 1 : 0;
            ans += c;
            a /= 10;
            b /= 10;
        }
        printf("%d\n", ans);
    }
    return 0;
}
时间: 2024-11-03 21:04:30

小学生算术-java&c-统计俩个整数相加时发生多少次进位的相关文章

当JAVA集合移除自身集合元素时发生的诸多问题

一段代码目的是想删除集合中包含"a"字符串的集合项: public class TestForeach { public static void main(String[] args){ //ArrayList<String> lists = new ArrayList<String>(); Collection<String> lists = new HashSet<String>(); lists.add("abvd&quo

nyist 74 小学生算术

题目74题目信息运行结果本题排行讨论区小学生算术时间限制:3000 ms | 内存限制:65535 KB 难度:1描述 很多小学生在学习加法时,发现“进位”特别容易出错.你的任务是计算两个三位数在相加时需要多少次进位.你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记).输入输入两个正整数m,n.(m,n,都是三位数)输出输出m,n,相加时需要进位多少次.样例输入123 456555 555123 5940 0样例输出03 1 #include <iostream>usin

nyoj 74 小学生算术【水题】

小学生算术 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 很多小学生在学习加法时,发现"进位"特别容易出错.你的任务是计算两个三位数在相加时需要多少次进位.你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记). 输入 输入两个正整数m,n.(m,n,都是三位数) 输出 输出m,n,相加时需要进位多少次. 样例输入 123 456 555 555 123 594 0 0 样例输出 0 3 1 来源 [张洁烽]原创 上传者 张洁烽 思路:

小学生算术

#include<iostream> #include<memory.h> using namespace std; int main() { char m[4],n[4]; cin>>m>>n; int temp[4]; while(m[0]!='0'&&n[0]!='0') { int N=0; memset(temp,0,sizeof(temp)); for(int i=2;i>=0;i--) { temp[i]=temp[i]+

[Java]#从头学Java# Java大整数相加

重操旧业,再温Java,写了个大整数相乘先回顾回顾基本知识.算法.效率什么的都没怎么考虑,就纯粹实现功能而已. 先上代码: 1 package com.tacyeh.common; 2 3 public class MyMath { 4 5 public static String BigNumSum(String... n) { 6 int length = n.length; 7 StringBuilder result = new StringBuilder(); 8 //这里判断其实不需

编写Java脚本统计工程代码总行数

在新公司工作将近一年了,一直独自一人负责服务端集群的运维和代码的编写.不知不觉从一个Project发展到了七八个Project. 看着越来越多的代码,今天突然想统计一下一共写了多少代码.[这里只统计完全由自己编写的代码,因为项目是基于Springboot的,所以直接统计 src目录下所有文件的行数即可] 首先,编写几个工具类. FolderFind.java import java.io.File; import java.util.ArrayList; import java.util.Lis

SOJ 1002/1003/1004 大整数相加/相乘/相除

三个题目分别考察大整数相加相乘相除运算.如果按照传统算法是取一个长数组,之后进行模拟或者FFT来进行运算.但是相对繁琐. 后来昨天的青岛区域赛网赛1001,用到了JAVA的BigDecimal,于是反过来想到了这几个题目.用JAVA写了以后果然很简单. 1002:大数相加: AC代码: import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { // TO

大整数相加 a+b 的c语言实现

终于来到我所期盼的高精度整数相加的题目了.这个题很经典,也算是一个很好的算法入门题吧. 如果是java的话,系统类库已经内置了BigInteger类,直接调用就可以很轻易地解决了.但是学习c的编写也是非常有意义的. 解题思路 1.首先用两个数组s1,s2临时存放输入的数据 2.输入以后将两个数组s1.s2以si[i]-'0'的方式把输入的字符串型数字转化为int型的数字. 注意转换的过程中,要倒过来存,以便相加的时候低位的对齐,从低位开始相加. 3.相加的过程:同位相加,相加的结果存放在num1

如何实现大整数相加

思路:在程序中列出 "竖式" ,然后逐位相加.究竟是什么样子呢?我们以 426709752318 + 95481253129 为例,来看看大整数相加的详细步骤: 第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置.之所以倒序存储,更加符合我们从左到右访问数组的习惯. 第二步,创建结果数组,结果数组的最大长度是较大整数的位数+1,原因很明显. 第三步,遍历两个数组,从左到右按照对应下标把元素两两相加,就像小学生计算竖式一样. 例子中,最先相加的是数组A的