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