问题标题: 酷町堂:2716

0
0
已解决
王俊杰
王俊杰
高级光能
高级光能

2716   大写字母的个数经验值:0

题目描述 Description

输入两行字符串,由大写字母、小写字母和空格组成,请你分别统计两个字符串中的大写字母的个数,并输出。

输入描述 Input Description

两行:每行一个字符串,每个字符串的长度不超过50

输出描述 Output Description

两行:每行一个整数,分别表示两个字符串中的大写字母的个数。

样例输入 Sample Input

uT YB

样例输出 Sample Output

1 2

错误代码0分:

#include<iostream>
#include<string>
using namespace std;
int main(){
    string a,b;
    int cnt1=0,cnt2=0;
    cin>>a>>b;
    for(int i=0;i<=a.size()-1;i++){
        if(a[i]>='A'&&a[i]<='Z'){
            cnt1++;
        }
        if(b[i]>='A'&&b[i]<='Z'){
            cnt2++;
        }
    }
    cout<<cnt1<<endl<<cnt2;
    return 0;
}

请大佬找错


0
0
0
刘英杰
刘英杰
新手天翼
新手天翼

首先,我先引用一下你的代码

#include<iostream>
#include<string>
using namespace std;
int main(){
    string a,b;
    int cnt1=0,cnt2=0;
    cin>>a>>b;
    for(int i=0;i<=a.size()-1;i++){
        if(a[i]>='A'&&a[i]<='Z'){
            cnt1++;
        }
        if(b[i]>='A'&&b[i]<='Z'){
            cnt2++;
        }
    }
    cout<<cnt1<<endl<<cnt2;
    return 0;
}

在这段代码中,显然你两个if判断里缺少空格

而且,一个非常重要的问题是,a串和b串的长度显然不一样

这道题你需要分别使用两个for循环,每个循环单独控制cnt变量

这样,不会因为两个字符串长度不同而拿不到分

0
0
曹砚青
曹砚青
中级光能
中级光能

将cin>>a>>b;

改成getline(cin,a);

getline(cin,b);

就OK了

曹砚青在2020-07-05 22:03:56追加了内容

还有,a和b要分开遍历

eg;

曹砚青在2020-07-05 22:04:19追加了内容

还有,a和b要分开遍历

eg;

曹砚青在2020-07-05 22:05:23追加了内容

我要回答