返回信息流附件(807B) 1108.cpp
最近在准备复试刷九度oj,求问下面注释的地方为何会如此,求不吐槽iostream和stdio混用。。。
#include <stdio.h>
#include <stack>
#include <iostream>
using namespace std;
stack<int> zhan;
int main()
{
int n,dd;
char tmp;
while(scanf("%d",&n))
{
if(n==0) break;
while(!zhan.empty())
{
zhan.pop();
}
for(int i=0;i<n;i++)
{
cin>>tmp;//当换成scanf("%c",&tmp);输入两次后就会跳出for循环,而明明要循环n次才对
if(tmp=='P')
{
cin>>dd;
zhan.push(dd);
}
else if(tmp=='O' && !zhan.empty())
{
zhan.pop();
}
else if(tmp=='A')
{
(!zhan.empty())?cout<<zhan.top()<<endl : cout<<"E"<<endl;
}
}
cout<<endl;
}
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #90375同步于 2016/3/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求问一个输入的bug
jaegerstar
2016/3/1镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
1108
http://ac.jobdu.com/problem.php?pid=1108
【 在 chenxiansf 的大作中提到: 】
: 哪题啊
我看了看我的提交记录,有点印象了。感觉题目的确有问题,输入读取字符的话会出问题。你把输入改成读取字符串就行了,一行一个字符串,然后处理字符串第一个字符就行了
【 在 jaegerstar 的大作中提到: 】
: 1108
: http://ac.jobdu.com/problem.php?pid=1108
但在本地测试也是不行的。为何不能处理一个字符这是我困惑的地方。
【 在 chenxiansf (影自南飞) 的大作中提到: 】
: 我看了看我的提交记录,有点印象了。感觉题目的确有问题,输入读取字符的话会出问题。你把输入改成读取字符串就行了,一行一个字符串,然后处理字符串第一个字符就行了
本地测试可以的啊。你那不行是不是没处理中间的空格或者行尾符啊
【 在 jaegerstar 的大作中提到: 】
: 但在本地测试也是不行的。为何不能处理一个字符这是我困惑的地方。
确实,漏了处理空格,而且也如你所说oj上用字符串就行,字符不行
【 在 chenxiansf 的大作中提到: 】
: 本地测试可以的啊。你那不行是不是没处理中间的空格或者行尾符啊
scanf 遇到回车,空格和tab键会自动结束输入,但是回车,空格和tab键仍会留在输入的缓冲区中。所以你每次输入的回车或者空格实际是被tmp吸收。所以在scanf语句下面增加getchar()吸收。试试看行不行。
嗯后面我也注意到了,但我无论在第二个scanf的%c前面加了个空格来吸收回车,或者加个getchar也还是过不了oj
【 在 shanshanpt 的大作中提到: 】
: 你的代码中有两处scanf