实验五

1.

#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("favorite book: ****");//名字(以下都是)
    likes.push_back("music:***");
    likes.push_back("film:***");
    likes.push_back("paintings:****");
    likes.push_back("anime:****");
    
    cout << "-----I like these-----" << endl;
    // 调用子函数输出vector<string>数组对象likes的元素值 
    // 补足代码 
    output1(likes); 
    
    // 为vector<string>数组对象dislikes添加元素值 
    // 补足代码  
    dislikes.push_back("sport:***");
    dislikes.push_back("sportsman:*****");
    cout << "-----I dislike these-----" << endl;
    // 调用子函数输出vector<string>数组对象dislikes的元素值 
    // 补足代码
    output2(dislikes);
    
    // 交换vector<string>对象likes和dislikes的元素值 
    // 补足代码
    likes.swap(dislikes);
    
    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){
    int i;
    for(i=0;i<v.size();i++)
    cout<<v[i]<<endl; 
}

// 函数实现
// 以迭代器方式输出vector<string>数组对象v的元素值 
void output2(vector<string> &v) {
    // 补足程序
    vector<string>::iterator t;
    for(t=v.begin();t!=v.end();t++)
    cout<<*t<<endl;
}

 

 

 

 

2.(1)6.17

#include<iostream>
using namespace std;
int main(){
    int i=0;
    int * p=&i;
    *p=9;
    cout<<"the value at p: "<<*p;
    return 0;
}

这是因为指针没有经过初始化,会随即指向任意内存,造成崩溃,所以对其进行初始化即可。

(2)6.18

#include<iostream>
using namespace std;

int fnl(){
    int *p=new int(5);
    return *p;
    /**/   delete p;   /**/  
}

int main(){
    int a=fnl();
    cout<<"the value of a is:"<<a;
    return 0;
}

这个题目可以正常编译,但是实际上没有进行内存释放,会降低运行速度。

 

第三个问题我试着编译,但是总是会报错,提示找不到matirx.h 库,所以我还没有找到解决的方法,暂时就没写。

 

期中考试

 一。

 

 

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
class Dice {

public:
    int n;
    void Dice(int n);
    int cast();
private:
    int sides;
    
};
Dice::Dice(int n){
        sides = n;}
Dice::cast() {
        int m;
        m = (rand() % (n-1+1)+1);
        return m;}
int main() {
    srand((unsigned)time(0));
    int n,x; cout << "输入班级人数和学号:";
    cin>>n>>x;
    Dice A(n);
    int i; int m;double y=0.00;
    for (i=0;i<500;i++) {
        if (A.cast()==x)y++;
    }
    double p=(double)y/500.00;
    cout << "你被抽中的概率为:"<<p<<endl;
    return 0;
}

 

 

二。

 

 

 用到函数太多了,所以我只写了一个整体的程序。

#include<iostream>
#include<string>
using namespace std;
static int n=999;
class User {
private:
    int id; string name; string password; static int CurrentID;
public:
    User(string s1,string s2="111111") {
        n++;
        id=n;
        name=s1;
        password=s2;
        CurrentID++;
    }
    User(User &u1) {
        id = u1.id;
        name = u1.name;
        password=u1.password;
        CurrentID=u1.CurrentID;
    }
    void show1() {
        cout<<"该用户信息为 id:"<<id<<"name:"<<name<<"password:"<<password<<endl;
    }
    static void show2(User &u1){      /*输出CurrentID*/
        cout<<"CurrentID:"<<CurrentID <<endl;
        cout<<"最后一个新用户为:";
        u1.show1();
    }
    void change() {                         /*修改密码*/
        string s3,s4;
        int j=3;
        while (j) {
            cout<<"输入原有密码:";
            cin>>s3;
            if (s3==password) {
                cout<<"输入新密码:";
                cin>>s4;
                password=s4;
                break;
            }
            if (s3!=password){
                j--;
                cout<<"输入错误"<<endl;
            }
        }
        if(j==0)cout<<"错误次数过多,请稍后再试" << endl;
    }
}; 
int User::CurrentID = 999;/*给CurrentID赋初值*/
int main() {
    User u1("user1", "666666");
    User u2("user2");
    User u3("user3", "233333");
    u1.show1(); 
    u2.show1(); 
    u3.show1(); 
    User u(u3); 
    User::show2(u3);
    u1.change(); 
    u1.show1();
    u2.change();
    return 0;
}

 

 

 

 

 

 

三。

 

#pragma once
#ifndef BOOK_H
#define BOOK_H

#include <string>
using std::string;

class Book {
    public:
        Book(string isbnX, string titleX, float priceX);  /*构造函数 */ 
        void print(); /*打印图书信息 */
    private:
        string isbn;
        string title;
        float price;
};
#endif

#include "book.h"
#include <iostream> 
#include <string>
using namespace std;
Book::Book(string isbnX, string titleX, float priceX) {/*构造函数的实现*/
    isbn = isbnX; 
    title = titleX; 
    price = priceX;
}
void Book::print() {        /*print函数的实现*/
    cout << "isbn:" << isbn << " title:" 
    << title << " price:" << price << endl;
}

#include "book.h"
#include <vector>
#include <iostream>
using namespace std;
int main()
{
    vector<Book>books;
    string isbn, title;
    float price;
    while (1) {
        cout<<"请输入图书信息,若想终止输入,请输入Quit;" << endl;
        cin >> isbn;/*先输入isbn码,判断是否执行输入操作*/
        if (isbn != "Quit") {
            cin>>title>>price;
        }
        if (isbn=="Quit")
        break;/*输入Quit终止*/
        Book a(isbn,title,price);
        books.push_back(a);/*向数组中加入新的对象*/
    }
    int i;
    for (i = 0; i < books.size(); i++) {
        books[i].print();/*输出所有图书信息*/
    }
    return 0;
}

 

posted @ 2018-05-23 22:58  春风十里五千米  阅读(161)  评论(0编辑  收藏  举报