• 实验五


    期中考试第一题

    #include<iostream>
    #include<cstdlib>
    #include<time.h>
    using namespace std;
    class Dice{
    	public:
    		Dice(int n);
    		int cast()
    		{  
             int number=rand()%sides+1;  
             return number;
    		}
    		private:
    			int sides;
    };
    Dice::Dice(int n)
    {
    	sides=n;
    }
    int main()
    {
    	int x;
    	float count=0;
    	cin>>x;
    	Dice a(40);
    	for(int times=0;times<=500;times++)
    	{
    	
    	srand(times); 
    	int s=a.cast();
    		if(s==x)
    		count++;
    		
    	}
    	float c=count/500;
    	cout<<c<<endl;
    	return 0;
    }
    


    根据大神的建议,改成如下程序

    #include<iostream>
    #include<cstdlib>
    #include<time.h>
    using namespace std;
    class Dice{
        public:
            Dice(int n);
            int cast()
            {  
             int number=rand()%sides+1;  
             return number;
            }
            private:
                int sides;
    };
    Dice::Dice(int n)
    {
        sides=n;
    }
    int main()
    {
        int x;
        float count=0;
        cin>>x;
        Dice a(40);
        srand((unsigned)time(nullptr));//放在外边就可以了,因为放在循环里面的话,系统运行的太快了,时间都差不多 
        for(int times=0;times<=500;times++)
        {
        
       // srand((unsigned)time(nullptr));
       //srand(times);这是我原来写的,这个其实也相当于一个伪随机数 
        int s=a.cast();
            if(s==x)
            count++;
            
        }
        float c=count/500;
        cout<<c<<endl;
        return 0;
    }
    

    期中考试第二题(弄多文件的时候dev和电脑居然都崩掉了,所以先暂时不用多文件)

    #include<iostream>
    #include<string>
    using namespace std;
    class User{
        public:
            User(string n,string p="111111");
            void printmessage();
            void newpassword();
            void static show();
            private:
                int id;
                string name;
                string password;
               int static CurrentID;
    };
    
    int User::CurrentID=999;
    User::User(string n,string p)
    {
    	CurrentID++;
    	id=CurrentID;
    	name=n;
    	password=p;
    }
    void User::printmessage()
    {
    	cout<<"用户编号:"<<id<<"用户名:"<<name<<"密码:"<<password<<endl; 
    }
    void User::show()
    {
        cout<<CurrentID<<endl;
    }
    void User:: newpassword()
    {
    	string s1,s2;
    	int n=3,count=0;
    while(n--)
    {
    	cout<<"请输入原密码:";
    	cin>>s1;
    	cout<<endl;
    	if(s1==password)
    	{
    		cout<<"请输入新密码:";
    		cin>>s2;
    		cout<<endl;
    		cout<<"密码修改成功!"<<endl;
    		break;
    	}
    	else
    	{
    		cout<<"密码有误,请重新输入密码";
    		cout<<endl;
    		count++;
    	}
    }
    if(count==3)
    cout<<"请稍后再试"<<endl;
    } 
    int main()
    {
    	string n="Tom";
    	string p="123456";
    	User a(n,p);
    	User b("xiaoming");
    	User c("xiaohong");
    	 a.printmessage();
        b.printmessage();
        c.printmessage();
        b.newpassword();
        c.newpassword();
      return 0;
    } 
    


    其实刚开始写这个程序的时候,出了一些问题

    后来我查了一些网上的资料,得知c++可以在类的声明中,也可以在函数定义中声明缺省参数,但不能既在类声明中又在函数定义中同时声明缺省参数。
    因此,将定义或声明中的任一个缺省参数删除即可。(学到了学到了)

    期中考试第三题
    这题当时认为还蛮简单的,已经写了大部分,结果被那个定义Ctrlz停止输出给弄懵掉了,回来查了查资料,才知道这个问题真的是很简单,用一个while控制输入就行了,还是自己掌握的不太好吧

    #include<iostream>
    #include<string>
    #include<vector>
    using namespace std;
    class Book {
        public:
            Book(string isbnX, string titleX, float priceX);   
            void print(); 
        private:
            string isbn;
            string title;
            float price;
    };
    Book::Book(string isbnX, string titleX, float priceX){
        isbn=isbnX;
        title=titleX;
        price=priceX;
    }
    void Book::print(){
        cout<<"出版编号:"<<isbn<<"书名:"<<title<<"定价:"<<price<<endl; 
    }
    int main()
    {
    	vector<Book>books;
    	string isbn, title;
        float price;
        int i=0;
        while(cin>>isbn>>title>>price){
            Book book(isbn,title,price);
            i++;
            books.push_back(book);
        } 
        
        for(int k=0;k<i;k++)
        {
            books[k].print();
        } 
        return 0;
    }
    


    ex3.cpp

    #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.push_back("favorite");
    	likes.push_back("book");
    	likes.push_back("music");
    	likes.push_back("film");
    	likes.push_back("paintings"); // 为vector<string>数组对象likes添加元素值 
    	cout << "-----I likes these-----" << endl;
    	output1(likes); // 调用子函数输出vector<string>数组对象likes的元素值 
    	dislikes.push_back("anime");
    	dislikes.push_back("sport");
    	dislikes.push_back("sportsman");	// 为vector<string>数组对象dislikes添加元素值 
    	cout << "-----I dislike these-----" << endl;
    	output2(dislikes);// 调用子函数输出vector<string>数组对象dislikes的元素值 
        likes.swap(dislikes); // 交换vector<string>对象likes和dislikes的元素值 	
    	cout << "-----I likes these-----" << endl;
    	output1(likes);// 调用子函数输出vector<string>数组对象likes的元素值 
    	cout << "-----I dislikes these-----" << endl;
    	output2(dislikes);// 调用子函数输出vector<string>数组对象dislikes的元素值 			
    	return 0;
    }
    
    
    // 函数实现 
    // 以下标方式输出vector<string>数组对象v的元素值  
    void output1(vector<string> &v) {
    	for(unsigned i=0;i!=v.size();i++)
    	cout<<v[i]<<" "<<endl;
    	// 补足程序
    	// 。。。 
    }
    
    // 函数实现
    // 以迭代器方式输出vector<string>数组对象v的元素值 
    void output2(vector<string> &v) {
    	vector<string>::iterator it;
    	for(it=v.begin();it!=v.end();it++)
    		cout<<*it<<" "<<endl;
    	// 补足程序
    	// 。。。 
    }
    

    #include<iostream>
    using namespace std;
    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;   // 指向存放矩阵数据的内存块的首地址 
    };
    Matrix::Matrix(int n)
    {
        lines = n;
        cols = n;
    }
    Matrix::Matrix(int n, int m)
    {
        lines = n;
        cols = m;
    }
    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*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*lines+j] << " ";
            cout << endl;
        }
    }
    void Matrix::setElement(int i, int j, int value)
    {
        element(i, j) = value;
    }
    int main()
    {
    	Matrix a(5);
    	float const p[25]={0};
        a.setMatrix(p);
        a.setElement(5,5,2);
        a.printMatrix();
        cout<<a.element(3,5)<<endl;
        return 0;
    }
    

    这个程序没有报错,不过运行不出结果……我也不造哪里错了

    好吧,经大神指导才发现自己没有给p分配内存(自己居然没发现)
    改后程序

    #include<iostream>
    using namespace std;
    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;   // 指向存放矩阵数据的内存块的首地址
    	
    };
    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*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*lines+j] << " ";
            cout << endl;
        }
    }
    void Matrix::setElement(int i, int j, int value)
    {
        element(i, j) = value;
    }
    int main()
    {
    	Matrix a(5);
    	float const p[25]={0};
        a.setMatrix(p);
        a.setElement(5,5,2);
        a.printMatrix();
        cout<<a.element(3,5)<<endl;
        return 0;
    }
    

  • 相关阅读:
    C#面向对象编程进阶(一) ——实现栈
    Hibernate组件和关联映射
    创建多线程的两种方法
    Mybatis:ResultMap
    Mybatis:配置解析
    IDEA复制多行及对多行代码上下左右移动
    Mybatis:CRUD操作
    Mybatis简介
    算法分类 ,时间复杂度 ,空间复杂度,优化算法
    JAVA LOG4J使用方法
  • 原文地址:https://www.cnblogs.com/Nicholastwo/p/9059712.html
Copyright © 2020-2023  润新知