C++ 代码优化:用 C++ 修改并完善算术表达式解析代码

以下是修改后的代码:

#include <iostream>
#include <cstring>
using namespace std;

void E();
void T();
void F();

char exp[50];        //算术表达式区
int i = 0;           //当前字符位置
char w;              //当前字符

int main()
{
    cout << "请输入表达式:";
    cin >> exp;
    w = exp[i++];     //读取第一个字符
    E();
    if (w == '\0')    //如果已到达字符串结尾
        cout << "表达式合法!" << endl;
    else
        cout << "表达式不合法!" << endl;
    return 0;
}

void E()
{
    T();
    while (w == '+' || w == '-')
    {
        w = exp[i++];   //读取下一个字符
        T();
    }
}

void T()
{
    F();
    while (w == '*' || w == '/')
    {
        w = exp[i++];   //读取下一个字符
        F();
    }
}

void F()
{
    if (w == '(')
    {
        w = exp[i++];   //读取下一个字符
        E();
        if (w != ')')
        {
            cout << "表达式不合法!" << endl;
        }
        else
            w = exp[i++];   //读取下一个字符
    }
    else if ((w >= 'a' && w <= 'p') || (w >= '0' && w <= '9'))
    {
        w = exp[i++];   //读取下一个字符
    }
    else
    {
        cout << "表达式不合法!" << endl;
    }
}

修改说明:

  1. printf 改为 cout,将 scanf 改为 cin
  2. 在主函数中判断是否已到达字符串结尾,如果未到达则表达式不合法。
  3. char* argv[] 参数删除,因为未使用。
  4. 在主函数中去掉 argc 参数,因为未使用。
  5. main 函数的返回类型改为 int
  6. 在头文件中添加 <cstring>,以使用字符串相关函数。
C++ 代码优化:用 C++ 修改并完善算术表达式解析代码

原文地址: https://www.cveoy.top/t/topic/oafT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录