实验五
1.
#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("paintings:****"); likes.push_back("anime:****"); cout << "-----I like these-----" << endl; // 调用子函数输出vector<string>数组对象likes的元素值 // 补足代码 output1(likes); // 为vector<string>数组对象dislikes添加元素值 // 补足代码 dislikes.push_back("sport:***"); dislikes.push_back("sportsman:*****"); cout << "-----I dislike these-----" << endl; // 调用子函数输出vector<string>数组对象dislikes的元素值 // 补足代码 output2(dislikes); // 交换vector<string>对象likes和dislikes的元素值 // 补足代码 likes.swap(dislikes); cout << "-----I likes these-----" << endl; // 调用子函数输出vector<string>数组对象likes的元素值 // 补足代码 output1(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<string>::iterator t; for(t=v.begin();t!=v.end();t++) cout<<*t<<endl; }
2.(1)6.17
#include<iostream> using namespace std; int main(){ int i=0; int * p=&i; *p=9; cout<<"the value at p: "<<*p; return 0; }
这是因为指针没有经过初始化,会随即指向任意内存,造成崩溃,所以对其进行初始化即可。
(2)6.18
#include<iostream> using namespace std; int fnl(){ int *p=new int(5); return *p; /**/ delete p; /**/ } int main(){ int a=fnl(); cout<<"the value of a is:"<<a; return 0; }
这个题目可以正常编译,但是实际上没有进行内存释放,会降低运行速度。
第三个问题我试着编译,但是总是会报错,提示找不到matirx.h 库,所以我还没有找到解决的方法,暂时就没写。
期中考试
一。
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; class Dice { public: int n; void Dice(int n); int cast(); private: int sides; }; Dice::Dice(int n){ sides = n;} Dice::cast() { int m; m = (rand() % (n-1+1)+1); return m;} int main() { srand((unsigned)time(0)); int n,x; cout << "输入班级人数和学号:"; cin>>n>>x; Dice A(n); int i; int m;double y=0.00; for (i=0;i<500;i++) { if (A.cast()==x)y++; } double p=(double)y/500.00; cout << "你被抽中的概率为:"<<p<<endl; return 0; }
二。
用到函数太多了,所以我只写了一个整体的程序。
#include<iostream> #include<string> using namespace std; static int n=999; class User { private: int id; string name; string password; static int CurrentID; public: User(string s1,string s2="111111") { n++; id=n; name=s1; password=s2; CurrentID++; } User(User &u1) { id = u1.id; name = u1.name; password=u1.password; CurrentID=u1.CurrentID; } void show1() { cout<<"该用户信息为 id:"<<id<<"name:"<<name<<"password:"<<password<<endl; } static void show2(User &u1){ /*输出CurrentID*/ cout<<"CurrentID:"<<CurrentID <<endl; cout<<"最后一个新用户为:"; u1.show1(); } void change() { /*修改密码*/ string s3,s4; int j=3; while (j) { cout<<"输入原有密码:"; cin>>s3; if (s3==password) { cout<<"输入新密码:"; cin>>s4; password=s4; break; } if (s3!=password){ j--; cout<<"输入错误"<<endl; } } if(j==0)cout<<"错误次数过多,请稍后再试" << endl; } }; int User::CurrentID = 999;/*给CurrentID赋初值*/ int main() { User u1("user1", "666666"); User u2("user2"); User u3("user3", "233333"); u1.show1(); u2.show1(); u3.show1(); User u(u3); User::show2(u3); u1.change(); u1.show1(); u2.change(); return 0; }
三。
#pragma once #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 #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() { /*print函数的实现*/ cout << "isbn:" << isbn << " title:" << title << " price:" << price << endl; } #include "book.h" #include <vector> #include <iostream> using namespace std; int main() { vector<Book>books; string isbn, title; float price; while (1) { cout<<"请输入图书信息,若想终止输入,请输入Quit;" << endl; cin >> isbn;/*先输入isbn码,判断是否执行输入操作*/ if (isbn != "Quit") { cin>>title>>price; } if (isbn=="Quit") break;/*输入Quit终止*/ Book a(isbn,title,price); books.push_back(a);/*向数组中加入新的对象*/ } int i; for (i = 0; i < books.size(); i++) { books[i].print();/*输出所有图书信息*/ } return 0; }