实验5
Posted zzy4546
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验5相关的知识,希望对你有一定的参考价值。
#include <iostream> #include <vector> #include <string> using namespace std; // 函数声明 void output1(vector<string> &); void output2(vector<string> &); int main() { vector<string>like, dislike; // 创建vector<string>对象likes和dislikes like.push_back("favorite book") ; like.push_back("music"); like.push_back("film"); // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) like.push_back("paintings");// 补足代码 like.push_back("anime"); like.push_back("sport"); // 。。。 like.push_back("sportsman"); cout << "-----I like these-----" << endl; output1(like);// 调用子函数输出vector<string>数组对象likes的元素值 cout<<"what do you dislike?"<<endl;// 为vector<string>数组对象dislikes添加元素值 string s1;// 补足代码 while(true) { getline(cin,s1); if(s1!="etc") dislike.push_back(s1); else break; } cout << "-----I dislike these-----" << endl; output2(dislike);// 调用子函数输出vector<string>数组对象dislikes的元素值 like.swap(dislike);// 交换vector<string>对象likes和dislikes的元素值 cout << "-----I likes these-----" << endl; output1(like);// 调用子函数输出vector<string>数组对象likes的元素值 cout << "-----I dislikes these-----" << endl; output2(dislike);// 调用子函数输出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 it; for(it=v.begin();it!=v.end();it++) cout<<*it<<" "; cout<<endl; }
6.18
#include<iostream> using namespace std; int main() { int *p; *p=9;// 编译器可以编译通过,但这种用法不对 cout<<"the value of a is :"<<*p; return 0; } //定义指针后必须先赋值 在引用
改
#include<iostream> using namespace std; int main() { int a,*p=&a; *p=9; cout<<"the value of a is :"<<*p; return 0; }
6.19
#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<<endl; return 0; }//编译依旧可以正确运行 但用new分配的内存必须用delete 加以释放
改
#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<<endl; return 0; }
期中考试3题
1
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; class Dice { public: Dice(int s0=0); int cast(); private: int sides; }; Dice::Dice(int s0):sides(s0){ } int Dice::cast() { int r=rand()%sides+1; return r; } int main() { Dice mydice(40); srand(time(NULL)); double m=0,p; for(int t=0;t<500;t++) {
if(mydice.cast()==39) m++; } p=m/500; cout<<p<<endl; return 0; }
这是骰子问题,里面用到了随机函数和随机种子但自己第一次并未做对原因在与自己对种子不太了解自己第一次实验中没有用到种子但结果也是对的所以自己并没有注意通过这次实验体会了下种子的作用自己调试时候多输入了一行看看数字
但如果删掉随机种子
他的数是不会变的
2
user.h
#ifndef USER_H #define USER_H #include<string> using namespace std; class user { public: user(string namex, string passwordx="111111"); void print(); void changenumber(); void showcurrentID(); private: int id; string name,password; static int CurrentID; }; #endif
user.cpp
#include<iostream> #include"user.h" #include<string> using namespace std; user::user(string namex, string passwordx):name(namex),password(passwordx){ id=++CurrentID; } void user::changenumber() { int i=0; string m,n; while(true) { cout<<"输入旧密码:"<<endl; cin>>m; if(m==password) { cin>>n; password=n; cout<<"new password:"<<password<<endl; break; } else { cout<<"error!please try again!"<<endl; i++; if(i<3) continue; else { cout<<"please try later!"<<endl; break; } } } } void user::print() { cout<<"id:"<<id<<endl; cout<<"name:"<<name<<endl; cout<<"password:"<<password<<endl; } void user::showcurrentID() { cout<<CurrentID <<endl; cout<<"id:"<<id<<endl; cout<<"name:"<<name<<endl; cout<<"password:"<<password<<endl; } int user::CurrentID=999;
#include<iostream> #include"user.h" #include<string> using namespace std; int main() { user u1("zzy","5201314"); u1.print(); u1.changenumber(); u1.showcurrentID(); return 0; }
3
book.h
#ifndef BOOK_H #define BOOK_H #include <string> using std::string; class Book { public: Book(string isbnX, string titleX, float priceX); //构造函数 void print(); // 打印图书信息 private: string isbn; string title; float price; }; #endif
book.cpp
#include "book.h" #include <iostream> #include <string> using namespace std; Book::Book(string isbnX, string titleX, float priceX):isbn(isbnX),title(titleX),price(priceX){ }// 构造函数 void Book::print() { cout<<"isbn:" <<isbn<<endl; cout<<"title:"<<title<<endl; cout<<"price:"<<price<<endl; }// 打印图书信息 // 补足程序 // ...
main.cpp
#include "book.h" #include <vector> #include <iostream> using namespace std; int main() { vector<Book>mybooks;// 定义一个vector<Book>类对象 string isbn, title; float price; while(true) { if(cin>>isbn>>title>>price) { if(isbn=="0"&&title=="0"&&price==0) break; else { Book book(isbn,title,price); mybooks.push_back(book); } } } for(int i=0;i<mybooks.size();i++) mybooks[i].print(); // 录入图书信息,构造图书对象,并添加到前面定义的vector<Book>类对象中 // 循环录入,直到按下Ctrl+Z时为止 (也可以自行定义录入结束方式) return 0; }
这一题和第一个exc3差不多都是考察vector的相对来还是很简单,但是对循环的停止我还是做的比较僵硬,也未能满足老师所说的按control +z的要求 所以恳请各位大佬们给予改进
最后一题矩阵的那一题目前还未能完善好,主要在输出改变某行某列的成员函数那里出了点问题,未能完成任务,可能会超时,但不会逃席。
以上是关于实验5的主要内容,如果未能解决你的问题,请参考以下文章
[NTUSTISC pwn LAB 7]Return to libc实验(puts泄露libc中gadget片段定位)