实验 5 类和对象-3

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
    string i;
    cout<<"input what you likes:" ;
    while(cin>>i)
    {
        if(i=="0")//0作为输入结束的标志 
            break;
        likes.push_back(i);
    }
    // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) 
    // 补足代码 
    // 。。。 
    
    
    cout << "-----I like these-----" << endl;
    output1(likes);
    // 调用子函数输出vector<string>数组对象likes的元素值 
    // 补足代码
    // 。。。 
    cout<<"input what you dislikes:" ;
    while(cin>>i)
    {
        if(i=="0")
            break;
        dislikes.push_back(i);
    }
    // 为vector<string>数组对象dislikes添加元素值 
    // 补足代码 
    // 。。。 
    
    cout << "-----I dislike these-----" << endl;
    output1(dislikes);
    // 调用子函数输出vector<string>数组对象dislikes的元素值 
    // 补足代码
    // 。。。 
    
    vector<string>temp;
    temp=likes;
    likes=dislikes;
    dislikes=temp;
    // 交换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(int i=0;i<v.size();i++)
    {
        cout<<v[i]<<" ";
    }
    cout<<endl;
    // 补足程序
    // 。。。 
}

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

 

2.

6-17
指针p没有初始化,强行往p所指向的那块随机区域进行赋值,会导致出错。
6-18

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

 3.

//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列元素的引用 inline float element(int i, int j) const;// 返回矩阵第i行第j列元素的值 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"matrix.h" #include<iostream> using namespace std; Matrix::Matrix(int n) { p=new float{n*n}; lines=n; cols=n; } Matrix::Matrix(int n, int m) { p=new float{n*m}; lines=n; cols=m; } 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<<element(i,j)<<" "; cout<<endl; } } void Matrix::setElement(int i, int j, int value) { p[i*lines+j]=value; } inline float &Matrix::element(int i,int j) { return p[i*lines+j]; } inline float Matrix::element(int i,int j) const { return p[i*lines+j]; }
#include"matrix.h"
#include<iostream>
using namespace std;
int main()
{
    float b1[4]={1,2,3,4};
    float b2[6]={1,2,3,4,5,6};
    Matrix a1(2);
    Matrix a2(2,3);
    a1.setMatrix(b1);
    a2.setMatrix(b2);
    cout<<"矩阵a1为"<<a1.getLines()<<""<<a1.getCols()<<"列的矩阵:"<<endl;
    a1.printMatrix();
    cout<<"矩阵a2为"<<a2.getLines()<<""<<a2.getCols()<<"列的矩阵:"<<endl;
    a2.printMatrix();
    cout<<"把矩阵a1复制给矩阵c,矩阵c为:"<<endl; 
    Matrix c(a1);
    c.printMatrix();
    cout<<"将a矩阵的第0行第0列改为9,得到的矩阵为:"<<endl; 
    a1.setElement(0,0,9);
    a1.printMatrix();
    return 0;
}

4.

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
class Dice {
    public:
        Dice(int n);
        int cast();
    private:
        int sides;
};
int Dice::cast()
{
    return rand()%sides+1;
}
Dice::Dice(int n) :sides(n){};

int main() {
    int cnt=0;
    Dice a(40);
    for (int i = 1; i <= 500; i++) 
    {
        if (a.cast() == 13)
            cnt++;
    }
    double p;
    p = (double)cnt/500.0*100;
    cout << "抛到13的几率为 " << p <<"%"<< endl;
    return 0;
}

 

转载于:https://www.cnblogs.com/MINT510845604/p/9079140.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值