问题链接:-https://practice.geeksforgeeks.org/problems/find-the-camel/0
我的代码:-
#include <iostream>
#include<cstring>
using namespace std;
int main() {
int t;cin>>t;
while(t--)
{
int res=0;
string str;
getline(cin,str);
int len= str.length();
for(int i=0;i<len;i++)
{
int c=str[i];
if(isupper(c))
res=res+1;
}
cout<<res<<endl;
}
//return 0;
}
输入:
2
ckjkUUYII
HKJT
我的输出:
0
5
正确的输出应该是:
5
4
在将整数值输入为t
之后,在输入缓冲区中保留换行符。因此,第一次调用getline
会为您提供空字符串。您必须执行:
int t;
cin >> t;
cin.ignore();
while (t--) {
...
}
消耗换行符,然后两次调用getline将正确返回输入的字符串。
主要问题是您试图在第15行中将字符转换为整数。整数不能为大写或小写。因此,它给出了错误的答案。只需检查isupper(s [i]),因为它会给出正确的答案。
考虑我的代码,
#include <bits/stdc++.h>
using namespace std ;
int main() {
int t ; cin >> t ;
while(t--) {
string s ; cin >> s ;
int cnt = 0 , ln = s.size() ;
for(int i = 0 ; i < ln ; i ++) {
if(isupper(s[i])) cnt ++ ;
}
cout << cnt << endl ;
}
return 0;
}