欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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是一样没问题的!