首页 > 解决方案 > 在我的代码中输出给出 08 的错误在哪里

问题描述

编写一个有 4 个参数的 C++ 函数,第一个参数是一个字符串,作为第一个操作数,第二个参数是另一个字符串,作为第二个操作数,第三个参数是一个字符,可以是“+”或“ -”或“*”,最后一个参数是操作数的基数。该函数必须返回一个字符串,其中包含对两个操作数应用运算的结果(结果必须在相同的基数中)。输入和输出示例:
第一个操作数是:1243
第二个操作数是:441
运算是: -
基数是:5
结果是:302

我的代码:

#include <iostream>
#include <cmath>

using namespace std;

int function( int oper1 , int oper2 , char sign , int base)
{
  int ansdec,rem,n;
  switch(sign)
  {
  case '+':
      ansdec=oper1+oper2;
      cout<<ansdec;
      break;
  case '-':
      ansdec=oper1-oper2;
      cout<<ansdec;
      break;
  case '*':
      ansdec=oper1*oper2;
      cout<<ansdec;
      break;
  }

  while(ansdec>0)
  {
      rem=ansdec%10;//rem=2
      ansdec=ansdec/10;//ansdec=77/5=15
      n=(rem*10)+rem;//n=20*10+3=203
  }

  int reverse=0,re;
  while(n>0)
  {
      re=n%10;//re=3
      reverse=(reverse*10)+re;//rev=3
      n=n/10;
  }
  return reverse;
}

int main()
{
    int oper1,oper2,base;
    char sign;
    cout<<"enter your problem"<<endl;
    cin>>oper1>>oper2>>sign>>base;
    cout<<"The first operand is:"<<oper1<<endl;
    cout<<"The second operand is:"<<oper2<<endl;
    cout<<"Theoperation is:"<<sign<<endl;
    cout<<"The base is:"<<base<<endl;
    int result=0,i=0,x,y;
    while(oper1>0)
    {
     x=oper1%10;
     y=x*pow(base,i);
     oper1=oper1/10;
     result=result+y;
     i++;
    }
    int r=0,c=0,z,v;
    while(oper2>0)
    {
     z=oper2%10;
     v=z*pow(base,c);
     oper2=oper2/10;
     r=r+v;
     c++;
    }
    cout<<function(oper1,oper2,sign,base)<<endl;
}

标签: c++

解决方案


推荐阅读