c++第五次实验报告

#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
    likes = { "favorite book, music, film, paintings,anime,sport,sportsman,etc" };
    cout << "-----I like these-----" << endl;
    output1(likes);
    dislikes = { "running, studying, etc" };
    cout << "-----I dislike these-----" << endl;
    output1(dislikes);
    swap(likes, dislikes);
    cout << "-----I likes these-----" << endl;
    output2(likes);
    cout << "-----I dislikes these-----" << endl;
    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) {
    vector<string>::iterator itr = v.begin();
    for (itr; itr != v.end(); itr++)
        cout << *itr << endl;
}

二.1.

#include<iostream>
using namespace std;
int main() {
    int *p;//指针为初始化
    *p = 9;//未初始化后直接使用
    cout << *p << endl;
    return 0;
}

应该改为

#include<iostream>
using namespace std;
int main() {
    int *p=new int(9);//指针初始化
    cout << *p << endl;
delete p;
return 0; }

2.

#include<iostream>
using namespace std;
int fn1() {
    int *p = new int(5);//为指针p申请内存,函数中并未释放指针p的内存
    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);//为指针p申请内存
    delete p;//若是在此处释放,则导致没法返回指针p指向的值,程序运行出错
    return *p;
}
int main() {
    int a = fn1();
    cout << "the value of a is: " << a;
    return 0;
}

所以应该改为

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

三.

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; // 显示矩阵
    float &element(int i, int j); //返回矩阵第i行第j列元素的引用
    float element(int i, int j) const;// 返回矩阵第i行第j列元素的值 
    void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value
    int getLines() const; //返回矩阵行数 
    int  getCols() const; //返回矩阵列数 
private:
    int lines;    // 矩阵行数
    int cols;      // 矩阵列数 
    float *p;   // 指向存放矩阵数据的内存块的首地址 
};
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    float*pvalue = new float[n*n];
    for (int i = 0; i < n*n; i++)
        cin >> pvalue[i];
    Matrix M(n);
    M.setMatrix(pvalue);
    M.printMatrix();
    cout<<M.element(2, 2)<<endl;
    M.setElement(2, 2, 2);
    M.printMatrix();
    cout << M.getCols() << endl;
    cout << M.getLines() << endl;
    return 0;
}

#include "stdafx.h"
#include<iostream>
using namespace std;
;
Matrix::Matrix(int n) :lines(n), cols(n) {
p = new float[n*n];
}
Matrix::Matrix(int n, int m) : lines(m), cols(n) {
p = new float[m*n];
}
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];
}
Matrix::~Matrix() {
delete[]p;
}
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;
}
}
float &Matrix::element(int i, int j) {
return p[(i-1)*cols + j-1];
}
float Matrix::element(int i, int j)const {
return p[(i-1)*cols + j-1];
}
void Matrix::setElement(int i, int j, int value) {
p[(i-1)*cols + j-1] = (float)value;
}
int Matrix::getLines() const {
return lines;
}
int Matrix::getCols() const {
return cols;
}

 

 

四.期中考试第二题

#include<iostream>
#include<string>
using namespace std;
class User {
public:
    User(string nm,string pd="111111") {
        name = nm;
        password = pd;
        id = Currentid + 1;
        Currentid++;
    };
    User(User&u) {
        name = u.name;
        password = u.password;
        id = u.id;
        Currentid++;
    };
    ~User() {};
    void printUser() {
        cout <<"name: "<< name << endl;
        cout <<"passward: " <<password<<endl;
        cout <<"id: "<<id << endl;
    };
    void resetpassward() {
        int n = 3;
        string oldpassward;
        while (n)
        {
            cout<<"请输入原密码"<<endl;
            cin >> oldpassward;
            if (password.compare(oldpassward) == 0)
            {
                cout << "请输入新密码" << endl;
                cin >> password;
                break;
            }
            else
                cout<<"输入错误,";
                n--;
        }
    };
    void printCurrentid() {
        cout << Currentid << endl;
        cout << "id: "<<id << endl;
        cout << "name: " << name << endl;
        cout << "passward: "<<password<<endl;
    
    };
private:
    string name;
    string password;
    int id;
    static int Currentid;
};
int User::Currentid = 999;
int main() {
    User u1("liurui", "111111");
    u1.printUser();
    u1.printCurrentid();
    u1.resetpassward();
    return 0;
}

期中考试第三题

 

#include<string>
using namespace std;
class Book {
public:
    Book(string isbnX, string titleX,float priceX);
    void print();
private:
    string title;
    string isbn;
    float price;
};
#include"book.h"
#include<iostream>
using namespace std;
Book::Book(string isbnX, string titleX, float priceX) :isbn(isbnX), title(titleX), price(priceX) {};
void Book::print() {
    cout << "isbn: "<<isbn << endl;
    cout << "title: " << title<<endl;
    cout << "price: " << price << endl;
};
#include<iostream>
#include"book.h"
#include<vector>
using namespace std;
int main() {
    vector<Book>books;
    string isbn, title;
    int price;
    while (true) {
        cout << "输入书名" << endl;
        cin >> title;
        cout << "输入编号" << endl;
        cin>> isbn;
        cout << "输入价格" << endl;
        cin >> price;
        Book book1(isbn, title, price);
        books.push_back(book1);
        cout << "输入c继续,输入s停止" << endl;
        char a;
        cin >> a;
        if (a == 's')
            break;
        else;
    };
    for (int i = 0; i < books.size(); i++)
        books[i].print();
    return 0;
}

 

posted on 2018-05-23 22:31  liurui12138  阅读(126)  评论(0编辑  收藏  举报