C++ primer5 5.9/5.10/5.11/5.12

使用一系列if语句统计从cin读入的元音字母个数(小写)

//5.9
#include <iostream>
using namespace std;
int main()
{
	unsigned sum_a=0, sum_e=0, sum_i=0, sum_o=0, sum_u=0; //无符号,即非负的
	//char ch;
	//while(cin >> ch) //不断从键盘输入,知道遇到ctrl+Z
	for(char ch; cin>>ch; )
	{
		if(ch == 'a')
		   sum_a++;
		else if(ch == 'e')
		   sum_e++;
		else if(ch == 'i')
		   sum_i++;
		else if(ch == 'o')
		   sum_o++;
		else if(ch == 'u')
		   sum_u++;
	}
	cout << "number of a: \t" << sum_a << '\n'          //\t代表一个制表符
	     << "number of e: \t" << sum_e << '\n'
		 << "number of i: \t" << sum_i << '\n'
		 << "number of o: \t" << sum_o << '\n'
		 << "number of u: \t" << sum_u << '\n' << endl; //'\n'和endl都代表换行,endl多了一个刷新缓冲区
	
	system("pause");
    return 0;
}

既能统计大写也能统计小写

//5.10
#include <iostream>
using namespace std;
int main()
{
	unsigned sum_a=0, sum_e=0, sum_i=0, sum_o=0, sum_u=0; //无符号,即非负的
	//char ch;
	//while(cin >> ch) //不断从键盘输入,知道遇到ctrl+Z
	for(char ch; cin>>ch; )
	{
		switch(ch)
		{
			case 'a':
			case 'A':
			   sum_a++;  //满意'a'或'A'中任意一个都会执行下面的++操作并退出
			   break;
			case 'e':
			case 'E':
			   sum_e++;
			   break;
			case 'i':
			case 'I':
			   sum_i++;
			   break;
			case 'o':
			case 'O':
			   sum_o++;
			   break;
			case 'u':
			case 'U':
			   sum_u++;
			   break;   
		}
	}
	cout << "number of a/A: \t" << sum_a << '\n'          //\t代表一个制表符
	     << "number of e/E: \t" << sum_e << '\n'
		 << "number of i/I: \t" << sum_i << '\n'
		 << "number of o/O: \t" << sum_o << '\n'
		 << "number of u/U: \t" << sum_u << '\n' << endl; //'\n'和endl都代表换行,endl多了一个刷新缓冲区
		 
	system("pause");
    return 0;
}

统计空格、制表符、换行符的个数

//5.11
#include <iostream>
using namespace std;
int main()
{
	unsigned sum_space=0, sum_table=0, sum_newline=0; //无符号,即非负的
	//char ch;
	//while(cin >> std::noskipws >> ch) //不断从键盘输入,知道遇到ctrl+Z
	for(char ch; cin>>std::noskipws>>ch; )
	{   //此处的std::noskipws表示的是不忽略任何地方的空白(包括制表符和空格等),必须使用
		switch(ch)
		{
			case ' ':
			   sum_space++;   //空格
			   break;
			case '\t':
			   sum_table++;   //制表符
			   break;
			case '\n':
			   sum_newline++;  //换行
			   break; 
		}
	}
	cout << "number of space: \t" << sum_space << '\n'          //\t代表一个制表符
	     << "number of table: \t" << sum_table << '\n'
		 << "number of newline: \t" << sum_newline << '\n' << endl; //'\n'和endl都代表换行,endl多了一个刷新缓冲区
	
	system("pause");
    return 0;
}

统计一下字符序列的个数:ff、fl、fi

//5.12
#include <iostream>
using namespace std;
int main()
{
	unsigned sum_ff=0, sum_fl=0, sum_fi=0; //无符号,即非负的
	char prech = '\0'; 计算机中的0值表示的为'\0',可防止它的初始值(随机的)碰巧是某个字符的值
	//char ch;
	//while(cin >> std::noskipws >> ch) //不断从键盘输入,知道遇到ctrl+Z
	for(char ch; cin>>std::noskipws>>ch; )
	{   //此处的std::noskipws表示的是不忽略任何地方的空白(包括制表符和空格等),必须使用
		switch(ch)
		{
			case 'f':
			   if(prech == 'f')
			      sum_ff++;   //字符序列ff
			   break;
			case 'l':
			   if(prech == 'f')
			      sum_fl++;   //字符序列fl
			   break;
			case 'i':
			   if(prech == 'f')
			      sum_fi++;  //字符序列fi
			   break; 
		}
		prech = ch; //将当前的字符赋给prech,作为下次判断的依据。
		//如果下次判断中prech为f字符,那么只要再判断当前字符是否为f、l、i即可
	}
	cout << "number of ff: \t" << sum_ff << '\n'          //\t代表一个制表符
	     << "number of fl: \t" << sum_fl << '\n'
		 << "number of fi: \t" << sum_fi << '\n' << endl; //'\n'和endl都代表换行,endl多了一个刷新缓冲区
	
	system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值