我想在输入的字符串中打印驼峰字符的数量,为什么我的代码输出错误?

问题描述 投票:0回答:2

问题链接:-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

c++ string stl
2个回答
0
投票

在将整数值输入为t之后,在输入缓冲区中保留换行符。因此,第一次调用getline会为您提供空字符串。您必须执行:

int t;
cin >> t;
cin.ignore();
while (t--) {
  ...
}

消耗换行符,然后两次调用getline将正确返回输入的字符串。


0
投票

主要问题是您试图在第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;
}


© www.soinside.com 2019 - 2024. All rights reserved.