栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 高精度自减

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 高精度自减

#include 
#include
using namespace std;
int main()
{
    // flag用于最后判断是否添加符号
    int i, j, flag = 0;
    string a_s, b_s;
    int a[10088] = { 0 }, b[10088] = { 0 }, c[10088] = { 0 };//数组初始化 //以防万一数组长度尽量大
    cin >> a_s;
    cin >> b_s;
    int la = a_s.length(), lb =b_s.length(); //计算a_s b_s的长度
    int l_max = max(la, lb); 
    //计算a_s b_s的最大长度,确定做减法时的循环次数
    for (i = 0; i < la; i++)
    {
        a[la - i] = a_s[i] - '0';       //将字符转换成数字并倒置储存
                                        //这里应该注意i是从0开始的 所以 la-i>=1!!!!
    }
    for (i = 0; i < lb; i++)
    {
        b[lb - i] = b_s[i] - '0';       
    }
  
    if (la > lb || la == lb && a_s >= b_s)      //判断a是否大于b
    {
        for (i = 1; i <=l_max; i++)
        {                                 // i从1开始循环
            if (a[i] < b[i])                 
            {                             //若a[i] 1)
        {
            l_max--;               //因为C数组是导致储存的 所以假设01100会被储存为 00110
                                 // 所以要去除多余的零变为 0011 
                                   //但是要注意0-0 这种情况 即 保留最后一个零 所以l_max>1 最后一位不参与循环
        }
        
       
    for (i = l_max; i >0; i--)
    {
        cout << c[i];           //倒置输出
    }
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034965.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号