zoukankan      html  css  js  c++  java
  • 算法篇——小学生算数

      来源:《算法竞赛入门经典》例题5.2.1

      原题:很多学生在学习加法时,发现”进位“特别容易出错。你的任务是计算两个整数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。假设输入的整数都不超过9位。

      样例输入:123 456

      样例输出:0

      样例输入:555 545

      样例输出:3

      样例输入:991 11

      样例输出:2

      分析:注意int的上限约是2000000000,可以保存所有9位整数,因此可以用整型int来保存输入。每次把a和b分别模10就能获取它的最低位,原理同全加器

      源码

    #include<stdio.h>
    
    int main()
    {
        int a,b,i,c=0,n=0;                //c表示进位位,n表示进位次数
        while(scanf("%d %d",&a,&b)==2)
        {
            if(!a && !b)    return;       //读入两个0,输入结束
            while(a || b)                 //只要a,b不全为0,对应位相加就可能有进位(不要忽视来自低位的进位)
            {
                c = (a%10) + (b%10) + c > 9 ? 1:0; //原理同全加器(加数、被加数与低位的进位数为输入,和数与进位为输出)
                n+=c;        //进位次数统计
                a/=10;       //向右移位
                b/=10;
            }
            printf("%d
    ",n);
            n=0;
        }
        return 0;
    }
  • 相关阅读:
    第一次作业:阅读与准备作业
    第一阶段意见总结
    第一冲刺阶段总结与评审
    第一冲刺阶段总结
    第一冲刺阶段第七天
    第一冲刺阶段第六天
    第一冲刺阶段第五天
    第一冲刺阶段第四天
    第一冲刺阶段第三天
    第一冲刺阶段第二天
  • 原文地址:https://www.cnblogs.com/eniac12/p/4766187.html
Copyright © 2011-2022 走看看