这道题看起来真是道水题,可是有很多坑:
首先如果定义string来处理输入,是无法一次性输入全部的字符串的,因为输入字符串碰到空格会自动终止输入,当初学C语言的时候老师可是专门强调过的哈,看我第一版的代码:
int main(){
string s;
cin>>s;
int n = 0;
for(int i=s.size()-1;i>=0;i--){
if(s[i]==' ')
break;
else
n++;
}
cout<<n<<endl;
return 0;
}
挂掉之后我意识到了这个问题,改成char来处理,这样同样会出现上述问题:
int main(){
char a[5001];
cin>>a;
int n = 0;
int i;
for(i=5000;i>=0;i--){
if(a[i]!='\0')
break;
}
i--;
for(;i>=0;i--){
if(a[i]!=' ')
n++;
}
cout<<n<<endl;
return 0;
}
一时想不起来(太垃圾了),只好看评论区:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
vector<string> v;
string s;
while(cin>>s){
v.push_back(s);
}
cout<<v[v.size()-1].size()<<endl;
return 0;
}
呵呵呵,用个vector<string>就解决了,用while(cin<<s)来处理输入的问题!
这让我突然想到了,当年刷PAT乙级的时候有一模一样的题目!!!!
这就很尴尬了……无地自容