这个计算器为什么运行出来一直都是1

    double shu[100],jieguo=0.0;
    char fuhao[100];
    for(int i=0;;i++)//输入表达式,分别存入数【100】和
    {

- 

        cin>>shu[i];
        cin>>fuhao[i];
        if(fuhao[i]=='=')break;
    }
    for(int j=0;j<=i;j++)//幂次方运算
    {
        if(fuhao[j]='^')
        {
            double f=1;
            for(int ii=0;ii<shu[j+1];ii++)
                f=f*shu[j];
            shu[j+1]=f;
            shu[j]=1;
            fuhao[j]='*';
    }
    }
    //乘除运算
    for(j=0;j<=i;j++)
    {
        if(fuhao[j]=='*')
        {
            jieguo=shu[j]*shu[j+1];
            shu[j+1]=jieguo;
            shu[j]=0;
            if(j>=1&&fuhao[j-1]=='-')fuhao[j]='-';
            else fuhao[j]='+';
    }
        else if(fuhao[j]='/')
        {
            if(shu[j+1]==0)
            {
                cout<<"除数不能为0";
                break;
            }
            else
            {
                jieguo=shu[j]/shu[j+1];
                shu[j+1]=jieguo;
                shu[j]=0;
                   if(j>=1&&fuhao[j-1]=='-')fuhao[j]='-';
                   else fuhao[j]='+';
            }
        }
}
    //加减运算
    for(int k=0;k<=i;k++)
    {
        if(fuhao[k]=='+')
        {
            jieguo=shu[k]+shu[k+1];
            shu[k]=shu[k+1]=jieguo;
            fuhao[k]='0';
        }
        else if(fuhao[k]=='-')
        {
        jieguo=shu[k]-shu[k+1];
        shu[k]=shu[k+1]=jieguo;
        fuhao[k]='0';    
        }
        if(k==i)return jieguo;
    }
}
C语言





#include <iostream>
using namespace std;

double calculateExpression()
{
    double shu[100];
    char fuhao[100];
    int i;
    
    for (i = 0;; i++) // 输入表达式,分别存入数【100】和符号
    {
        cin >> shu[i];
        cin >> fuhao[i];
        if (fuhao[i] == '=') break;
    }

    // 幂次方运算
    for (int j = 0; j <= i; j++)
    {
        if (fuhao[j] == '^')
        {
            double f = 1;
            for (int ii = 0; ii < shu[j + 1]; ii++)
                f = f * shu[j];
            shu[j + 1] = f;
            shu[j] = 1;
            fuhao[j] = '*';
        }
    }

    // 乘除运算
    for (int j = 0; j <= i; j++)
    {
        if (fuhao[j] == '*')
        {
            double jieguo = shu[j] * shu[j + 1];
            shu[j + 1] = jieguo;
            shu[j] = 0;
            if (j >= 1 && fuhao[j - 1] == '-')
                fuhao[j] = '-';
            else
                fuhao[j] = '+';
        }
        else if (fuhao[j] == '/')
        {
            if (shu[j + 1] == 0)
            {
                cout << "除数不能为0";
                break;
            }
            else
            {
                double jieguo = shu[j] / shu[j + 1];
                shu[j + 1] = jieguo;
                shu[j] = 0;
                if (j >= 1 && fuhao[j - 1] == '-')
                    fuhao[j] = '-';
                else
                    fuhao[j] = '+';
            }
        }
    }

    // 加减运算
    double jieguo = 0.0;
    for (int k = 0; k <= i; k++)
    {
        if (fuhao[k] == '+')
        {
            jieguo = shu[k] + shu[k + 1];
            shu[k] = shu[k + 1] = jieguo;
            fuhao[k] = '0';
        }
        else if (fuhao[k] == '-')
        {
            jieguo = shu[k] - shu[k + 1];
            shu[k] = shu[k + 1] = jieguo;
            fuhao[k] = '0';
        }
        if (k == i) return jieguo;
    }

    return 0.0; // 返回默认值,表示计算错误
}

int main()
{
    double result = calculateExpression();
    cout << "计算结果: " << result << endl;

    return 0;
}

else if(fuhao[j]='/')

else if(fuhao[j]=='/') 类似的错误仔细找找吧
比如
if(fuhao[j]='^')

问题出在以下这句判断语句上:

if(fuhao[j]='^')

这里使用了赋值运算符(=),而不是相等比较运算符(==)。因此,条件判断始终为真,导致shu[j+1]被错误地计算为shu[j]的连乘结果。

要解决这个问题,您需要将条件判断语句修改为:

if(fuhao[j]=='^')

请注意,这里使用的是双等号(==)进行相等比较。

另外,你的代码中存在其他一些逻辑问题,可以尝试参考我提供的一些修复后的代码作为参考:

#include <iostream>
using namespace std;

double calculateResult() {
    double shu[100], jieguo = 0.0;
    char fuhao[100];
    int i;

    for (i = 0;; i++) {
        cin >> shu[i];
        cin >> fuhao[i];
        if (fuhao[i] == '=') {
            break;
        }
    }

    for (int j = 0; j < i; j++) {
        if (fuhao[j] == '^') {
            double f = 1;
            for (int ii = 0; ii < shu[j + 1]; ii++) {
                f = f * shu[j];
            }
            shu[j + 1] = f;
            shu[j] = 1;
            fuhao[j] = '*';
        }
    }

    for (int j = 0; j < i; j++) {
        if (fuhao[j] == '*') {
            jieguo = shu[j] * shu[j + 1];
            shu[j + 1] = jieguo;
            shu[j] = 0;
            if (j >= 1 && fuhao[j - 1] == '-') {
                fuhao[j] = '-';
            } else {
                fuhao[j] = '+';
            }
        } else if (fuhao[j] == '/') {
            if (shu[j + 1] == 0) {
                cout << "除数不能为0";
                break;
            } else {
                jieguo = shu[j] / shu[j + 1];
                shu[j + 1] = jieguo;
                shu[j] = 0;
                if (j >= 1 && fuhao[j - 1] == '-') {
                    fuhao[j] = '-';
                } else {
                    fuhao[j] = '+';
                }
            }
        }
    }

    jieguo = shu[0];
    for (int k = 1; k < i; k++) {
        if (fuhao[k] == '+') {
            jieguo += shu[k];
        } else if (fuhao[k] == '-') {
            jieguo -= shu[k];
        }
    }

    return jieguo;
}

int main() {
    double result = calculateResult();
    cout << "结果:" << result << endl;

    return 0;
}

请注意,这只是对你提供的代码的一些修复,并不意味着它是完全正确的或没有其他潜在的问题。建议对代码进行编译运行仔细测试和验证。