• 实验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;
    }
    

  • 相关阅读:
    [TED]丹·吉尔伯特:我们为什么快乐?
    GTD 工具软件
    康奈尔笔记法(5R笔记法)
    ACM退役感言
    YCSB_对mongodb进行性能测试
    Python_列表比较大小
    Python_issubclass&isinstance方法和types&inspect内置模块
    由于未能创建 Microsoft Visual C# 2008 编译器,因此未能打开项目 "xxx" 的解决方法
    北京技能视频学习自动播放
    JQuery在UpdatePanel中当事件点击后JQuery事件不起作用的解决办法(JQuery与UpdatePanel问题解析)
  • 原文地址:https://www.cnblogs.com/BuluGuy/p/9060265.html
Copyright © 2020-2023  润新知