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 string i; cout<<"input what you likes:" ; while(cin>>i) { if(i=="0")//0作为输入结束的标志 break; likes.push_back(i); } // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) // 补足代码 // 。。。 cout << "-----I like these-----" << endl; output1(likes); // 调用子函数输出vector<string>数组对象likes的元素值 // 补足代码 // 。。。 cout<<"input what you dislikes:" ; while(cin>>i) { if(i=="0") break; dislikes.push_back(i); } // 为vector<string>数组对象dislikes添加元素值 // 补足代码 // 。。。 cout << "-----I dislike these-----" << endl; output1(dislikes); // 调用子函数输出vector<string>数组对象dislikes的元素值 // 补足代码 // 。。。 vector<string>temp; temp=likes; likes=dislikes; dislikes=temp; // 交换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]<<" "; } cout<<endl; // 补足程序 // 。。。 } // 函数实现 // 以迭代器方式输出vector<string>数组对象v的元素值 void output2(vector<string> &v) { vector<string>::iterator i; for(i= v.begin() ; i<v.end() ; ++i) cout<<*i<<" "; cout<<endl; // 补足程序 // 。。。 }
2.
6-17
指针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; }
3.
//matrix.h
#ifndef MATRIX_H #define MATRIX_H class Matrix { public: Matrix(int n); // 构造函数,构造一个n*n的矩阵 Matrix(int n, int m); // 构造函数,构造一个n*m的矩阵 Matrix(const Matrix &X); // 复制构造函数,使用已有的矩阵X构造 ~Matrix(); //析构函数 void setMatrix(const float *pvalue); // 矩阵赋初值,用pvalue指向的内存块数据为矩阵赋值 void printMatrix() const; // 显示矩阵 inline float &element(int i, int j); //返回矩阵第i行第j列元素的引用 inline float element(int i, int j) const;// 返回矩阵第i行第j列元素的值 void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value inline int getLines() const{return lines;}//返回矩阵行数 inline int getCols() const{return cols;}//返回矩阵列数 private: int lines; // 矩阵行数 int cols; // 矩阵列数 float *p; // 指向存放矩阵数据的内存块的首地址 }; #endif
//matrix.cpp
#include"matrix.h" #include<iostream> using namespace std; Matrix::Matrix(int n) { p=new float{n*n}; lines=n; cols=n; } Matrix::Matrix(int n, int m) { p=new float{n*m}; lines=n; cols=m; } Matrix::Matrix(const Matrix &X) { lines=X.lines; cols=X.cols; p=new float[X.lines*X.cols]; for(int i=0;i<X.lines*X.cols;i++) p[i]=X.p[i]; } Matrix::~Matrix() { delete[] p; } 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*lines+j]=value; } inline float &Matrix::element(int i,int j) { return p[i*lines+j]; } inline float Matrix::element(int i,int j) const { return p[i*lines+j]; }
#include"matrix.h" #include<iostream> using namespace std; int main() { float b1[4]={1,2,3,4}; float b2[6]={1,2,3,4,5,6}; Matrix a1(2); Matrix a2(2,3); a1.setMatrix(b1); a2.setMatrix(b2); cout<<"矩阵a1为"<<a1.getLines()<<"行"<<a1.getCols()<<"列的矩阵:"<<endl; a1.printMatrix(); cout<<"矩阵a2为"<<a2.getLines()<<"行"<<a2.getCols()<<"列的矩阵:"<<endl; a2.printMatrix(); cout<<"把矩阵a1复制给矩阵c,矩阵c为:"<<endl; Matrix c(a1); c.printMatrix(); cout<<"将a矩阵的第0行第0列改为9,得到的矩阵为:"<<endl; a1.setElement(0,0,9); a1.printMatrix(); return 0; }
4.
①
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; class Dice { public: Dice(int n); int cast(); private: int sides; }; int Dice::cast() { return rand()%sides+1; } Dice::Dice(int n) :sides(n){}; int main() { int cnt=0; Dice a(40); for (int i = 1; i <= 500; i++) { if (a.cast() == 13) cnt++; } double p; p = (double)cnt/500.0*100; cout << "抛到13的几率为 " << p <<"%"<< endl; return 0; }