實驗5
阿新 • • 發佈:2018-05-23
lse 有用 AI ctime style ase 。。 簡單 delet
#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