gpt4 book ai didi

c - 为什么我的逆波兰表示法输出错误的输出

转载 作者:行者123 更新时间:2023-11-30 19:05:26 25 4
gpt4 key购买 nike

我有以下程序:

#include <stdio.h>

char input;
int X;
int buffer[16];
int i = 0;
int y = 0;
int tmp;
int tmp_va;
int output = 0;
int power[5] = {10000,1000,100,10,0};


int main()
{
L1:
input = getchar();



if(input == 0x0A){
putchar(0x0A);

if(buffer[i] > 0){
i++;

}
buffer[i] = X;

tmp = 0;
}



else if(input == 0x2B){
putchar(0x2B);
putchar(0x0A);
X = buffer[i] + X;
buffer[i] = 0;


tmp = X;
y = 0;
L2:
output = 0;

tmp = tmp - power[y];
output++;
L3:
if(tmp >= power[y]){
goto L3;
}
if(tmp < X){
output = output + 0x30;
putchar(output);
}
y++;
if(power[y] > 0){
goto L2;
}


if(tmp >= 0){
tmp = tmp + 0x30;
putchar(tmp);
}

tmp = 0;


if(i > 0){
i--;
}
}

else{
putchar(input);
if(tmp == 0){
X = input - 0x30;
}
else{
tmp_va = X;
X = X << 3;
tmp_va = tmp_va << 1;
X = X + tmp_va;
X = X + input - 0x30;
}
tmp = 1;
}if (input != EOF){
goto L1;
}

}

它做了它应该做的事情,那就是它应该以逆波兰表示法添加数字。但是,当我输入方程式时,它总是输出

111

而不是正确答案。它再次输出输入是故意的。

顺便说一句,我知道它有 goto 循环,这是一个要求。我将非常感谢任何帮助

它应该工作的方式是:例如,您输入

您输入:3
它输出 3
您输入4+
它输出 4+
它输出 7
它的作用:

您输入:3
它输出 3
您输入4+
它输出 4+
它输出 1111

所以看起来像这样
3
3
4+
4+
7

但它确实做到了
3
3
4+
4+
第1111章

最佳答案

问题可能是这样的

char input;

请注意getchar返回 int您可能会遇到 EOF 的问题或值 > 127

尝试

int input;

关于c - 为什么我的逆波兰表示法输出错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49829568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com