Leon C. 2020-01-02 17:04 采纳率: 0%
浏览 111
已采纳

这个问题是什么原因?如何解决?

本应该输入算式后计算出它的结果后返回结果,但实际:
如是加减运算:输入一个算式时只返回算式中的第一个值,(如:23+3本该返回26,实际返回23)
如是乘运算:永远返回0
如是除运算:程序退出

代码如下:

#include<iostream>
using namespace std;
string type_get, str_empty, str_num1, str_num2;
string to_do = "+-*/";
int empty, i, operator_num, num1, num2;
int flag = 1;//flag=1:运行,flag=0:退出

int add(int num1,int num2)
{
    int result;
    result = num1 + num2;
    return result;
}

int subtract(int num1,int num2)
{
    int result;
    result = num1 - num2;
    return result;
}

int multiply(int num1,int num2)
{
    int result;
    result = num1 * num2;
    return result;
}

int divide(int num1,int num2)
{
    int result;
    result = num1 / num2;
    return result;
}

int main()
{
    while(flag)
    {
        cin >> type_get;

        if (type_get == "exit")
        {
            flag = 0;
        }
        else
        {
            operator_num = type_get.find_first_of(to_do);

            char array_type_get[type_get.length()];

            for (i = 0; i < type_get.length(); i++)
            {
                array_type_get[i] = type_get[i];
            }


            for (i = 0; i < operator_num; i++)
            {
                str_num1[i] = array_type_get[i];
            }

            for (i = operator_num + 1; i < sizeof(array_type_get); i++)
            {
                str_num2[i] = array_type_get[i];
            }

            num1 = atoi(str_num1.c_str());
            num2 = atoi(str_num2.c_str());

            switch (array_type_get[operator_num])
            {
                case '+' :
                    cout << "=" << add(num1,num2) << endl;
                    break;

                case '-' :
                    cout << "=" << subtract(num1,num2) << endl;
                    break;

                case '*' :
                    cout << "=" << multiply(num1,num2) << endl;
                    break;

                case '/' :
                    cout << "=" << divide(num1,num2) << endl;
                    break;

                default :
                    cout << "请输入一个运算符!" << endl;
                    break;
            }
        }
    }

    /*str_empty = type_get.string::empty;
    empty = atoi(str_empty.c_str());*/

    /*if (empty = 0)
    {
        cout << type_get.find_first_of(to_do) << endl;
    }
    else
    {
        cout << "请输入一个值!" << endl;
    }*/

    return 0;
}

测试截图:
图片说明

  • 写回答

1条回答 默认 最新

  • bostonAlen 2020-01-02 22:13
    关注

    运行崩溃,问题定位到main中第二个for循环,vs调试跟下代码,看看变量的值,数组内容。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突