zoukankan      html  css  js  c++  java
  • C++ Primer5 练习5.12:编程统计含有两个连续字符(ff、fl、fi)的字符序列的数量

    一个字符只被统计一次。

    #include<iostream>
    using namespace std;
    int main(){
    	unsigned int ffCnt = 0, flCnt = 0, fiCnt = 0;
    	char ch, prech = ''; // 创建char类型字符ch,prech,其中prech被初始化为''
    	cout << "请输入一段文本:" << endl;
    	while (cin >> ch){	// 接收用户的输入,直到遇到换行后的ctrl+z		
    		bool bl = true; // 开始分析用户的输入,首先将bl置为true
    		if (prech == 'f')  // 如果prech=='f',进入下面的语句块,判断第二个字符是啥;显然,第一次prech=='',所以不会进入的
    		{
    			switch (ch){
    			case 'f': // 如果第二个字符是'f',那么ffCnt数量加1,同时bl设置成false
    				++ffCnt;
    				bl = false;
    				break;
    			case 'l': // 如果第二个字符是'l',那么flCnt数量加1
    				++flCnt;
    				break;
    			case 'i': // 如果第二个字符是'i',那么fiCnt数量加1
    				++fiCnt;
    				break;
    			}
    		}
    		if (!bl){ // 此处判断bl的真假,如果为假,让prech='';如果为真,让prech=当前的字符ch
    			prech = '';
    		}
    		else{
    			prech = ch;
    		}
    	}
    	cout << "ff的数量是:" << ffCnt << endl;
    	cout << "fl的数量是:" << flCnt << endl;
    	cout << "fi的数量是:" << fiCnt << endl;
    	system("pause");
    	return 0;
    }
    

    ch:当前输入的字符。

    prech:记录上一个字符ch。初始化为’’,根据bl决定更新为哪个值。如果bl==false,说明上一个字符和当前字符都是’f’,置为’’;如果bl为true,置为ch。

    bl:未重复出现两个’f’标志,标志位为true,则说明确实没有重复出现两个f,如果标志位为false,说明重复出现了两个f。每次都初始化为true;若上一个值prech是’f’,当前值ch又是’f’,连续出现两个’f’,置为false。

  • 相关阅读:
    Dynamic Language Runtime 微软打出的王牌
    微软发布IronRuby
    点亮Web的灯silverlight
    Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR
    奚江华的几篇Silverlight文章
    Microsoft 的 OpenSource Licence
    CPython 和IronPython的基准测试
    Mobile上的Silverlight
    Switcher Vista Areo 工具
    ASP.NET AJAX 控件开发基础
  • 原文地址:https://www.cnblogs.com/dindin1995/p/13059132.html
Copyright © 2011-2022 走看看