zoukankan      html  css  js  c++  java
  • c++_计算输入的空格数和字符总数_逻辑运算符_数字的读取(输入字母或符号不接收)_简单文本文件的输入和输出(具体的去解释了cin面对不同的数据类型,到底是怎么去接收数据的)

    /* 计算输入的空格数和字符总数 */

    //用cin.get(char)来获取输入,如果用cin会自动忽略输入的
    //#include <iostream>
    //
    //void main()
    //{
      // using namespace std;
      // char ch,zero; //定义接收输入字符的变量
      // int spaces = 0; //定义计算空格数的变量
      // int total = 0; //定义计算字符总数的变量
      // cout << "以点结尾,请输入一个字符串:";
      // cin.get(ch); //假如输入的是一个句子,那么会一个字符一个字符的接收,剩余的保存在输入流中
      // while (ch != '.') //判断ch是否为点,即判断是否到了一个句子的结尾,因为定义了以点为输入的结尾
      // {
        // if (ch == ' ') //判断如果ch等于空格
              // spaces++; //计算空格数
        // total++; //计算字符总数
        // cin.get(ch); //刚刚少了这一句,也就无法继续去接收剩余输入流中的字符,导致程序无法执行
      // }
      // cout << endl<< "空格数为:" << spaces << endl;
      // cout << "总的字符数为:" << total << endl;
      // cin >> zero; //防止DOS闪退
    //}

    /* 逻辑运算符 */
    /*
    01)逻辑或OR(||)
    02)逻辑与AND(&&) while(a && b) 如果a表达式是错误的,则c++不会再去判断b表达式是否正确
    02)逻辑非NOT(!)
    03)逻辑OR和逻辑AND运算符的优先级都低于关系运算符,这意味着下面的表达式将会被解释为
      x >5 && x<10; 被解释为:(x >5) && (x<10);
    04)!运算符的优先级高于所有的关系运算符和算术运算符,因此要对表达式取反,必须用括号括起来,即:
      !(x>5); //表示对x>5这个表达式取反
      !x>5; //表示先对x取反,然后判断是否大于5

    */

    /* 数字的读取(输入字母或符号不接收) */

     1 #include <iostream>
     2 const int Max = 5; //定义常量Max
     3 void main()
     4 {
     5       using namespace std;
     6       //get data
     7       int golf[Max];
     8       cout << "Please enter your golf score." << endl;
     9       cout << "You must enter " << Max << " rounds" << endl;
    10       for (int i = 0; i < Max; i++)
    11       {
    12         cout << "round #" << i + 1 << ":"; //例如第一轮显示 round #1: 后输入得分
    13         while (!(cin >> golf[i])) //由于数组golf是int型数组,如果输入的是数字,cin>>golf[i]会返回true,并将该数字加入数组中
    14         {           //如果输入的是字母或符号,cin>>golf[i]会返回false,且不会将输入的字母或符号放入数组中
    15           cin.clear(); //如果输入了字母或符号,那么cin流中就会设置一个错误标志(failbit被置1)
    16                 //cin.clear()就是让failbit位置为0,使cin可以正常使用
    17           while (cin.get() != '
    ') //假如输入的是123abc456,cin>>golf[i]会一个一个的接收,把123存入前三个位置还是没错的,
    18             continue; //但是当轮到输入流中的a输入到数组时,就会执行cin.clear(),由于此时还没有执行到换行符,
    19                   //那么继续去判断输入流中的东西是否为数字,如果不是,那么继续去执行cin.clear(),并判断是否
    20                   //到了输入流中的换行符(回车),如果没有,那么继续去判断输入流中的东西是否为数字,一直循环
    21                   //直到遇到了换行符,那么去执行cout << "Please enter a number:";
    22           cout << "Please enter a number:";
    23         }
    24       }
    25       //计算平均得分
    26       double total = 0.0;
    27       for (int i = 0; i < Max; i++)
    28         total = total + golf[i]; //将golf数组中的数字全部加起来
    29       //打印结果
    30       cout << "平均得分为:" << total / Max << endl;
    31 }
    c++接收输入时输入错误的处理方法


    //运行总结:假如输入123abd12,那么程序会认为输入的第一个数字是123,并且将123赋到数组中的第一个位置上
    //将abd12认为是一个字母或符号,全部都忽略过去,并直接判断书最后一个就是换行符,
    //即while (cin.get() != ' ')下的continue不会被执行

    /* 简单文本文件的输入和输出 */  *************
    /*
    01)使用cin进行输入时,程序将输入是为一系列的字节,其中每个字节都被解释为字符编码。不管目标数据类型是什么
    输入一开始都是字符数据---文本数据。然后cin对象负责将文本文件转换为其他类型。
    */

    #include <iostream>
    void main()
    {
      using namespace std;
      //char ch1;
      //* char 如果输入38.2 19.5
      //cin >> ch1; //输入行中的第一个字符被赋给ch1,在这里第一个字符是数字3,其字符编码(二进制)被存储在ch1中
            //输入和目标变量都是字符,因此不需要进行转换,这里存储的是3字符3的编码
            //输入队列中的下一个字符是字符8,下一个输入操作(cin)将对其进行处理
      //cout << ch1; //此时只打印3

      //* int 如果输入38.2 19.5
      //int ch2;
      //cin >> ch2; //在这时,cin将不断读取,直到遇到非数字字符,这样句点将成为输入队列中的下一个字符。
            // //cin通过计算发现,这两个的字符为对应数字38,因此将38的二进制编码赋值到变量ch2中
      //cout << ch2; //打印38

      //* double 如果输入38.2 19.5
      //double ch3;
      //cin >> ch3; //在这时,cin将不断读取,直到遇到第一个不属于浮点数的字符。即cin读取3、8、句点和5,
            // //使空格成为输入队列中下一个字符。cin通过计算发现,着四个字符对应输值38.5。
            // //因此将38.5的二进制编码(浮点格式)复制到变量ch3中
      //cout << ch3<<endl; //打印38.2

      //* char数组 如果输入38.2 19.5
      //char ch4[50];
      //cin >> ch4; //在这时,cin将不断读取,直到遇到空白字符。即cin读取3、8、句点和5,
            // //使空格成为输入队列中下一个字符。然后cin将这四个字符的字符编码存储到数组ch4中,并在末尾加上一个空字符。
            // //这里不需要进行任何转换
      //cout << ch4<<endl; //打印38.2

      //* 另一种使用char数组来存储输入 如果输入38.2 19.5
      //char ch5[50];
      //cin.getline(ch5, 50); //在这时,cin将不断读取,直到遇到换行符。所有字符都被存储到数组ch5中,并在末尾加上一个空字符
                // //换行符被丢弃,输入队列中的下一个字符是下一行中的第一个字符。这里不需要进行任何转换
                //cout << ch5 << endl; //打印38.2 19.5
      //system("pause"); //按下任意键退出DOS
    }

  • 相关阅读:
    设置按钮取消高亮
    类似刷新微博后,顶部显示更新数量的动画。
    真机调试时,后台无法持续定位
    第六百三十三、四天 how can I 坚持
    第六百三十二天 how can I 坚持
    第六百三十一天 how can I 坚持
    第六百三十天 how can I 坚持
    第六百二十九天 how can I 坚持
    第六百二十八天 how can I 坚持
    第六百二十七天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/10494027.html
Copyright © 2011-2022 走看看