实验5
Posted haruna
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 // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) // 补足代码 // 。。。 likes.push_back("la la land"); likes.push_back("princess principle"); cout << "-----I like these-----" << endl; // 调用子函数输出vector<string>数组对象likes的元素值 // 补足代码 // 。。。 output1(likes); // 为vector<string>数组对象dislikes添加元素值 // 补足代码 // 。。。 dislikes.push_back("hop"); dislikes.push_back("football"); cout << "-----I dislike these-----" << endl; // 调用子函数输出vector<string>数组对象dislikes的元素值 // 补足代码 // 。。。 output1(dislikes); // 交换vector<string>对象likes和dislikes的元素值 // 补足代码 // 。。。 swap(likes,dislikes); cout << "-----I likes these-----" << endl; // 调用子函数输出vector<string>数组对象likes的元素值 // 补足代码 // 。。。 output2(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]<<" "; cout<<endl; } // 函数实现 // 以迭代器方式输出vector<string>数组对象v的元素值 void output2(vector<string> &v) { // 补足程序 // 。。。 vector<string>::iterator it; for(it=v.begin();it!=v.end();++it){ cout<<*it<<" "; cout<<endl; } }
6-17
#include<iostream> using namespace std; int main(){ int *p; //int a,*p=a;P作为指针,在指向目标前本身没有被分配内存空间。 *p=9; //*p=9; cout<<"The value at p:"<<*p; return 0; }
6-18
#include<iostream> using namespace std; int fnl(){ int *p=new int (5); return *p; } int main(){ int a=fnl(); cout<<"the value of a is:"<<a; return 0; } //能力有限,看不出问题,好像本身就能运行。
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 &r=p[(i-1)*cols+j-1]; return r; } inline float element(int i, int j) const// 返回矩阵第i行第j列元素的值 { float r=p[(i-1)*cols+j-1]; return r; } 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<iostream> #include "matrix.h" 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(X.p){} Matrix::~Matrix() { delete p; } void Matrix::setMatrix(const float *pvalue) { for(int i=0;i<lines;i++) { for(int j=0;j<cols;j++) p[i*cols+j]=pvalue[i*cols+j]; } } 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*1.0; }
main.cpp
#include <iostream> #include "matrix.h" using namespace std; int main() { Matrix A(3); Matrix C(2,3); float const touch[9]= {1,2,3, 4,5,6, 2,2,1,}; A.setMatrix(touch); A.printMatrix(); Matrix B(A); cout<<A.element(2,3)<<endl; A.element(2,3)=4; cout<<A.element(2,3)<<endl; A.setElement(2,3,2); cout<<A.element(2,3)<<endl; cout<<A.getLines()<<endl; cout<<C.getCols()<<endl; return 0; }
以上是关于实验5的主要内容,如果未能解决你的问题,请参考以下文章
[NTUSTISC pwn LAB 7]Return to libc实验(puts泄露libc中gadget片段定位)