我在学校的实验室工作。最后一个练习的目标是制作一个程序,该程序可以扫描用户输入的字符串中是否存在“大写锁定综合症”(即以小写字母开头并全部为大写字母的单词,例如 tHIS)。这是我到目前为止所得到的:
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
string s("");
int len;
do
{
cout<<"Enter a string. I will check it for \"caps-lock syndrome\"\n";
getline(cin, s);
cout<<endl;
cout<<s<<"\n\n";
len = s.length();
for(int i=0; i<len; i++){
if(islower(s[i])){
for(int j=i+1; j<len; j++){
if(isupper(s[j])){
cout<<s[j];
}
}
}
}
} while(!s.empty());
return 0;
}
应该发生的情况是,当用户输入像“cAPS lOCK is on”这样的字符串时,结果输出应该是:cAPS lOCK
然后循环回到程序的开头。我现在遇到的问题是我无法打印完整的单词(只有大写字符),并且无法像我想要的那样将每个单词打印到自己的行中。
以下是可能对您有所帮助的代码:
string the_string = "hELLO hOW aRE yOU";
vector<string>v;
string new_string = "";
for (int i = 0; i < the_string.length(); i++)
{
if (the_string[i] != ' ')
{
new_string += the_string[i];
}
else
{
v.push_back(new_string);
new_string = "";
}
}
//Now, the string vector is loaded
for(int i = 0; i < v.size(); i++)
{
if (islower(v[i][0]))
{
int counter = 0;
for (int b = 1; b < v[i].length(); b++)
{
if (isupper(v[i][b]))
{
counter += 1;
}
}
if (counter == v[i].length()-1)
{
cout << v[i]<< " has caps lock syndrome"<< endl;
}
else
{
cout << v[i] << " does not have caps lock syndrome"<< endl;
}
}
else
{
cout << v[i]<< " does not have caps lock syndrome"<< endl;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句