UVA1585 得分 Score
程序员文章站
2024-03-20 09:46:22
...
https://www.luogu.org/problem/UVA1585
这道题倒没什么,毕竟是入门题
只是教会了我一些输入的问题。
// luogu-judger-enable-o2
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
string s;
int t,len,score,f1,f2;
int main()
{
cin>>t;
while(t--)
{
f1=score=0;
cin>>s;
len=s.size();
for(int i=0;i<len;i++)
{
if(s[i]=='O')
{
f1+=1;
score+=f1;
}
else
{
f1=0;
}
}
printf("%d\n",score);
}
}
上面是AC代码。
但是把第15行用gets就会出现一点问题(不加修改),第一次的输入会直接略过。这是怎么回事呢?
scanf函数,空格和换行能分割数据的输入,但scanf并不会吃掉他们,空格和换行还会留在缓冲区,直到有东西吃掉它们。这时候gets就会吃掉第一次的换行,所以第一次的输入就这么没了,但是cin跟scanf其实是一样的,所以在第十五行用cin和scanf是一样没问题的!
上一篇: 师兄帮帮忙 UVa12412 一个简单的成绩查询问题
下一篇: 递归形式的二分查找