zoukankan      html  css  js  c++  java
  • 小学生算术(进位处理)

    
    

    问题描述:输入两数,统计两数相加的进位个数

    My Code:

    //精简代码
    #include<iostream>
    using namespace std;
    
    int main()
    {
        int a, b, c, cnt;
        while(cin >> a >> b)
        {
            c = cnt = 0;
            while(a || b)
            {
                c = ((a%10 + b%10 + c) > 9) ? 1 : 0;
                cnt += c;
                a /= 10;    b /= 10;
            }
            cout << cnt << endl;
        }
        return 0;
    }
    
    //First
    #include<iostream>
    using namespace std;
    
    const int size = 100;
    void main()
    {
        int a, b;
        cout << "Enter two numbers(0 0 to end):" << endl;
        while(cin >> a >>b && a != 0 && b != 0)        //0 0 结束输入标志
        {
            int a1[size] = {0}, a2[size] = {0};        //模拟数组
            int i = 0;
            while(a)            //整数a转换存储到数组中
            {
                a1[i] = a%10;
                a /= 10;
                ++i;
            }
            i = 0;
            while(b)            //整数b转换存储到数组中
            {
                a2[i] = b%10;
                b /= 10;
                ++i;
            }
            int len1, len2, cnt = 0;
            len1 = sizeof(a1)/sizeof(*a1);    //a的位数
            len2 = sizeof(a2)/sizeof(*a2);    //b的位数
            for(i = 0; i < (len1>len2?len1:len2); ++i)
                if(a1[i] + a2[i] > 9)
                {
                    ++cnt;
                    ++a1[i+1];
                }
                cout << cnt << endl;
        }
    }
    

      

    Identifying Code:

    #include<iostream>
    void main()
    {
        int a, b;
        cout << "Enter two numbers(0 0 to end):" << endl;
        while(cin >> a << b && a != 0 && b != 0)
        {
            int carry = 0, cnt = 0;//进位和计数
            for(int i = 9; i >= 0; --i)                //int型表示所有9位整数
            {
                carry = (a%10 + b%10 + carry) > 9 ? 1 : 0;    //根据当前有进位情况为进位carry赋值
                ans += carry;        //更新计数器
                a /= 10;
                b /= 10;
            }
            cout << ans << endl;
        }
    }
    

      

    比较:

    相较于Identifying而言,my code以下几点有待改进:

    (1)、深刻理解问题实质;;

    (2)、变量少些,精简代码;

    属于小技巧,多多练习,掌握它……

    关于int、double、long、char的所能表示范围在我的CSDN博客中有专门测试

    点击链接:桑海的CSDN博客

  • 相关阅读:
    设计模式-观察者模式(Observer Pattern)
    设计模式-策略模式(Strategy Pattern)
    数据结构-红黑树
    数据结构-二叉搜索树(BST binary search tree)
    算法-插入排序(Insertion sorting)
    算法-桶排序(Bucket sort)
    设计模式-单例模式(Singleton Pattern)
    算法-基数排序(radix sort)
    算法-计数排序及其变体
    Pytest框架的使用
  • 原文地址:https://www.cnblogs.com/sanghai/p/2761122.html
Copyright © 2011-2022 走看看