实验5

Posted flyingbrid-nest

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验5相关的知识,希望对你有一定的参考价值。

ex3

  • 代码补充如下

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    // 函数声明 
    void output1(vector<string> &);  
    void output2(vector<string> &); 
    int main()
    {
    vector<string>likes, dislikes; // 创建vector<string>对象likes和dislikes
    string ch,ch1;
    // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc)
    cout<<"为likes添加元素,输入-1结束"<<endl; 
    while(cin>>ch,ch!="-1")
    {
        likes.push_back(ch);
     } 
    // 补足代码 
    cout << "-----I like these-----" << endl;
    // 调用子函数输出vector<string>数组对象likes的元素值 
    output1(likes);
    // 补足代码
    // 为vector<string>数组对象dislikes添加元素值
    cout<<"为dislikes添加元素,输入-1结束"<<endl;
    while(cin>>ch1,ch1!="-1"){
        dislikes.push_back(ch1);
    } 
    // 补足代码
    cout << "-----I dislike these-----" << endl;
    // 调用子函数输出vector<string>数组对象dislikes的元素值 
    // 补足代码
    output2(dislikes);
    // 交换vector<string>对象likes和dislikes的元素值 
    // 补足代码
    likes.swap(dislikes);
    cout << "-----I likes these-----" << endl;
    // 调用子函数输出vector<string>数组对象likes的元素值 
    // 补足代码
    output1(likes);
    cout << "-----I dislikes these-----" << endl;
    // 调用子函数输出vector<string>数组对象dislikes的元素值 
    // 补足代码
    output2(dislikes);                      
    return 0;
    }
    // 函数实现 
    // 以下标方式输出vector<string>数组对象v的元素值  
    void output1(vector<string> &v) {
    // 补足程序
    // 。。。 
    for(int i=0;i<v.size();i++)
    {
        cout<<v[i]<<endl;
    }
    }
    // 函数实现
    // 以迭代器方式输出vector<string>数组对象v的元素值 
    void output2(vector<string> &v) {
    // 补足程序
    // 。。。 
    for(auto e:v)
    {
        cout<<e<<endl;
    }
    } 

    技术分享图片

习题6-17

  • 源码

    #include<iostream>
    using namespace std;
    int main(){
    int *p;//指针指向地址不明,应该赋初始地址 
    *p=9;
    cout<<"The value at p:"<<*p;
    return 0;
    } 
  • 修改

    #include<iostream>
    using namespace std;
    int main(){
        int a;
    int *p=&a;
    *p=9;
    cout<<"The value at p:"<<*p;
    return 0;
    } 

    技术分享图片

习题6-18

  • 源码

    #include<iostream>
    using namespace std;
    int fn1(){
    int *p=new int(5);//分配的内存没有释放
    return *p;
    } 
    int main()
    {
    int a=fn1();
    cout<<"The value of a is:"<<a;
    return 0;
    } 
  • 修改

    #include<iostream>
    using namespace std;
    int* fn1(){
    int *p=new int(5);
    return p;
    } 
    int main()
    {
    int *a=fn1();
    cout<<"The value of a is:"<<*a;
    delete a;
    return 0;
    } 

    技术分享图片

Matrix类

  • Matrix.h

    #ifndef MATRIX_H
    #define MATRIX_H
    class Matrix {
    public:
    Matrix(int n); // 构造函数,构造一个n*n的矩阵 
    Matrix(int n, int m); // 构造函数,构造一个n*m的矩阵 
    Matrix(const Matrix &X); // 复制构造函数,使用已有的矩阵X构造 
    ~Matrix(); //析构函数 
    void setMatrix(const float *pvalue); // 矩阵赋初值,用pvalue指向的内存块数据为矩阵赋值 
    void printMatrix() const; // 显示矩阵
    inline float &element(int i, int j)//返回矩阵第i行第j列元素的引用
    {
        float& num = p[(i - 1)*cols + j - 1];
        return num;
    }
    inline float element(int i, int j) const// 返回矩阵第i行第j列元素的值 
    {
        return p[(i - 1)*cols + j - 1];
    }
    void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value
    inline int getLines() const //返回矩阵行数 
    {
        return lines;
    }
    inline int  getCols() const //返回矩阵列数
    {
        return cols;
    }
    private:
    int lines;    // 矩阵行数
    int cols;    // 矩阵列数 
    float *p;   // 指向存放矩阵数据的内存块的首地址 
    };
    #endif
  • Matrix.cpp

    #include "matrix.h"
    #include<iostream>
    #include<vector>
    using namespace std;
    Matrix::Matrix(int n):lines(n),cols(n)
    {
    p = new float[lines*cols];
    }
    Matrix::Matrix(int n, int m) : lines(n), cols(m) {
    p = new float[lines*cols];
    }
    Matrix::Matrix(const Matrix &X) {
    lines = X.lines;
    cols = X.cols;
    p = new float[X.lines*X.cols];
    for (int i = 0; i < (X.lines*X.cols);i++)
    {
        p[i] = X.p[i];
    }
    }
    void Matrix::setMatrix(const float *pvalue) {
    for (int i = 0; i < lines*cols; i++)
    {
        p[i] = pvalue[i];
    }
    }
    void Matrix::printMatrix()const {
    for (int i = 0; i < lines; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            cout << p[i*cols + j]<<" ";
        }
        cout << endl;
    }
    }
    void Matrix::setElement(int i, int j, int value) {
    p[(i - 1)*cols + j - 1] = value;
    }
    Matrix::~Matrix()
    {
    delete[] p;
    }
  • main.cpp

    #include<iostream>
    #include"matrix.h"
    using namespace std;
    int main()
    {
    Matrix m1(5), m2(3, 4);
    float num[12], num1[25];
    for (int i = 0; i < 12; i++)
    {
        num[i] = i + 1;
    }
    for (int i = 0; i < 25; i++)
    {
        num1[i] = i + 1;
    }
    m1.setMatrix(num1);
    m2.setMatrix(num);
    cout << "矩阵m1为" << m1.getLines() << "行" << m1.getCols() << "列矩阵:"<<endl;
    m1.printMatrix();
    cout << "矩阵m2为" << m2.getLines() << "行" << m2.getCols() << "列矩阵:" << endl;
    m2.printMatrix();
    m1.setElement(1, 2, 10);
    m1.setElement(3, 4, 20);
    m2.setElement(2, 2, 22);
    m2.setElement(3, 4, 19);
    cout << "矩阵m1为" << m1.getLines() << "行" << m1.getCols() << "列矩阵:" << endl;
    m1.printMatrix();
    cout << "矩阵m2为" << m2.getLines() << "行" << m2.getCols() << "列矩阵:" << endl;
    m2.printMatrix();
    return 0;
    }

    技术分享图片

    期中

  • http://www.cnblogs.com/flyingbrid-nest/p/9010378.html

以上是关于实验5的主要内容,如果未能解决你的问题,请参考以下文章

[NTUSTISC pwn LAB 7]Return to libc实验(puts泄露libc中gadget片段定位)

VSCode自定义代码片段5——HTML元素结构

VSCode自定义代码片段5——HTML元素结构

VSCode自定义代码片段5——HTML元素结构

使用 React 实验性中继片段:缺少属性 '"$fragmentRefs"'

[NTUSTISC pwn LAB 5]rop入门实验