• 研一寒假00__char_cin输入时的问题_数组&&字符串


    #-------------------char----------------#

    #include<iostream>

    /*使用键盘输入字符时,cin将键盘输入的M转换为77,输出时,cout将77转换为M;另外c++对字符只用单引号,对字符串使用双引号 */

    int main()
    {
    using namespace std;
    char ch='M'; //'M'表示字符M的数值编码,此句就是将77赋值给ch
    int i=ch; //i=77
    cout<<"The ASCII code for "<<ch<<"is"<<i<<endl; //显示The ASCII code for M is 77

    cout<<"Add one to the character code:"<<endl;
    ch=ch+1; //将M的数值编码加1 此时为N的数值编码
    i=ch; //将N的数值编码赋值给i
    cout<<"The ASCII code for "<<ch<<"is"<<i<<endl; //显示The ASCII code for N is 78

    cout<<"Displaying char ch using cout.put(ch):";
    cout.put(ch);
    cout.put('!'); //注意以上三句显示,都没有换行,所以显示为Displaying char ch using cout.put(ch):N!

    cout<<endl<<Done<<endl;
    return 0;
    }

    #----------------------------float-------------------------------#

    #include<iostream>

    int main()
    {
    using namespace std;
    cout.setf(ios_base::fixed,ios_base::floatfield);//cout显示的时候通常会删除小数点后的0,加上cout.setf()方法即可覆盖这种行为
    //ios_base::fixed和ios_base::floatfield是通过包含iostream来提供的常量

    float tub=10.0/3.0; //float能确保7为有效数字
    double mint=10.0/3.0; //double能确保16位有效数字
    const float million=1.0e6;

    cout<<"tub = "<<tub;
    cout<<",a million tubs ="<<million*tub<<endl; //显示tub =3.333333,a million tubs =3333333.250000 乘以1百万之后,25就是随机的数字了

    cout<<"mint = "<<mint;
    cout<<",a million mints = "<<million*mints<<endl; //显示mint = 3.333333,a million mints = 3333333.333333
    //由于cout能显示6位小数,所以在没有乘一百万之前,tub和mint显示都是一样的,但是乘上一百万之后二者显示的就不一样了

    return 0;
    }

    #---------------------------cin输入时的问题-----------------------------#

    #include <iostream>

    int main()
    {
    using namespace std;
    const int ArrySize=20; //定义一个常量,不可被更改,相当于#define ArrySize 20
    char name[ArrySize]; //定义名字数组
    char dessert[ArrySize]; //定义甜点数组

    cout<<"Enter your name: ";
    cin>>name; //输入名字到name数组中
    cout<<"Enter your favorite dessert: ";
    cin<<dessert; //输入甜点到dessert数组中
    cout<<"I have some delicious "<<dessert;
    cout<<" for you, "<<name<<endl;
    return 0;
    }

    /* 由于cin以使用空白(空格 制表符和换行符)来确定字符串的结束位置,这意味着cin在获取字符数组输入的时候只能读取一个单词
    因此假如输入的名字为 Alistaire Dreeb 那么cin吧Alistaire当作第一个字符串,并保存在name数组中,把Dreeb放入输入队列中,等待
    下一个cin自动将Dreeb保存在数组dessert中,因此上面的程序只输入一次,程序便可以执行完毕 */

    /* 解决方法:每次读取一行输入get()和getline()方法 */

    //getline()方法,有两个参数,第一个是输入的字符串保存的数组名,第二个是要读取的字符数,如果第二个参数为20,那么函数最多读取19个字符
    //getline()方法以回车键作为换行符来确定输入结束,但不保存换行符,而是以空字符来替代换行符
    cin.getline(name,20);//将输入的字符保存到name数组中,最多读取19个字符,以回车键作为输入的结束

    //get()方法,可以带参数,也可以不带,带参数时候参数和getline()的参数是一样的,只不过get()方法最后输入的回车会作为换行符被留着输入队列中
    //因此如果连续两次调用get()方法,第二次调用的get()方法是都不到任何输入的字符的,因为第一个get()方法残留的换行符还被保存在输入队列中,第二个是要读取的字符数,如果第二个参数为20
    //执行到第二个get方法时,则判断为输入结束
    cin.get(name,20); //可以读到数据
    cin.get(dessert,20); //都不到数据

    //解决方法01
    cin.get(name,20); //可以读到数据
    cin.get(); //处理第一次get方法残留在输入队列中的换行符
    cin.get(dessert,20);//可以读到数据

    //解决方法02
    cin.get(name,20).get(); //之所以可以这样是因为cinget(name,20)返回一个cin对象,改cin对象随后去调用get方法
    cin.get(dessert,20).get();

    //连续两次输入
    cin.get(name,20).get(dessert,20); //可以实现连续两次输入

    //坑
    cin>>year; //输入年之后的回车键会生成换行符,并保存在输入队列中,在执行到cin.getline()时,便认为结束输入,因此在该剧下面加一句
    cin.get();//去掉上一句中由回车键生成的换行符 也可以这样;(cin>>year).get();
    cin.getline(address,80);

    #-------------------------------------数组&&字符串----------------------------#

     

    #include <iostream>
    #include <cstring> //for strlen()

    int main()
    {
    using namespace std;
    int yam[3]={10,20,30}; //定义并初始化一个包含3个整形数的数组
    float hotelTips[5]={2.0,5.5}; //部分初始化,编译器会把其余的元素设置为0
    long totals[500]={0}; //将totals数组初始化为0
    short things[]={1,5,3,8}; //也可以不说明数组元素的个个数,这件事让编译器去做

    /* 字符串(存储在数组中) */
    char dog[4]={'a','s','d','f'}; //不是字符串
    char cat[4]={'a','s','d',''}; //是字符串,字符串必须以(空字符)结尾,用cout显示的时候,遇到空字符则停止
    char fish[]="Bubbles"; //定义字符串的另一种方法,切忽略了数组元素的个数,并且自动在结尾加上了空字符*****
    char shirt_size='s'; //定义字符常量***** 's'只是83的另一种写法,而"s"是两个字符(字符s和)组成的字符串,而且"s"实际上是表示字符串所在的内存地址

    /* strlen()和sizeof()的区别 */
    int fish_strlen=strlen(fish); //strlen()是计算出fish这个数组中有多少个字母,不包括结尾的空字符
    int fish_sizeof=sizeof(fish); //sizeof()是计算出fish这个数组的长度:15字节,以字节为单位

    }

     

    2019.02.13  最近在家编辑于家23:28 haijing miss my home

  • 相关阅读:
    2-python数据分析-基于pandas的数据清洗、DataFrame的级联与合并操作
    1-2-python数据分析-DataFrame基础操作巩固-股票分析、双均线策略制定
    1-python数据分析-数据分析三剑客之Pandas基础操作
    单例模式
    装饰器模式
    适配器模式
    es通用工具类ElasticSearchUtil
    ELK+RabbitMq搭建日志系统
    redis能保证数据100%不丢失吗?
    面试官问你redis是单线程还是多线程该怎么回答?
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/10458468.html
Copyright © 2020-2023  润新知