实验5&期中考试后两题

实验内容1:

#include <iostream>
#include <vector>
#include <string>
using namespace std;
string myfavorite[7]={"book", "music", "film", "paintings","anime","sport","sportsman"};
// 函数声明
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("《肖生克的救赎》");
	likes.push_back("《You Are Not Alone》");
	likes.push_back("《辛德勒的名单》");
	likes.push_back("《日出》");
	likes.push_back("《one piece》");
	likes.push_back("乒乓球");
	likes.push_back("李娜");
	cout << "-----I like these-----" << endl;
	// 调用子函数输出vector<string>数组对象likes的元素值
    output1(likes);
	// 为vector<string>数组对象dislikes添加元素值
	dislikes.push_back("恐怖小说");
	dislikes.push_back("hip-hop");
	dislikes.push_back("烂片");
	dislikes.push_back("故弄玄虚");
	dislikes.push_back("泡面番");
	dislikes.push_back("run");
	dislikes.push_back("nobody");

	cout << "-----I dislike these-----" << endl;
	// 调用子函数输出vector<string>数组对象dislikes的元素值
    output2(dislikes);
	// 交换vector<string>对象likes和dislikes的元素值
    string a;
    for(int i=0;i<likes.size();i++)
    {
        a=likes[i];
        likes[i]=dislikes[i];
        dislikes[i]=a;
    }
    cout<<"下面这个功能很鸡肋。。。"<<endl;
	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<<myfavorite[i]<<":"<<v[i]<<" "<<endl;
    }
}

// 函数实现
// 以迭代器方式输出vector<string>数组对象v的元素值
void output2(vector<string> &v)
{
    int a=0;
	for(auto i=v.begin();i<v.end();i++)
    {
        cout<<myfavorite[a++]<<":"<<*i<<" "<<endl;
    }
}

实验内容2:
6-17:

#include<iostream>
using namespace std;
int main()
{
    int *p;
    //*p=9;//不能直接将数字赋予指针,因为这时编译器并没有分配内存给数字
    int a=9;//此时系统才会分配内存
    p=&a;//将存储值的地址赋予指针
    cout<<"The value at p: "<<*p;
    return 0;
}

6-18:
这题我是真没看懂

#include<iostream>
using namespace std;
int fn1()
{
    int *p=new int (5);
    return *p;
    delete p;//听说是因为没有释放动态分配的内存,觉得有道理,但加上去也看不出来什么啊
}
int main()
{
    int a=fn1();
    cout<<"the value of a is: "<<++a;
    return 0;
}

实验内容3:
main:

#include <iostream>
#include "matrix.h"
using namespace std;
int main()
{
    Matrix A(5);
    Matrix C(3,4);
    float const touch[25]= {1,6,1,1,5,
                            1,1,6,6,5,
                            1,1,5,3,5,
                            1,1,5,3,5,
                            5,1,1,1,1};
    A.setMatrix(touch);
    A.printMatrix();
    Matrix B(A);
    cout<<A.element(3,4)<<endl;
    A.element(3,4)=6;
    cout<<A.element(3,4)<<endl;
    A.setElement(3,4,3);
    cout<<A.element(3,4)<<endl;
    cout<<A.getLines()<<endl;
    cout<<C.getCols()<<endl;
    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;
}

实验内容4:
第二题,User类:
main:

#include <iostream>
#include "User.h"
using namespace std;
int main()
{
    User A("BuluGuy");
    User B("alien");
    A.priUserinf();
    A.chgpas("216541");
    A.priUserinf();
    User kll;
    A.priCurrentID();
    kll.chgname("kll");
    kll.chgpas("135113513");
    A.priCurrentID();
    B.chgname();
    B.chgpas();
    B.priUserinf();
    B.priCurrentID();
    return 0;
}

User.h:

#ifndef USER_H_INCLUDED
#define USER_H_INCLUDED
#include <string>
#include <vector>
#include <cstring>
#include <iostream>
using namespace std;
class User
{
    public:
        User(string a);
        User();
        ~User();
        void priUserinf();
        void chgpas();
        void chgpas(string);
        void chgname(string );
        void chgname();
        void priCurrentID();
        static int CurrentID;
        static string Curment[2];
    private:
        int id;
        string name;
        string password;
};


#endif // USER_H_INCLUDED

User.cpp:

#include "User.h"
using namespace std;
//递归的判断条件
bool base1=0;
int tine=0;
//类变量的共有属性,使用静态变量
int User::CurrentID=999;
//使用静态变量组记录最后用户的信息
string User::Curment[2]={"User","111111"};
//构造函数
User::User(string a):id(++CurrentID),name(a),password("111111")
{
    Curment[0]=name;
    Curment[1]=password;
}
User::User():id(++CurrentID),name("User"),password("111111")
{
    Curment[0]=name;
    Curment[1]=password;
}
User::~User(){}
//用户信息输出
void User::priUserinf()
{
    cout<<endl<<"User's ID :       "<<id<<endl
              <<"User's name :     "<<name<<endl
              <<"User's password : "<<password<<endl;
}
/*--------------------------------------------*/
//识别密码
string getpass()
{
    string m;
    cin>>m;
    return m;
}
/*--------------------------------------------*/
void User::chgpas()
{
    //根据是否递归决定输出语句
    if(base1==0)
        cout<<"Please input current password : ";
    else
        cout<<"Password wrong! Please input again : ";
    //旧密码匹配成功
    if(getpass()==password)
    {
        do
        {
            cout<<"Please input new password :";
            string cx;
            cin>>cx;
            cout<<"please input new password again :";
            if(getpass()==cx)
            {
                password=cx;
                if(id==CurrentID)Curment[1]=password;
                cout<<"Password has changed!"<<endl;
                break;
            }
            else
            {
                cout<<"Passwords are different! Please try again."<<endl;
            }
        }while(1);
    }
    //旧密码匹配失败
    else
    {
        tine++;
        if(tine==3)
        {
            tine=0;
            cout<<"Password has been input wrong three times, Please try again later."<<endl;
        }
        else
        {
            base1=1;
            chgpas();
        }
    }
}
//程序修改密码
void User::chgpas(string a)
{
    password=a;
    if(id==CurrentID)Curment[1]=password;
}
//程序修改用户名
void User::chgname(string a)
{
    name=a;
    if(id==CurrentID)Curment[0]=name;
}
//用户修改用户名
void User::chgname()
{
    cout<<"Please input new user's name : "<<endl;
    string a;
    cin>>a;
    name=a;
    if(id==CurrentID)Curment[0]=name;
    cout<<"User's name has been changed."<<endl;
}
//打印CurrentID并输出最后一位新增用户的信息
void User::priCurrentID()
{
    cout<<endl;
    cout<<"CurrentID : "<<CurrentID<<endl;
    cout<<"The information of last added user :"<<endl;
    cout<<endl<<"User's ID :       "<<CurrentID<<endl
              <<"User's name :     "<<Curment[0]<<endl
              <<"User's password : "<<Curment[1]<<endl;

}


Book类:
main.cpp:

#include <iostream>
#include<vector>
#include"Book.h"
using namespace std;

int main()
{
    vector<Book> books;
    string cx,cv;
    float pl;
    while(cin>>cx>>cv>>pl)
    {
        Book a(cx,cv,pl);
        books.push_back(a);
    }
    for(int i=0;i<books.size();i++)
    {
        books[i].print();
    }
    return 0;
}

Book.h:

#ifndef BOOK_H_INCLUDED
#define BOOK_H_INCLUDED
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
class Book
{
    public:
        Book(string a,string c,float v);
        void print();
    private:
        string isbn;
        string title;
        double price;
};

#endif // BOOK_H_INCLUDED

Book.cpp:

#include "Book.h"
Book::Book(string a,string b,float c):isbn(a),title(b),price(c){}
void Book::print()
{
    cout<<"出版编号:"<<isbn<<"    "<<"书名:"<<title<<"    "<<"定价:"<<price<<"  RMB"<<endl;
}

原文地址:https://www.cnblogs.com/BuluGuy/p/9060265.html