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 = '\0'; // 创建char类型字符ch,prech,其中prech被初始化为'\0'
    cout << "请输入一段文本:" << endl;
    while (cin >> ch){    // 接收用户的输入,直到遇到换行后的ctrl+z       
        bool bl = true; // 开始分析用户的输入,首先将bl置为true
        if (prech == 'f')  // 如果prech=='f',进入下面的语句块,判断第二个字符是啥;显然,第一次prech=='\0',所以不会进入的
        {
            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='\0';如果为真,让prech=当前的字符ch
            prech = '\0';
        }
        else{
            prech = ch;
        }
    }
    cout << "ff的数量是:" << ffCnt << endl;
    cout << "fl的数量是:" << flCnt << endl;
    cout << "fi的数量是:" << fiCnt << endl;
    system("pause");
    return 0;
}

ch:当前输入的字符。

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

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

原文链接: https://www.cnblogs.com/dindin1995/p/13059132.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/332458

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午6:30
下一篇 2023年3月1日 下午6:32

相关推荐