博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++简单程序设计-5
阅读量:5316 次
发布时间:2019-06-14

本文共 4456 字,大约阅读时间需要 14 分钟。

编程实验部分 1.vector3.cpp
#include 
#include
#include
using namespace std;// 函数声明 void output1(vector
&); void output2(vector
&); int main(){ vector
likes, dislikes; // 创建vector
对象likes和dislikes likes.push_back("favorite book");// 为vector
数组对象likes添加元素值 likes.push_back("music"); likes.push_back("film"); likes.push_back("anime"); cout << "-----I like these-----" << endl; output1(likes);// 调用子函数输出vector
数组对象likes的元素值 dislikes.push_back("sport");// 为vector
数组对象dislikes添加元素值 dislikes.push_back("sportsman"); cout << "-----I dislike these-----" << endl; output1(dislikes);// 调用子函数输出vector
数组对象dislikes的元素值 likes.swap(dislikes);// 交换vector
对象likes和dislikes的元素值 cout << "-----I likes these-----" << endl; output2(likes);// 调用子函数输出vector
数组对象likes的元素值 cout << "-----I dislikes these-----" << endl; output2(dislikes);// 调用子函数输出vector
数组对象dislikes的元素值 return 0;}// 函数实现 // 以下标方式输出vector
数组对象v的元素值 void output1(vector
&v) { int i; for(i=0;i
数组对象v的元素值 void output2(vector
&v) { int i; for(i=0;i

 

 

 2. 6-17的修改

#include
using namespace std;int main(){ //法1 int i=9; int *p; p=&i; cout<<"The value at p:"<<*p; return 0;}int main(){ //法2 int i=9; int *p=&i; cout<<"The value at p:"<<*p; return 0;}int main(){ //法3 int i; int *p=&i; *p=9; cout<<"The value at p:"<<*p; return 0;}//原题指针没有初始化会随机指向某处内存,导致程序崩溃 //根据书上的模板写了三种方法

3. 6-18的修改

#include
using namespace std;int fnl(){ int *p=new int(5); return *p; delete p; //原程序未用delete加以释放,会导致内存泄漏 }int main(){ int a=fnl(); cout<<"the value of a is:"<

4.动态矩阵类Matrix

 

//matrix.h#ifndef MATRIX_H#define MATRIX_Hclass 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) { return *(p + ((i - 1)*cols) + j - 1); }; //返回矩阵第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

 

//main.cpp#include "Matrix.h"#include
using namespace std;int main() { Matrix A(3); Matrix B(3, 2); Matrix C(B); const float a[9] = { 1,2,3,4,5,6,7,8,9 }, b[6] = { 10,20,30,40,50,60 }; A.setMatrix(a); B.setMatrix(b); C.setMatrix(b); cout << "矩阵A为:" << endl; A.printMatrix(); cout << "矩阵B为:" << endl; B.printMatrix(); cout << "B的复制构造函数矩阵C为:" << endl; C.printMatrix(); float *x = &A.element(1, 1); cout << "矩阵A第1行第1列元素的引用:" << x<
//matrix.cpp#include "Matrix.h"#include
using namespace std;Matrix::Matrix(int n) : lines(n) { // 构造函数,构造一个n*n的矩阵 cols = n; p = new float[lines*cols];}Matrix::Matrix(int n,int m) : lines(n),cols(m) { // 构造函数,构造一个n*m的矩阵 p = new float[lines*cols];}Matrix::Matrix(const Matrix &X): lines(X.lines),cols (X.cols){ //复制构造函数的实现 p = new float[lines*cols];}Matrix::~Matrix() { //析构函数 delete[]p;}void Matrix::setMatrix(const float *pvalue) { // 矩阵赋初值,用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*cols + j] << " "; } cout << endl; }}inline float Matrix::element(int i, int j) const { // 返回矩阵第i行第j列元素的值 return *(p + ((i - 1)*cols) + j - 1);}void Matrix::setElement(int i, int j, int value) { //设置矩阵第i行第j列元素值为value *(p + ((i - 1)*cols) + j - 1) = value;}

 

期中考试:

实验总结与体会:

书上有关vector模板的介绍还是太少了

我找了一些概括了vector模板的用法的CSDN博客

实验是大概完成了,但迭代器方式的输出还有些疑问

这次实验最难写的就是最后一题了

写的过程中经常遇见无法解析的外部符号的错误

我查了些资料,也看了看其他同学的博客

发现只要把matrix.cpp里的函数放进matrix.h里就行了

虽然我并不知道原因...

 

 

 

转载于:https://www.cnblogs.com/tensheep/p/9073851.html

你可能感兴趣的文章
JAVA的extends用法
查看>>
BZOJ1001 狼抓兔子 终于过了!
查看>>
静态 非静态代码块和构造器的执行顺序测试方法
查看>>
随手贴点代码记录一下吧,其实啥用没有
查看>>
Framer – 将视觉搞转换为更真实的动态原型
查看>>
Electron - 创建跨平台的桌面客户的应用程序
查看>>
hdu 1517
查看>>
60佳优秀的 Photoshop 网页制作教程【下篇】
查看>>
完成登录与注册页面的前端
查看>>
ReactDom.render和React.render的区别
查看>>
Hibernate 参数设置一览表
查看>>
Binary Search二分法搜索C++程序
查看>>
php基础系列:从用户登录处理程序学习mysql扩展基本操作
查看>>
HDU 4326Game(比较难理解的概率dp)
查看>>
达内TTS6.0课件oop_day01
查看>>
IT English Collection(9) of Objective-C
查看>>
Spring.net学习记录
查看>>
GPUImage类注解
查看>>
js DOM节点
查看>>
ajax跨域请求的问题
查看>>