string str;
int i = 0, counter = 0;
cin >> str;
do
{
if(str[i] >= 'A' && str[i] <= 'Z')counter++;
cout << "Yes";
i++;
}while(str[i] != '\0');
一段代码,从用户获取一个字符串,如果有任何大写,则输出一个单独的“是”,否则不输出任何大写字母。这是我的测试,我没有完全满足指令中的要求。
它可以工作,但是当我输入“HHi”时它会输出“YesYes”,当它只是“是”时。
我怎样才能确保它在找到任何数量的大写时只打印一个“是”?
答案 0 :(得分:1)
这是@ Jonathan的答案的替代答案。只需在不使用break语句的情况下即可获得相同的答案。
string str;
int i = 0, counter = 0;
cin >> str;
while(str[i] != '\0')
{
if(str[i] >= 'A' && str[i] <= 'Z')
counter++;
i++;
}
if(counter > 0)
cout << "Yes";
答案 1 :(得分:0)
您应该在if语句中输出“Yes”并立即中断while循环,例如:
string str;
int i = 0;
cin >> str;
while(str[i] != '\0')
{
if(str[i] >= 'A' && str[i] <= 'Z'){
cout << "Yes";
break;
}
i++;
}
(当输入为空字符串时,您的代码似乎会中断。)