实验5 string类和vector模板的基本用法 动态内存 浅复制和深复制 指针和引用

多余的话我也不说了,直接上题目吧,迭代器这些天里也抽不出时间来学;所以output2的输出方式暂时空着,等以后会了再补上  =_=!

实验内容1:

//ex5.cpp
#include 
#include 
#include 
using namespace std;

// 函数声明
void output1(vector &);
void output2(vector &);

int main()
{
	vectorlikes, dislikes; // 创建vector对象likes和dislikes
	
	// 为vector数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) 
	string l,d;
	while(cin>>l)
	{
		if(l!="没了")
		{
			likes.push_back(l);
		}
		else if(l=="没了")
		{
			break;
		}
	}
	
	cout << "-----I like these-----" << endl;
	// 调用子函数输出vector数组对象likes的元素值 
	
	output1(likes);
	
	// 为vector数组对象dislikes添加元素值 
	while(cin>>d)
	{
		if(d!="没了")
		{
			dislikes.push_back(d);
		}
		else if(d=="没了")
		{
			break;
		}
	}

	cout << "-----I dislike these-----" << endl;
	// 调用子函数输出vector数组对象dislikes的元素值 
	output1(dislikes);
	
	// 交换vector对象likes和dislikes的元素值 
	likes.swap(dislikes);
	cout<数组对象likes的元素值 
	output1(likes);
	
	cout << "-----I dislikes these-----" << endl;
	// 调用子函数输出vector数组对象dislikes的元素值 
	output1(dislikes);
						     
	return 0;
}


// 函数实现 
// 以下标方式输出vector数组对象v的元素值  
void output1(vector &v) {
	for(int i=0;i数组对象v的元素值 
void output2(vector &v) {
}

运行结果如下:

实验5 string类和vector模板的基本用法 动态内存 浅复制和深复制 指针和引用_第1张图片

实验内容2

结果如下:

//6-17
#include
using namespace std;
int main()
{
	int *p;       //指针没有初始化,所以没有志向某个内存单元,而是指向了内存中的一个随机地址,从而导致一些严重的问题 
	*p=9;         //9是常量 p是指针类型的变量不匹配 
	cout<<"The value at p:"<<*p;
}

//6-18
#include
using namespace std;

int fn1()
{
	int *p=new int(5);
	return *p;      //申请动态内存之后没有释放 
}

int main()
{
	int a=fun();
	cout<<"the value of a is:"<

实验3

感觉做这个题之前要看的东西还是有点多的。。。。。

最后补上期中考试的内容,怎么说呢,期中考试的机子上个网都能卡死在那里,还有IDE自己的问题真的浪费了很多做题的时间

一下内容是基于VS2017

1、用户管理

//User.cpp
#include "stdafx.h"
#include "user.h"
#include
using namespace std;
//初始化静态成员变量
int User::CurrentID = 999;

//构造函数&析构函数
User::User(string name1, string password1)
{
	CurrentID++;
	id = CurrentID;
	name = name1;
	password = password1;
}

User::~User()
{
	CurrentID--;
}

//功能实现函数
void User::GetUser()
{
	cout << "UserID:  " << id <> oricd;
		if (oricd != password && i != 2)
		{
			cout << "Wrong Code! ";
		}
		else if (oricd != password && i == 2)
		{
			cout << "Wrong code, Please try later" << endl;
			break;
		}
		else if (oricd == password && i < 3)
		{
			cout << "Please reset you code:" << endl;
			cin >> oricd;
			password = oricd;
			cout << "Done!" << endl;
			break;
		}
	}
}

重载构造函数我就省略了

//User.h
#pragma once
#ifndef _USER_H_
#define _USER_H_
#include
using std::string;

class User
{
public:
	//构造函数&析构函数
	User(string name1, string password1);
	~User();
	//
	void GetUser();     //打印用户信息,包括用户编号,用户名,密码
	void SetCode();        //修改密码,修改前要求输入旧密码验证,连续三次输入错误将提示用户稍后再试,并暂时退出修改密码程序
	static int GetCurrentID() { return CurrentID; }  //打印共有属性,同时打印最后一个新增用户的信息
private:
	int id;              //用户编号
	string name;       //用户名,由字母,数字,符号的组合
	string password;   //密码,由字母,数字,符号的组合
	static int CurrentID;//用于记录当前已经被使用的最大ID号
};


#endif // _USER_H_

// 用户管理.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include
#include"user.h"
using std::string;
using namespace std;

int main()
{
	User a("张三", "4344563"), b("李四", "55687966");
	cout << "Function1" << endl;
	a.GetUser();
	b.GetUser();
	cout << "Function2" << endl;
	a.SetCode();
	cout << "Function3" << endl;
	cout << "CurrentID:" << User::GetCurrentID() << endl;
	system("pause");
    return 0;
}

程序目前没有实现输出最后一个新增用户信息的功能,继续挖坑。

运行结果如下:

实验5 string类和vector模板的基本用法 动态内存 浅复制和深复制 指针和引用_第2张图片

2、图书入库

// 图书入库.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include"book.h"
#include
#include
#include
using namespace std;
using std::string;
using std::vector;
int main()
{
	int cnt = 0;
	// 定义一个vector类对象
	vector books;

	string isbnL, titleL;
	float priceL;

	// 录入图书信息,构造图书对象,并添加到前面定义的vector类对象中
	// 循环录入,直到按下Ctrl+Z时为止 (也可以自行定义录入结束方式) 
	while (cin >> isbnL >> titleL >> priceL)
	{
		Book b1(isbnL, titleL, priceL);
		books.push_back(b1);
		cnt++;
	}

	// 输出入库所有图书信息
	for (int i = 0; i < cnt; i++)
	{
		books[i].print();
	}
	system("pause");
    return 0;
}

//book.h
#pragma once
#ifndef _BOOK_H_
#define _BOOK_H_
#include
using std::string;
class Book
{
public:
	Book(string isbnX, string titleX, float priceX);
	//析构函数省略
	void print(); //打印图书信息
private:
	string isbn;
	string title;
	float price;
};
#endif // _BOOK_H_

#include "stdafx.h"
#include"book.h"
#include
#include
using namespace std;
using std::string;

Book::Book(string isbnX, string titleX, float priceX)
{
	isbn = isbnX;
	title = titleX;
	price = priceX;
}

void Book::print()
{
	cout <<"编号:"<< isbn<<" 书名:"<<"《"<< title <<"》"<<" 价格:"<< price << endl;
}

运行结果如下:

实验5 string类和vector模板的基本用法 动态内存 浅复制和深复制 指针和引用_第3张图片

最近在忙的事程序里都有了。另外还要刷OJ,每道题都要想很久才能出来,很烦,根本没时间搞C++。。。。

你可能感兴趣的:(实验5 string类和vector模板的基本用法 动态内存 浅复制和深复制 指针和引用)