UVA1585 得分 Score

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是一樣沒問題的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章