问题标题: 酷町堂:5581 统计个数

0
0
已解决
李宜和
李宜和
高级启示者
高级启示者

5581   统计个数(count)

经验值:400 时间限制:1000毫秒

包河区2020年信息学竞赛试题

不许抄袭,一旦发现,直接清空经验!

题目描述 Description

给定一行英语句子,请你统计其中包含的元音字母(包括大写和小写)的个数,并输出。元音字母指: a, e, i, o, u.

输入描述 Input Description

一行,为给定的英语句子。

输出描述 Output Description

一行,一个整数,表示句子中包含的元音字母的个数。

样例输入 Sample Input

Don’t give up and don't give in.

样例输出 Sample Output

9

数据范围及提示 Data Size & Hint

说明:
这句话一共包含9个元音字母。
数据范围:
1个字符<=句子的长度<=3000个字符

 

错误代码

#include<bits/stdc++.h>
using namespace std;
string a[1000000];
long long cnt,i=1;
int main(){
    while(a[i]!="!"||a[i]!="?"||a[i]!="."){
        cin>>a[i];
        if(a[i]=="a"||a[i]=="A"||a[i]=="e"||a[i]=="E"||a[i]=="i"||a[i]=="I"||a[i]=="o"||a[i]=="O"||a[i]=="u"||a[i]=="U"){
            cnt++;
        }
        i++;
    }
    cout<<cnt;
    return 0;
}
死循环。。。


1
已采纳
潘艺博
潘艺博
初级天翼
初级天翼

用for循环

for(int i=0;i<s.size();i++)

里面的判断和你的一样,cnt也要++

注意!

输入时要用getline(cin,s)//以防字符串中间有空格!

望采纳!

潘艺博在2021-07-31 11:44:52追加了内容

getline是一种输入字符串的方法,是以防输入的字符串中有空格或换行

普及一下:当要先输入数字时,要写两遍getline

潘艺博在2021-07-31 11:46:35追加了内容

上个追答加一句:第一遍getline是抵消的,没用

潘艺博在2021-07-31 11:49:28追加了内容

不用定义数组,for循环直接写:

for(int i=0;i<s.size();i++){

    if(s[i]==......){//s[i]:字符串里的每个字母

        cnt++;

    }

}

潘艺博在2021-07-31 11:51:23追加了内容

最后输出即可AC

0
0
朱小川
朱小川
缔造者
缔造者

为什么我100分

但没有提交记录

0
王文博
王文博
缔造者之神
缔造者之神

核心:

for(int i=0;i<a.size();i++)
    {
        if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'||a[i]=='A'||a[i]=='E'||a[i]=='I'||a[i]=='O'||a[i]=='U') cnt++;
    }
    cout<<cnt;

a要getline输入,cnt定义为全局变量

0
李宜和
李宜和
高级启示者
高级启示者

@潘艺博 

@王文博 

#include<bits/stdc++.h>
using namespace std;
string a[100000];
long long cnt;
int main(){
    for(int i=0;i<a[i].size();i++){
        getline(cin,a[i]);
        if(a[i]=="a"||a[i]=="A"||a[i]=="e"||a[i]=="E"||a[i]=="i"||a[i]=="I"||a[i]=="o"||a[i]=="O"||a[i]=="u"||a[i]=="U"){
            cnt++;
        }
    }
    cout<<cnt;
    return 0;
}

哪错了??

循环不执行

0
王文博
王文博
缔造者之神
缔造者之神

把循环里面的getline放到外面来,另外定义改为string a;即可。

0
潘艺博
潘艺博
初级天翼
初级天翼

所以是先输入,再开始for循环统计:

getline(cin,s);

for(int i=0;i<s.size;i++)

......

0
李宜和
李宜和
高级启示者
高级启示者

不对啊?????????、

#include<bits/stdc++.h>
using namespace std;
string a;
long long cnt;
int main(){
    getline(cin,a);
    for(int i=0;i<a.size();i++){
        if(a=="a"||a=="A"||a=="e"||a=="E"||a=="i"||a=="I"||a=="o"||a=="O"||a=="u"||a=="U"){
            cnt+=1;
        }
    }
    cout<<cnt;
    return 0;
}

@王文博 

@潘艺博 

 

0
王文博
王文博
缔造者之神
缔造者之神

是字符,不是字符串(if判断中)

a=='a'||a=='A'

王文博在2021-08-01 12:29:46追加了内容

是a[i]

我要回答