C++容器数组课后题(部分)

3.14 编写一段程序用cin读入一组整数并将它们存入一个vector对象中。

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> num;   //定义int类型对象
    int a[100];      //定义数组
    int n;
    cout << "请输入数组的大小:\n";
    cin >> n;
    for (int i = 0; i< n; i++)
    {

        cin >> a[i];    //输入数组内容
        num.push_back(a[i]);  // 将数组内容放到num尾端
    }
    for (int i = 0; i < n; i++)
        cout << num[i] << "  "; //输出

    return 0;
}

3.15 改写上题读入字符串

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    vector<string> str_v; // 定义空串
    string str;
    cin >> str;
    str_v.push_back(str); // str字符串放入str_v对象尾部
    for (int i=0; i < str_v.size(); i++)
    {
        cout << str_v[i];
    }
    return 0;
}

3.17从cin读入一组词并把它们存入到vector对象,然后设法把所有词都改为大写并输出;

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    vector<string> str_v;
    string str;
    getline(cin,str); // 可以输入带有空格的字符串函数
//  cin >> str;
    str_v.push_back(str);   // 存入

    for (int i = 0; i < str_v.size(); i++)
    {
        for (int j = 0; j < str_v[i].size(); j++)  // 注意是双循环
        str_v[i][j] = toupper(str_v[i][j]);     // toupper的操作对象是单个字符

        cout << str_v[i];
    }

    return 0;
}

3.19:定义一个含有10个元素的vector对象,所有元素的值都是42,请列举三种方法:

vector<int> v1 = (10,42);
vector<int> v2 = {42,42,42......};
vector<int> v3 = v1;        

3.20输如一组数将第一个和最后一个的和输出,第二个和倒数第二个,以此类推

#include <iostream>
#include <vector>v      
#include <string>
using namespace std;
int main()
{
    vector<int> int_v;  // 初始化 有10个元素初始化为0
    int arr[20];
    int n;
    cin >> n; 
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
        int_v.push_back(arr[i]);
    }
    int sum[10];
    for (int i = 0; i < n; i++)
    {
        sum[i] = int_v[i] + int_v[n-i-1];
        cout << sum[i] << "\t";
        i++;
    }

    return 0;
}

3.21:用迭代器输入输出;

    #include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
    vector<string> str_v;
    string str;
    getline(cin, str);
    str_v.push_back(str);  // 和vector一样 就是循环输入时用的不一样
    for (auto i = str_v.begin(); i != str_v.end(); i++) // 
    {
        cout << *i << endl;
    }
    return 0;
}

输入数字:

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
    int n;
    cout << "请输入要存意判断其是否为空 的数的个数:";
    cin >> n ;
    vector<int> num_v;
    int num[20];
    for (int i = 0; i != n; i++)
    {
        cin >> num[i];
        num_v.push_back(num[i]);
    }
    for (auto it = num_v.cbegin(); it != num_v.cend(); it++) // 
    {
        cout << *it << endl;
    }
    return 0;
}

3.23创建一个含有10个数字的vector对象,用迭代器将其变为原来的二倍并输出;

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int>num;
    int arr[10];
    for (int i = 0; i < 10; i++)
    {
        cin >> arr[i];
        num.push_back(arr[i]);
    }
    for (auto it = num.begin(); it != num.end(); it++)
    {
        *it += *it;
        cout << *it << "  ";
    }
    return 0;
}
/*int main()   //两种方法
{
    vector<int>num(10,0);  //容器对象初始化

    for (auto it = num.begin(); it != num.end(); it++)
    {
        cin >> *it;
        *it = *it + *it;
        cout << *it << " ";
    }
    return 0;
}
*/

3.24 输入10个数

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    vector<int> num(10,0);
    for (auto it = num.begin(); it != num.end(); it++)
    {
        cin >> *it; 
    }

    // it指向开始元素的位置,e_d 指向结束元素的下一位置
    for (auto it = num.begin(), e_d = num.end(); it != num.end(); it++)
    {
        e_d--;
    //  cin >> *it;
        *it += *e_d;
        cout << *it<< " ";
        it++;
        e_d--;
    }
    return 0;
}

数组

3.35 编写一段程序,利用指针将数组的元素置为0

    #include <iostream>
#include <vector>
using namespace std;
int main()
{
    int a[10];   // begin(a) 首元素的地址,end(a)尾元素的下一位置地址
    for (auto i = begin(a); i!= end(a); i++)  // 也可以用下标
    {
        cin >> *i;  // 赋值
        cout << *i << "  ";      
    }
    cout << "\n";
    int *p = a;
    for (int j = 0; j < 10; j++)
    {
        *p = 0;
        cout << a[j] << " ";  //修改为0
        p++;
    }
    return 0;
}

3.36 比较两个数组是否相等(比较简单),(2)比较两个vector是否相等

    #include <iostream>
#include <vector>
using namespace std;
int main()
{
    int a[5] ={0};
    int b[5] ={0};
    for (int i = 0; i < 5; i++)
    {
        cin >> a[i];
    }
    for (int j = 0; j < 5; j++)
    {
        cin >> b[j];
    }
    int t = 0;
    for (int i = 0; i < 5; i++)
    {
        if (a[i] == b[i])
        {
            t++;
        }
    }
    if (t == 5)
        cout << "两个数组相等\n";
    else
        cout << "两数组不相等\n";

}
vector比较  和基本数组差不多

    #include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> a(10,0);
    vector<int> b(10,0);

    for (auto i = a.begin(); i != a.end(); i++)  // 也可以用int i = 0;
    {
        cin >> *i;
    }
    for (int j = 0; j < 10; j++)
    {
        cin >> b[j];
    }
    int t = 0;
    for (int i = 0; i < 10; i++)
    {
        if (a[i] == b[i])
        {
            t++;
        }
    }
    if (t == 5)
        cout << "两个数组相等\n";
    else
        cout << "两数组不相等\n";
    return 0;
}

3.39 分别用c++和c比较两个字符串
//当长度不同时比较首字母大小

   #include <iostream>
#include <string>
#include <cstring>
using namespace std;

int main()
{
    string str1("hello wold");   // 用c++比较
    string str2("sello C");
    if (str1 == str2)
        cout << "str1 = str2\n";
    else if (str1 > str2)
        cout << "str1 > str2\n";
    else
        cout << "str1 < str2\n";

    char str_c1[] = "hello world";   // 用c比较
    char str_c2[] = "sello c";
    auto result = strcmp(str_c1,str_c2);
    if (result == 0)
        cout << "str_c1 = str_c2\n";
    else if (result > 0)
        cout << "str_c1 > str_c2\n";
    else
        cout << "str_c1 < str_c2\n";
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值