C++学习,实验五

一,

#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("sport");
    likes.push_back("sportsman");
    
    
    cout << "-----I like these-----" << endl;
    // 调用子函数输出vector<string>数组对象likes的元素值 
    output1(likes);
    
    
    // 为vector<string>数组对象dislikes添加元素值 
     dislikes.push_back("paintings");
     dislikes.push_back("anime");
     dislikes.push_back("etc");
    cout << "-----I dislike these-----" << endl;
    // 调用子函数输出vector<string>数组对象dislikes的元素值 
    output1(dislikes);
    
    
    // 交换vector<string>对象likes和dislikes的元素值 
    likes.swap(dislikes);
     
    
    cout << "-----I likes these-----" << endl;
    // 调用子函数输出vector<string>数组对象likes的元素值 
    output2(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中的元素
    vector<string>::iterator i; 
    for(i= v.begin() ; i<v.end() ; ++i)
    cout<<*i<<endl;
    
}
ex1

 

 二,

/#include<iostream>
using namespace std;
int main(){
    int *p;
    *p = 9;
    cout << "The value at p :"<< *p;  /*定义一个指针只是定义了一片内存,这片内存是用来储存地址的,同时该地址需要指向内存单元,
                                       此处没有对指针进行初始化,指针没有指定某个内存单元,会随机指向某处内存,
                                      此时直接赋值就会越界,出错*/
                                      
    return 0;
} 
/*应改为 
#include<iostream>
using namespace std;
int main(){
    int a;
    int *p = &a;                也可以写成    int a=9;     int*p=&a;
    *p = 9;                                    
    cout << "The value at p :"<< *p;             
    return 0;
}  */
ex2.1
#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;
} 
ex2.2

 三,

#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.h

实验三还在修改,

 

posted @ 2018-05-23 18:47  丿罗小黑  阅读(137)  评论(1编辑  收藏  举报