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
likes.push_back("favorite book");
likes.push_back("music");
likes.push_back("film");
// 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc)
// 补足代码
// 。。。
cout << "-----I like these-----" << endl;
output1(likes);// 调用子函数输出vector<string>数组对象likes的元素值
dislikes.push_back("sport");// 补足代码
dislikes.push_back("paintings");// 。。。
dislikes.push_back("sportsman");
// 为vector<string>数组对象dislikes添加元素值
// 补足代码
// 。。。
cout << "-----I dislike these-----" << endl;
output2(dislikes);// 调用子函数输出vector<string>数组对象dislikes的元素值
// 补足代码
// 。。。
likes.swap(dislikes);// 交换vector<string>对象likes和dislikes的元素值
// 补足代码
// 。。。
cout << "-----I likes these-----" << endl;
output1(likes);// 调用子函数输出vector<string>数组对象likes的元素值
// 补足代码
// 。。。
cout << "-----I dislikes these-----" << endl;
output2(dislikes);// 调用子函数输出vector<string>数组对象dislikes的元素值
// 补足代码
// 。。。
return 0;
}
// 函数实现
// 以下标方式输出vector<string>数组对象v的元素值
void output1(vector<string> &v) {
for(int i=0;i<v.size();++i){
cout<<v[i]<<endl;
}// 补足程序
// 。。。
}
// 函数实现
// 以迭代器方式输出vector<string>数组对象v的元素值
void output2(vector<string> &v) {
for(int i=0;i<v.size();++i){
cout<<v[i]<<endl;
}// 补足程序
// 。。。
}
2.习题6-17
#include<iostream>
using namespace std;
int main(){
int i,*p;
p=&i;
*p=9;
cout<<"The value at p:"<<*p;
return 0;
}
原函数在不知道指针p指向哪里的时候就改了值,是不行的,应该先给指针p一个地址,然后才能改值。
习题6-18
#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;
delete a;
return 0;
}
需要用delete释放内存。
3.matrix类
matrix.h
#ifndef MATRIX_H
#define MATRIX_H
class Matrix {
public:
Matrix(int n);
Matrix(int n, int m);
Matrix(const Matrix &X);
~Matrix();
void setMatrix(const float *pvalue);
void printMatrix() const;
inline float &element(int i, int j){
return p[i*cols+j];
}
inline float element(int i, int j) const{
return p[i*cols+j];
}
void setElement(int i, int j, int value);
inline int getLines() const;
inline int getCols() const;
private:
int lines;
int cols;
float *p;
};
#endif
matrix.cpp
#include<iostream>
#include"matrix.h"
using namespace std;
Matrix::Matrix(int n):lines(n),cols(n){
p=new float[lines*cols];
}
Matrix::Matrix(int n,int m):lines(n),cols(m){
p=new float[lines*cols];
}
Matrix::Matrix(const Matrix &X):lines(X.lines),cols(X.cols){
p=new float[lines*cols];
for(int i=0;i<lines*cols;++i){
p[i]=X.p[i];
}
}
Matrix::~Matrix(){
}
void Matrix::setMatrix(const float *pvalue){
for(int i=0;i<lines*cols;++i)
p[i]=pvalue[i];
}
void Matrix::printMatrix() const{
for(int i=0;i<lines;++i){
for(int j=0;j<cols;++j)
cout<<element(i,j)<<" ";
cout<<endl; }
}
void Matrix::setElement(int i,int j,int value){
p[(i-1)*lines+j-1]=value;
}
inline int Matrix::getLines() const{
cout<<lines<<endl;
}
inline int Matrix::getCols() const{
cout<<cols<<endl;
}
main.cpp
#include <iostream>
#include"matrix.h"
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
Matrix A(4);
Matrix B(3,4);
const float *p,*o;
float s[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
p=s;
A.setMatrix(p);
float t[12]={1,2,3,4,5,6,7,8,9,10,11,12};
o=t;
B.setMatrix(o);
A.printMatrix();
B.printMatrix();
return 0;
}
写注释会乱码、、、、
3.期中考试第一题
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
class Dice{
public:
Dice(int n);
int cast();
private:
int sides;
};
Dice::Dice(int n){
sides=n;
}
int Dice::cast(){
return rand()%sides;
}
int main(){
Dice myDice(40);
float j=0;
srand(time(NULL));
for(int i=0;i<=500;++i){
if(myDice.cast()==23)
++j;
}
cout<<j/500<<endl;
return 0;
}
考试的时候一直不知道随机函数怎么用,一直没写出来
期中考试第2题
uer.h
#include<iostream> #include<cstring> using namespace std; class User{ public: User(string Name,string Password="111111"); void changepassword(); void printf(); private: int id; string name,password; static int CurrentID,count; };
user.cpp
#include<iostream> #include"user.h" #include<cstring> using namespace std; int User::CurrentID=999; int User::count=0; User::User(string Name,string Password){ id=CurrentID++; name=Name; password=Password; } void User::printf(){ cout<<id<<" "<<name<<" "<<password<<endl; } void User::changepassword(){ cout<<"请输入原密码"<<endl; string m1,m2; while(cin>>m1){ if(m1==password){ cout<<"请输入修改的密码"<<endl; cin>>m2; password=m2;break; } else{ cout<<"密码错误,请从新输入"<<endl; ++count; if(count==3){ count=0; cout<<"请稍后再试"<<endl; break; } changepassword(); } } }
main.cpp
#include <iostream> #include"User.h" #include <string> using namespace std; int main() { User myuser("zq"); myuser.printf(); myuser.changepassword(); myuser.printf(); return 0; }
期中考试第3题
book.h
1 #ifndef BOOK_H 2 #define BOOK_H 3 #include <string> 4 using std::string; 5 6 class Book { 7 public: 8 Book(string isbnX, string titleX, float priceX); //构造函数 9 void print(); // 打印图书信息 10 private: 11 string isbn; 12 string title; 13 float price; 14 }; 15 #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<<" "<<title<<" "<<price<<endl; } // 打印图书信息 // 补足程序 // ...
main。cpp
#include <iostream> #include"book.h" #include<vector> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char** argv) { vector<Book>mybook; // 定义一个vector<Book>类对象 // 补足程序 // ... string isbn, title; float price; int i=0; cout<<"输入的书:"; while(cin>>isbn>>title>>price){ Book a(isbn,title,price); mybook.push_back(a); cout<<"输出:"; mybook[i++].print(); } // 录入图书信息,构造图书对象,并添加到前面定义的vector<Book>类对象中 // 循环录入,直到按下Ctrl+Z时为止 (也可以自行定义录入结束方式) // 补足程序 // ... // 输出入库所有图书信息 // 补足程序 // ... return 0; }
感想:好难呀~~~绝望~~~难受。