一道C++题目
每次读取一个单词,知道用户输入q。然后,输出多少个元音开头单词,多少个辅音开头,多少个其他开头单词。(#include<cctype>)...
每次读取一个单词,知道用户输入q。然后,输出多少个元音开头单词,多少个辅音开头,多少个其他开头单词。(#include <cctype>)
展开
1个回答
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";
}
}
#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 语句内是因为需要判断单词的第一个字母是否为字母,如果是字母才能算是单词。当然这里只是简单的判断。
二、不是不需要,而是跟编译器有关,有的编译器它会默认包含一些头文件。或者有些头文件内包含有 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询