zoukankan      html  css  js  c++  java
  • 练笔-字符串,向量和数组5

    1 将输入的字符串所有字转换为X

    for实现

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
    	string line;
    	getline(cin,line);
    	int i=0;
    	for (i=0;i<line.size();i++)
    	{
    		line[i]='X';
    	}
    	cout<<line<<endl;
    }
    

    while实现

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        string line;
        getline(cin,line);
        int i=0;
        while(line[i]!='')
        {
            line[i]='X';
            i++;
        }
        cout<<line<<endl;
    }

    有关C++11中涉及到的

    for(auto c : line)这样的,很多都不支持,但是可以了解一下。auto会自动判定C的类型,对于上面的字符串,C直接自动判定为char型。

    2 编写一段程序,读入一个包含标点符号的字符串,将标点符号除去后读入剩余的部分。

    首先要知道函数ispunct(C);用来判定和字符c是不是标点符号,如果是返回true,否则返回false;

    #include <iostream>
    #include <string>
    #include <cctype>
    using namespace std;
    int main()
    {
        string line;
        getline(cin,line);
        int i=0;
        for (i=0;i<line.size();i++)
        {
            if (!ispunct(line[i]))
            {
                cout<<line[i];
            }
        }
    }

    3 用cin读入一组整数,并且把他们存入一个vector对象

    #include <iostream>
    #include <vector>
    using namespace std;
    int main()
    {
        vector<int> vint;
        int i;
        char flag='y';
        while(cin>>i)
        {
            vint.push_back(i);
            cout<<"continue?"<<endl;
            cin>>flag;
            if (flag!='y'&&flag!='Y')
            {
                break;
            }
        }
        for (int j = 0; j < vint.size(); j++)
        {
            cout<<vint[j]<<endl;//在利用下标运算符访问vector元素的问题,要注意
        }
        return 0;
    }

    当vector为字符串的时候,修改上述代码

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    int main()
    {
        vector<string> vstring;
        string s;
        char flag='y';
        while(cin>>s)
        {
            vstring.push_back(s);
            cout<<"continue?"<<endl;
            cin>>flag;
            if (flag!='y'&&flag!='Y')
            {
                break;
            }
        }
        for (int j = 0; j < vstring.size(); j++)
        {
            cout<<vstring[j]<<endl;
        }
        return 0;
    }

    4 从cin输入的所有词存入vector对象,并且对输入的所有字符串改为大写。

    将字符改为大写使用toupper()函数,同样将大写改小写使用tolower()函数;

    具体这两个函数的实现在库函数中本来就有,不过可以自己动手写一下。

    // Note:Your choice is C++ IDE
    #include <iostream>
    using namespace std;
    char toupper(char c);
    char tolower(char c);
    int main()
    {
        char c;
        cout<<"输入小写字符"<<endl;
        cin>>c;
        c=toupper(c);
        cout<<c<<endl;
        char d;
        cout<<"输入大写字符"<<endl;
        cin>>d;
        d=tolower(d);
        cout<<d<<endl;
        return 0;
    }
    char toupper(char c)
    {
        if ((c>'a')&&(c<'z'))
        {
            c=c-('a'-'A');
        }
        return c;
    }
    char tolower(char c)
    {
        if ((c>'A')&&(c<'Z'))
        {
            c=c+('a'-'A');
        }
        return c;
    }

    那么现在我们来解决这个问题

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    int main()
    {
        vector<string> vstring;
        string i;
        char flag='y';
        while(cin>>i)
        {
            vstring.push_back(i);
            cout<<"continue?"<<endl;
            cin>>flag;
            if (flag!='y'&&flag!='Y')
            {
                break;
            }
        }
        for (int j = 0; j < vstring.size(); j++)
        {
            string c=vstring[j];
            for(int m=0;m<c.size();m++)
            {
                c[m]=toupper(c[m]);//注意需要赋值改变C的值,否则只是在第二个for循环内改变局部变量,除了循环就不变们不能达到大小写字母变换的效果。
            }
            cout<<c<<endl;
        }
        return 0;
    }

     5  读入一组整数,存入vector,(1)相邻的相加;(2)首尾相加;

    (1)注意for循环中的边界;

    #include <iostream>
    #include <vector> 
    using namespace std;
    int main()
    {
        vector<int> v;
        int p;
        while (cin>>p)
        {
            if (p==000)
            {
                break;
            }
            else
                v.push_back(p);
        }
        if (v.size()==0)
        {
            cout<<"the vector is empty"<<endl;
        }
        for (int i = 0; i < v.size()-1; i=i+2)
        {
            cout<<v[i]+v[i+1]<<endl;
        }
        if (v.size()%2!=0)
        {
            cout<<v[v.size()-1]<<endl;
        }
        return 0;
    }

    (2)和上面一样,要单独讨论个数为奇数的时候的情况。

     1 #include <iostream>
     2 #include <vector> 
     3 using namespace std;
     4 int main()
     5 {
     6     vector<int> v;
     7     int p;
     8     while (cin>>p)
     9     {
    10         if (p==000)
    11         {
    12             break;
    13         }
    14         else
    15             v.push_back(p);
    16     }
    17     if (v.size()==0)
    18     {
    19         cout<<"the vector is empty"<<endl;
    20     }
    21     for (int i = 0; i < v.size()/2; i=i+1)
    22     {
    23         cout<<v[i]+v[v.size()-1-i]<<endl;
    24     }
    25     if (v.size()%2!=0)
    26     {
    27         cout<<v[v.size()/2]<<endl;
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    26. Remove Duplicates from Sorted Array(js)
    25. Reverse Nodes in k-Group(js)
    24. Swap Nodes in Pairs(js)
    23. Merge k Sorted Lists(js)
    22. Generate Parentheses(js)
    21. Merge Two Sorted Lists(js)
    20. Valid Parentheses(js)
    19. Remove Nth Node From End of List(js)
    18. 4Sum(js)
    17. Letter Combinations of a Phone Number(js)
  • 原文地址:https://www.cnblogs.com/tao-alex/p/5542060.html
Copyright © 2011-2022 走看看