一道C++题目

每次读取一个单词,知道用户输入q。然后,输出多少个元音开头单词,多少个辅音开头,多少个其他开头单词。(#include<cctype>)... 每次读取一个单词,知道用户输入q。然后,输出多少个元音开头单词,多少个辅音开头,多少个其他开头单词。(#include <cctype>) 展开
 我来答
匿名用户
2012-05-22
展开全部
#include <iostream>
#include <string>
#include <cctype>

int main()
{
using namespace std;

int other = 0;
int vowel = 0;
int consonant = 0;
int sum = 0;
string ch;

cout << "请输入单词(直到输入‘q’退出):\n";
while ( ( cin >> ch ) && ( ch != "q" ) )
{
if ( isalpha( ch[0]) ) // 判断是否为字母
{
switch ( ch[0] )
{
case 'A':
case 'a': ++vowel;
break;
case 'E':
case 'e': ++vowel;
break;
case 'I':
case 'i': ++vowel;
break;
case 'O':
case 'o': ++vowel;
break;
case 'U':
case 'u': ++vowel;
break;
default: ++consonant;
break;
}
++sum;
}
else
{
++other;
}
}

cout << "一共 " << sum << " 个单词。\n";
cout << "以元音打头的单词有 " << vowel << " 个。\n";
cout << "以辅音打头的单词有 " << consonant << " 个。\n";

if ( other > 0 )
{
cout << "其他类型有 " << other << " 个。\n";
}
else
{
cout << "没有其他类型。\n";
}
}
追问
1.我怎么觉得sum是总共有多少个字母?

2..#include 用或者不用isalpha()语句都可以使用,为什么?
追答
一、英文单词是以空格间隔,因此使用 cin >>  的特点——读取缓冲区字符,直到遇到空格或回车才停止。
++sum 放在 if 语句内是因为需要判断单词的第一个字母是否为字母,如果是字母才能算是单词。当然这里只是简单的判断。

二、不是不需要,而是跟编译器有关,有的编译器它会默认包含一些头文件。或者有些头文件内包含有 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式