• 001.输入不定的情况


    1.连续输入多个整型数据

    循环语句while和for:

    • while循环:
      1. 输入不定的情况下,使用while循环比较合适,在windows系统下,先敲Ctrl+Z,再按Enter ——适用于整型输入结束;
      2. 对于非整型数据(如字符串数据)的连续输入,则需要使用第二部分内容的方式;
    • for循环:
      1. 当输入确定的情况下,使用for语句比较方法,while也可以;
      2. 对于需要遍历容器或其他序列的所有元素,可以使用C++提供的范围for语句
        //范围for语句——示例
        vector<int> v = {0,1,2,3,4,5,6,7,8,,9};
        //范围变量必需是引用类型,这样才能对元素执行写操作
        for (auto &r : v){
        r *= 2; //将v中元素值翻倍
        }  
    /*数量不定的输入数据(整型)*/

    //示例:
    实现对用户输入的一组数求和 //文件结束符: //windows系统:先敲Ctrl+Z,再按Enter ——适用于整型输入结束 #include <iostream> using namespace std; int main() { int sum = 0, val = 0; //iostream对象作为条件 /*当遇到“文件结束符(end-of-file)”,或者遇到一个无效输入时,isteam对象的状态会变为无效*/ //处于无效状态的istram对象会使条件变为假 while (cin >> val) //敲Ctrl+Z,再按Enter结束输入 { sum += val; } cout << "Sum is " << sum << endl; return 0; }

    2.连续输入多个字符串

    //文件结束符:
    //windows系统:先敲Ctrl+Z,再按Enter
    
    #include <iostream>
    
    //编写一段程序从标准输入中读入多个字符串并将它们连接在一起
    //用空格把输入的多个字符串分割开,输出连接成的大字符串(只是中间需要隔开,第一个不需要,多一个if)
    
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        string s, result; //result用来保存最终的结果
    
        char cont = 'y';  //与用户交互,cont用于判断是否继续收入
    
        cout << "请输入第一个字符串:" << endl;
        while (cin >> s)
        {
            //if (result.size()==0)//判断读入的是第一个字符串,不加空格
            if (!result.size())//推测,这样执行效率更高
            {
                result += s;
            }
            else
                //之后拼接的字符串每一个前面都加空格
            {
                result = result + " " + s;
            }
    
            cout << "是否继续输入?(y or n?):" << endl; //判断是否继续输入
            cin >> cont;
    
            if (cont == 'y' || cont == 'Y')
            {
                cout << "请输入下一个字符串:" << endl;
            }
            else
            {
                break;
            }
        }
        cout << "最终结果为" << result << endl;
    
        return 0;
    }

    3.复用实例:医学统计小程序

    //连续不定输入的改写范例
    
    //如果要更严谨,还可以加入每个数据的输入范围的判断
    
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        //HE:HepaticEncephalopathy 肝性脑病
        int HE_num = 0;
        //Asc:ascites 腹腔积液
        int Asc_num = 0;
        //Alb:albumin 白蛋白
        int Alb_num = 0;
        //PT:PT延长
        int PT_num = 0;
        //STB:serum total bilirubin 血清总胆红素
        int STB_num = 0;
        //统计总分
        int sum = 0;
    
        char cont = 'y'; //s是否继续输入
    
        while (1){
    
        cout << "肝性脑病(1代表无,2代表1-2级,3代表3-4级):" << endl;
        cin >> HE_num;
    
        cout << "腹腔积液(1代表无,2代表少量,3代表中大量):" << endl;
        cin >> Asc_num;
    
        cout << "白蛋白(1代表>35,2代表28~35,3代表<28):" << endl;
        cin >> Alb_num;
    
        cout << "PT延长(1代表<4,2代表4~6,3代表>6):" << endl;
        cin >> PT_num;
    
        cout << "血清总胆红素(1代表<34,2代表34~51,3代表>51):" << endl;
        cin >> STB_num;
    
        sum = HE_num + Asc_num + Alb_num + PT_num + STB_num;
    
        //空两行
        cout << endl;
        cout << endl;
    
        if (sum == 5 || sum == 6)
            cout << "结果为:A";
        else if(sum >= 7 && sum <= 9)
            cout << "结果为:B";
        else if (sum >= 10 && sum <= 15)
            cout << "结果为:C";
        else
            cout << "结果有误,请检查是否正确输入!";
    
        //空两行
        cout << endl;
        cout << endl;
    
        cout << "是否继续输入?(y or n?):"; //判断是否继续输入
        cin >> cont;
        if (cont == 'y' || cont == 'Y')
        {
            cout << "请继续下一轮输入与统计:" << endl;
        }
        else
        {
            break;
        }
    }
        return 0;
    
    }

    参考资料:

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

  • 相关阅读:
    EF CORE EntityFrameworkCore中关系模式一对一、一对多、多对多的使用
    C# LINQ中Join与GroupJoin的区别
    C#中HttpWebRequest、WebClient、HttpClient的使用
    .Net 性能优化--EFCore(EntityFrameworkCore)
    .Net 性能优化--缓存--分布式缓存
    .Net 性能优化--缓存--http缓存
    .Net 性能优化--缓存--分布式缓存 --sqlserver缓存
    .Net 性能优化--缓存--分布式缓存--reids缓存
    获取Kafka每个分区最新Offset的几种方法
    Wireshark使用入门
  • 原文地址:https://www.cnblogs.com/paulprayer/p/9979166.html
Copyright © 2020-2023  润新知