zoukankan      html  css  js  c++  java
  • 第三章

    3.2

    getline(cin,s);
        cin>>s;

    3.3

    string类的输入运算符 碰到空白符会终止当前输入 ,而getline会将空白字符当做普通字符输入

    3.4

    string s,s2;
        cin>>s>>s2;
        if(s>=s2)
            cout<<s<<endl;
        else{
            cout<<s2<<endl;
        }

    3.5

        string s,s1;
        while(cin>>s){
            s1+=(s+" ");
        }
        cout<<s1<<endl;

     3.6

    string s="ceshi";
        for(auto&c:s){
            c='x';
        }    
        cout<<s<<endl;

    3.7

    没有影响

    3.8

    三者实现的结果一样,while循环和for循环需要知道字符串的长度,而范围不需要

    3.9

    不正确,会产生未定义的行为,发生越界

    3.10

    string s="dada.dafd,dds";
        for(auto&c:s){
            if(!ispunct(c))
                cout<<c;
        }

    3.11

    不合法,当在循环中要改变c得值时,c的类型为const string&

    3.12

    1.正确 2.类型不符 3.正确

    3.13

    1.0 2.10个元素 值为0 3.10个元素 值为42 4.1一元素,值为10 5.2个元素, 6.10个元素  7.10个元素 为hi

    3.14

    vector<int> temp;
        int i;
        while(cin>>i){
            temp.push_back(i);
        }

    3.15

    vector<string> temp;
        string i;
        while(cin>>i){
            temp.push_back(i);
        }

    3.16

    vector<string>v{10,"hi"};
        for(auto &s:v){
            cout<<s;
        }
        for(int i=0;i<v.size();i++)
            cout<<v[i];

    3.17

    string s;
        vector<string>v;
        while(cin>>s){
            
            for(auto&c:s)
                c=toupper(c);
            v.push_back(s);
        }
        
        for(auto i:v)
            cout<<i<<endl;
             //toupper
            

     3.18

    不合法,不能直接用下标给对象赋值,可能会访问未被定义的值,造成严重后果,

    改用push_back();//该用法会引发一个内在的隐藏函数,扩大容器内存。

    3.19

    vector<int>v(10,42);
        vector<int>v1
        for(i=0;i<10;i++)
            v1.push_back(42);

    3.20

    vector<int>svec;
        int i;
        while(cin>>i){
            svec.push_back(i);
        }
        for(int i;i<svec.size()-1;i++){
            cout<<(svec[i]+svec[i+1])<<endl;
        }
    vector<int>svec;
        int i;
        while(cin>>i){
            svec.push_back(i);
        }
        for(int i;i<svec.size()-1;i++){
            cout<<(svec[i]+svec[svec.size()-1-i])<<endl;
        }

     3.21

    vector<string>svec{10,"hi"};
        vector<string>::iterator it;
        it = svec.begin();
        for(it = svec.begin();it!=svec.end();it++)
            cout<<*it;

    3.23

    vector<int>svec(10,1);
        vector<int>::iterator it;
        it = svec.begin();
        for(it = svec.begin();it!=svec.end();it++)
        {
            *it=(*it)*2;
            cout<<*it;
            
        }

    3.24

    vector<int>svec{1,2,2,4,5};
        vector<int>::iterator it;
        it = svec.begin();
        for(it = svec.begin();(it+1)!=svec.end();it++)
        {
            
            cout<<(*it+*(it+1))<<" ";
            
        }
        cout<<"size is"<<svec.size()<<endl;
        for(it = svec.begin();it!=svec.end();it++)
        {
            
            
            cout<<(*it+*(svec.begin()+(svec.size()-1+svec.begin()-it)))<<"   "<<endl;
            cout<<*it<<" "<<*(it+(svec.size()-1+svec.begin()-it))<<"it-begin is"<<it-svec.begin()<<endl;
            
        }

    3.26

    beg加上end与beg之间的偏移量还是迭代器。而(beg+end) 两个迭代器之和是不被允许的。我们只能用减法和表示两个迭代器之间的偏移量

    3.27

    1.存在越界索引,缓冲区溢出错误

    2.下标越界

    3.31

    太简单,跳过

    3.32

    跳过

    3.33

    会产生未定义的错误

    3.34

    类似于p1=p2

    3.35

    int*p=a;
        for(int i=0;i<10;i++)
            *(p+i)=0;

    3.36

    int compareArray(void*a,void*b,size_t len)
    {
            
        int flag=0;
        char*p1=static_cast<char*>(a);
        char*p2=static_cast<char*>(b);
        while(len--){
            if(*p1==*p2){
                flag++;
                p1++;
                p2++;
            }
            else{
                return -1;
            }
        }
        return 1;
    }

     3.37

    定义char字符数组。 用cp指针指向数组,并输出

    3.38

    指针保存的是地址。两个地址相加会产生无法定义的行为

    3.39

    //了解c风格字符串与string的区别 如何比较c风格字符串

    比较c风格字符串需要用到strcmp函数

    3.40

    char ca[]={'h','e','l'};
        char ba[]={'h','e'};
        char da[100];
        strcat(ca,ba);
        strcpy(da,ca);

    3.41

    int int_arr[]={0,1,2,3,4,5};
        vector<int>ivec(begin(int_arr),end(int_arr));

    3.42

    跳过

    3.43-3.45

    三个题的方法是一样的。关键知识点有需要把多维数组理解为指针的指针。

    理解下标在其中的作用

  • 相关阅读:
    在画图时添加中文
    legend图例
    数组的拼接
    将多维数组改为一维数组
    ChinaCock扫描控件介绍-使用TCCBarcodeScanner引起app闪退
    ChinaCock打印控件介绍-TCCFujitsuPrinter实现蓝牙针式打印
    用NetHttpClient执行Post操作遇到的问题
    【转】FireMonkey ListView 自动计算行高
    基于MQTT的串口数据转发器
    kbmMW均衡负载与容灾(1)
  • 原文地址:https://www.cnblogs.com/Zero-0/p/12764837.html
Copyright © 2011-2022 走看看