我有以下代码(s1和s2是堆栈)。如果字符是运算符,则存储在堆栈s2中;如果字符是从0到9的数字,则存储在s1中。
int ch;
ch = getchar();
while((ch=getchar())!='\n')
{
print("%d\n", ch);
if(ch>47 && ch<58)
{
push((int)ch - (int)'0', &s1);
}
else
{
push(ch, &s2);
}
}问题是,如果输入是"+12“,则打印1和2的ASCII代码,但不打印'+‘运算符的ASCII代码。
但如果输入为"++12“,则打印其中一个'+‘的ASCII码,然后打印1和2的ASCII码。
那么这段代码到底是如何工作的呢?
发布于 2020-03-06 01:44:36
您在while循环之前执行了一个初始getchar()调用,因此总是遗漏了第一个输入。
试着删除它,它应该可以工作!
https://stackoverflow.com/questions/60551210
复制相似问题