吻你不厌 发表于 2021-1-30 15:46:35

我的程序为什么不能输出结果啊?

#include<bits/stdc++.h>

using namespace std;

void bignumjia(string a,string b)
{
        a = '0' + a;
        b = '0' + b;
        string c;
        int lena = a.length();
        int lenb = b.length();
        int lenc = max(lena,lenb);
        for(int i = 1;i <= lenc;i++)
        {
                int q,p;
                q = max(0,lena-i);
                p = max(0,lenb-i);
                c = a + b - '0';
        }
        for(int i = lenc-1;i >= 0;i--)
        {
                if(c > '9')
                {
                        c++;
                        c -= 10;
                }
        }
        //
        cout << c;
}

int main()
{
        string a;
        cin >> a;
        string b;
        cin >> b;
       
        bignumjia(a,b);
       
        return 0;
}

sunrise085 发表于 2021-1-30 17:32:01

可能是因为你的头文件的string类没有重载"<<"操作符。29行加点东西就能输出了
#include <bits/stdc++.h>

using namespace std;

void bignumjia(string a,string b)
{
    a = '0' + a;
    b = '0' + b;
    string c;
    int lena = a.length();
    int lenb = b.length();
    int lenc = max(lena,lenb);
    for(int i = 1;i <= lenc;i++)
    {
      int q,p;
      q = max(0,lena-i);
      p = max(0,lenb-i);
      c = a + b - '0';
    }
    for(int i = lenc-1;i >= 0;i--)
    {
      if(c > '9')
      {
            c++;
            c -= 10;
      }
    }
    //
    cout << c.c_str();//改这里
}

int main()
{
    string a;
    cin >> a;
    string b;
    cin >> b;
   
    bignumjia(a,b);
   
    return 0;
}

吻你不厌 发表于 2021-1-30 18:20:00

sunrise085 发表于 2021-1-30 17:32
可能是因为你的头文件的string类没有重载"

万分感谢

吻你不厌 发表于 2021-1-31 16:31:23

sunrise085 发表于 2021-1-30 17:32
可能是因为你的头文件的string类没有重载"

啊,那为什么这个代码又可以输出了啊?
#include<bits/stdc++.h>

using namespace std;

string add(string str1,string str2)//高精度加法
{
    string str;
    int len1=str1.length();
    int len2=str2.length();
    //前面补0,弄成长度相同
    if(len1<len2)
    {
      for(int i=1;i<=len2-len1;i++)
         str1="0"+str1;
    }
    else
    {
      for(int i=1;i<=len1-len2;i++)
         str2="0"+str2;
    }
    len1=str1.length();
    int cf=0;
    int temp;
    for(int i=len1-1;i>=0;i--)
    {
      temp=str1-'0'+str2-'0'+cf;
      cf=temp/10;
      temp%=10;
      str=char(temp+'0')+str;
    }
    if(cf!=0)str=char(cf+'0')+str;
    return str;
}

int main()
{
        string a;
        cin >> a;
        string b;
        cin >> b;
       
        cout << add(a,b) << endl;
       
        return 0;
}
页: [1]
查看完整版本: 我的程序为什么不能输出结果啊?