zoukankan      html  css  js  c++  java
  • 005.字符串输入与字符统计

    1.数字成绩输出为字母等级

    //美国大学的分数制
    
    //例子:假设数字成绩的范围是从0到100,其中100分对应的字母形式是“A++”,低于60分的成绩对应的字母形式是“F”。
    //其他成绩每10个划分一组:60到69(包括69在内)对应字母“D”,70到79对应字母“C”,依此类推。
    
    //--------if-else语句嵌套-------------//
    
    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        const vector<string> scores = { "F","D","C","B","A","A++" };
        string lettergrade; //字母成绩
        unsigned int grade = 0;
        cout << "请输入成绩:";
        cin >> grade;
    
        if (grade < 60)
            lettergrade = scores[0];
        else
        {
            lettergrade = scores[(grade - 50) / 10]; //C++代码的精简
            //新需求:
            //给那些合格的成绩后面添加一个加号或减号。如果成绩的末位是8或9,添加一个加号;
            //如果末位是0,1或2,添加一个减号
            if (grade % 10 > 7)
            {
                lettergrade += "+";
            }
            else if (grade % 10 < 4)
            {
                lettergrade += "-";
            }
        }
    
        cout << "你的成绩是:" << lettergrade << endl;
    
        return 0;
    }

    2.特定字母和空格等统计

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        char s;
        unsigned int vowelCnt = 0;
        unsigned int spaceCnt = 0;
        unsigned int tabCnt = 0;
        unsigned int newlineCnt = 0;
        //注意,此时不能使用cin,因为cin会自动忽略空格
    
        //cin.get(ch):输入一个字符(含空格)
        //getline(cin,string):输入一行文本(保留空格)
    
        while (cin.get(s))
        {
            switch (s)
            {
                //小写字母
    
    //if(s=='a'||s=='i'||s=='o'||s=='u'||s=='e')
        //++vowelCnt;
    
            case 'a':
            case 'i':
            case 'o':
            case 'u':
            case 'e':
                //大写字母
            case 'A':
            case 'I':
            case 'O':
            case 'U':
            case 'E':
                ++vowelCnt;
                break;
    
                //newline (左斜杠),换行符
            case '
    ':
                ++newlineCnt;
                break;
    
                //space,空间
            case ' ':
                ++spaceCnt;
                break;
    
                //tab (左斜杠),制表符
            case '	':
                ++tabCnt;
                break;
    
            default:
                break;
            }
        }
    
        cout << "元音字母的个数:" << vowelCnt << endl;
        cout << "空格数量:" << spaceCnt << endl;
        cout << "换行符数量:" << newlineCnt << endl;
        cout << "制表符数量:" << tabCnt << endl;
    
        return 0;
    }

    3.含空格字符串的输入

    //统计以下含有两个字符的字符序列的数量:ff,fi,fl
    
    //首先思考一个问题:ffififffl,统计方式的确定
    //ffi,计算为一个“ff+i”,还是“ff+fi”(中间的f复用),也就是能否重复计数的问题
    
    
    
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        string s;
        unsigned int ffCnt = 0;
        unsigned int fiCnt = 0;
        unsigned int flCnt = 0;
    
        //注意,此时不能只是简单使用cin,因为cin会自动忽略空格
        cout << "请输入一个字符序列,可包含空格:" << endl;
    getline(cin, s);
    //输入完成,enter执行
    for (auto beg = s.cbegin(), end = s.cend(); beg != (end - 1); ++beg) { ////---------------假定不可重复计数----------// // if (*beg == 'f') // { // //beg如果指向f,则会有+2,此时属于不重复计数 // switch (*(++beg)) { // case 'f': // ++ffCnt; // break; // case 'i': // ++fiCnt; // break; // case 'l': // ++flCnt; // break; // default: // break; // } // } ///////////----------假定可重复计数--------//////////// if (*beg == 'f') { auto p = beg + 1; //多分支的case语句 switch (*p) { case 'f': ++ffCnt; break; case 'i': ++fiCnt; break; case 'l': ++flCnt; break; default: break; } } } //cin.get(ch):输入一个字符(含空格) //getline(cin,string):输入一行文本(保留空格) cout << "ff数量:" << ffCnt << endl; cout << "fi数量:" << fiCnt << endl; cout << "fl数量:" << flCnt << endl; return 0; }

    参考资料:

    1.《C++ Primer》中文版(第五版),Stanley B.Lippman等著,电子工业出版社

    2.《C++ Primer》习题集(第五版),Stanley B.Lippman等著,电子工业出版社

  • 相关阅读:
    EJB3.0
    EJB
    到底EJB是什么
    EJB到底是什么,真的那么神秘吗??
    ssh和ejb的区别
    struts2的一些小问题
    Struts2中ValueStack结构和总结
    Java 监听器
    浅谈cookie 和session 的区别
    理解Cookie和Session机制
  • 原文地址:https://www.cnblogs.com/paulprayer/p/10060692.html
Copyright © 2011-2022 走看看