1.
1 #include <iostream>
2 #include <vector>
3 #include <string>
4 using namespace std;
5
6 // 函数声明
7 void output1(vector<string> &);
8 void output2(vector<string> &);
9
10 int main()
11 {
12 vector<string>likes, dislikes; // 创建vector<string>对象likes和dislikes
13
14
15 int n;
16 cin>>n;
17 getchar();
18
19 int i=0;
20 for(i=0;i<n;i++){
21 string a;
22 getline(cin,a);
23 likes.push_back(a);
24 }
25 // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc)
26 // 补足代码
27 // 。。。
28
29
30 cout << "-----I like these-----" << endl;
31 // 调用子函数输出vector<string>数组对象likes的元素值
32 // 补足代码
33 // 。。。
34 output1(likes);
35
36 // 为vector<string>数组对象dislikes添加元素值
37 // 补足代码
38 // 。。。
39 for(i=0;i<n;i++){
40 string b;
41 getline(cin,b);
42 dislikes.push_back(b);
43 }
44
45 cout << "-----I dislike these-----" << endl;
46 // 调用子函数输出vector<string>数组对象dislikes的元素值
47 // 补足代码
48 // 。。。
49 output2(dislikes);
50
51 // 交换vector<string>对象likes和dislikes的元素值
52 // 补足代码
53 // 。。。
54 likes.swap(dislikes);
55
56 cout << "-----I likes these-----" << endl;
57 // 调用子函数输出vector<string>数组对象likes的元素值
58 // 补足代码
59 // 。。。
60 output1(likes);
61 cout << "-----I dislikes these-----" << endl;
62 // 调用子函数输出vector<string>数组对象dislikes的元素值
63 // 补足代码
64 // 。。。
65 output2(dislikes);
66
67 return 0;
68 }
69
70
71 // 函数实现
72 // 以下标方式输出vector<string>数组对象v的元素值
73 void output1(vector<string> &v) {
74 // 补足程序
75 // 。。。
76 for(int i=0; i<v.size(); ++i)
77 cout << v[i]<<" ";
78 cout<<endl;
79 }
80
81 // 函数实现
82 // 以迭代器方式输出vector<string>数组对象v的元素值
83 void output2(vector<string> &v) {
84 // 补足程序
85 // 。。。
86 for(int i=0; i<v.size(); ++i)
87 cout << v[i]<<" ";
88 cout<<endl;
89 }
运行截图:
- 6-17
1 #include<iostream>
2 using namespace std;
3 int main(){
4 int *p;
5 int a=9;
6 p=&a;//指针p的值等于常量,并且p在内存中没有指向
7 cout<<"The value at p:"<<*p;
8 return 0;
9 }
运行截图:
6-18:
1 #include<iostream>
2 using namespace std;
3 int fn1(){
4 int *p=new int (5);//这句是从堆上分配一个int型变量所占的字节内存,这个内存单元存放的整数值为5,然后让一个整形的指针变量p指向它的地址。
5
6 return *p;
7 delete p;//释放内存空间
8 }
9 int main(){
10 int a=fn1();
11 cout<<"The value of a is:"<<a;
12
13 return 0;
14 }
截图:
注:这个例子中,如果不释放内存,程序仍然会运行出正确结果,那么不释放内存能带来哪些坏处呢?使用new分配内存,不加以释放,会导致动态分配的内存无法回收,使得程序占据的内存越来越大。我想,这需要反汇编才能看出不同。
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){return *(p+((i-1)*cols)+j-1);} //返回矩阵第i行第j列元素的引用
inline float element(int i, int j) const{return *(p+((i-1)*cols)+j-1);}// 返回矩阵第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
1 #include"matrix.h"
2 #include<iostream>
3 using namespace std;
4
5 Matrix::Matrix(int n):lines(n),cols(n){// 构造函数,构造一个n*n的矩阵
6 p=new float[lines*cols];
7
8 }
9 Matrix::Matrix(int n,int m):lines(n),cols(m){
10
11 p=new float [lines*cols];
12
13
14 }
15 Matrix::Matrix(const Matrix &X){
16 lines=X.lines;
17 cols=X.cols;
18 p=new float [lines*cols];
19 for(int i=0;i<lines*cols;i++)
20 p[i]=X.p[i];
21
22 }
23
24 void Matrix::setMatrix(const float *pvalue){
25
26 for(int i=0;i<cols*lines;i++){
27 p[i]=pvalue[i];
28 }
29
30 cout<<"ceshi2"<<endl;
31
32 }
33
34 void Matrix::printMatrix() const{
35 int i,j;
36 for(i=0;i<lines;i++){
37 for(j=0;j<cols;j++){
38 cout<< p[i*cols + j]<<' ';
39 }
40 cout<<endl;
41
42 }
43
44 }
45
46 void Matrix::setElement(int i,int j,int value){
47 p[(i-1)*cols + j-1]=value;
48 }
49 Matrix::~Matrix(){
50 delete []p;
51 }
main.cpp
#include"matrix.h"
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
Matrix a(n);//定义一个3*3的矩阵
float c[n*n];
cout<<"赋值:"<<endl;
for(int i=0;i<n*n;i++)
cin>>c[i];
a.setMatrix(c);
cout<<"输出"<<endl;
a.printMatrix();
cout<<"输出修改后的值"<<endl;
a.setElement(1,2,100);
cout<<"输出"<<endl;
a.printMatrix();
Matrix b(3,4);
cout<<"赋值:"<<endl;
float d[12];
for(int i=0;i<12;i++)
cin>>d[i];
b.setMatrix(d);
cout<<"输出"<<endl;
b.printMatrix();
cout<<"输出列"<<endl;
cout<< b.getCols()<<endl;
cout<<"输出行"<<endl;
cout<<b.getLines()<<endl;
cout<<"输出第3行第一个元素"<<endl;
cout<<b.element(3,1)<<endl;
return 0;
}
运行截图:
4.这次的最后一个实验用了很长时间,甚至最后看了不少其他同学的代码才写出来一份完整的来。只看书不动手万万不可!!
原文链接: https://www.cnblogs.com/yitou13/p/9079355.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/274536
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!