0
這裏t
是我將測試用例的數量作爲輸入的變量。輸入1時,它只是打印一個新行並終止。當給出一個超過1的數字時,它將打印一個新行然後詢問新的輸入。有人可以告訴我爲什麼?爲什麼不接受輸入我的程序在測試用例數爲1時打印新行?
#include "iostream"
#include "string"
using namespace std;
int main()
{
int t,i,k,l,j=0;
char c;
string s, s2;
cin >> t;
while(t>0)
{
cout << "Enter Name - " << endl;
getline (cin,s);
l = s.size();
s2 = toupper(s[0]);
for(i=1; i<l; i++)
{
if(s[i] == ' ')
{
c = toupper(s[i+1]);
s2 = s2 + ". " + c;
j = i;
}
if(i == l-1)
{
if(j!=0)
{
for(k=j+2; k<l; k++)
{
c = tolower(s[k]);
s2 = s2 + c;
}
}
else
{
for(k=1; k<l; k++)
{
c = tolower(s[k]);
s2 = s2 + c;
}
}
}
}
cout << s2 << endl;
s2 = ""; j=0; t--;
}
return 0;
}
輸出 -
[email protected] /media/puku/Data/Work/Programs/C++ Mine/CodeChef/Easy $ ./a.out
1
Enter Name -
[email protected] /media/puku/Data/Work/Programs/C++ Mine/CodeChef/Easy $ ./a.out
3
Enter Name -
Enter Name -
my name
M. Name
Enter Name -
this is name
T. I. Name
一個解決方案是在調用getline()之前添加'while(cin.peek()=='\ n')cin.get();'行。這會從輸入流中清除換行符。 – jodag