码迷,mamicode.com
首页 > 编程语言 > 详细

C++实验5

时间:2018-05-20 21:53:43      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:遇到   密码   内容   ons   cpp   info   output   返回值   while   

实验结论

实验内容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("book");
    likes.push_back("music");   
    likes.push_back("film");
    likes.push_back("paintings");
    // 为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("anime");
    dislikes.push_back("sport");
    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]<<" ";
    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;
    // 补足程序
    // 。。。 
}

截图
技术分享图片
实验内容2
源码1

#include <iostream>
using namespace std;
int main()
{
    //int a; 
    //int *p=&a;  可以先定义一个变量a,并将其地址赋给指针p 
    int *p;//指针再被使用前没有被赋初值 
    *p=9;
    cout<<"The value at p: "<<*p;
    return 0;
}

源码2

#include <iostream>
using namespace std;
int fn1(){
    int *p=new int(5);
    return *p;//用new分配的内存没有用delete释放,会导致分配的内存无法回收 
    //delete p;
}
int main()
{
    int a=fn1();
    cout<<"the value of a is: "<<a;
    return 0;
}

实验内容3
源码
main.cpp

#include <iostream>
#include "matrix.h"
using namespace std; 
int main() {
    int l,c,i,j,n;
    cout<<"输入矩阵行数和列数"<<endl;
    cin>>l>>c; 
    float a[l*c];
    cout<<"输入矩阵的各行各列的数"<<endl; 
    for(i=0;i<l*c;i++)
    cin>>a[i];
    Matrix A(l,c);
    A.setMatrix(a);
    cout<<"显示矩阵"<<endl;
    A.printMatrix();
    cout<<"输入i,j 返回第i行第j列的数"<<endl;
    cin>>i>>j;
    A.element(i,j);
    cout<<"重新设置这个数"<<endl;
    cin>>n; 
    A.setElement (i,j,n);
    cout<<"重新返回这个数"<<endl;
    A.element(i,j);
    cout<<"返回矩阵行数与列数"<<endl;
    A.getLines() ;
    A.getCols() ;
    return 0;
}

matrix.cpp

#include <iostream>
#include "matrix.h"
using namespace std;
int i,j;
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(i=0;i<lines*cols;i++)
    p[i]=x.p[i];
} 
Matrix::~Matrix() {
    delete[] p;
}
void Matrix::setMatrix(const float *pvalue) {
    for(i=0;i<lines*cols;i++)
    p[i]=pvalue[i];
}
void Matrix::printMatrix() const{
    for(i=0;i<lines;i++){
    for(j=0;j<cols;j++)
    cout<<p[i*lines+j]<<" ";
    cout<<endl;
    }
}
inline float Matrix::element(int i,int j) const{
    cout<<p[(i-1)*lines+j-1]<<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;
}

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) const;// 返回矩阵第i行第j列元素的值 
        void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value
        inline int getLines() const; //返回矩阵行数 
        inline int  getCols() const; //返回矩阵列数 
    private:
        int lines;    // 矩阵行数
        int cols;    // 矩阵列数 
        float *p;   // 指向存放矩阵数据的内存块的首地址 
};
#endif

截图
技术分享图片
实验内容4
期中考试第二题
源码
main.cpp

#include <iostream>
#include"user.h"
#include <string>
using namespace std;
int main() {
    string n,p;
    cout<<"请输入用户名和密码"<<endl;
    cin>>n>>p;
    User user(n,p);
    user.print();
    user.change();
    cout<<"当前ID:";
    user.getCurrentID(); 
    return 0;
}

user.h

class User{
    public:
        User(string n,string p="111111");
        void print();
        void change();
        void static getCurrentID();
    private:
        int id;
        string name,password;
        int static CurrentID;
};

user.cpp

#include<iostream>
#include"user.h"
#include<string>
using namespace std;
int User::CurrentID=999;
User::User(string n,string p="111111"):name(n),password(p){
     id=++CurrentID;    
}
void User::print(){
    cout<<"用户编号:"<<id<<endl; 
    cout<<"用户名:"<<name<<endl;
    cout<<"密码:"<<password<<endl;
}
void User::change(){
    string p;
    cout<<"请输入旧密码"<<endl;
    while(true){
    cin>>p;
    if(p!=password)
    cout<<"密码错误!请重新输入"<<endl;
    else break; 
    } 
    string newp;
    while(true){
    cout<<"请输入新密码"<<endl;
    cin>>p;
    if(p==password)
    cout<<"新密码不能与旧密码相同!"<<endl,continue;
    cout<<"请再次输入新密码"<<endl;
    cin>>newp;
    if(newp!=p) 
    cout<<"两次密码不同,请重新输入"<<endl;
    else cout<<"修改成功"<<endl,break; 
    }
    password=newp;
}
void User::getCurrentID(){
    cout<<CurrentID<<endl;
}

截图
技术分享图片
期中考试第三题
源码
main.cpp

#include "book.h"
#include <vector>
#include <iostream>
using namespace std;

int main()
{
    cout<<"请输入出版编号,书名及定价"<<endl;
    vector<Book>mybooks; 
    string isbn, title;
    float price;
    int s=0;
    while(cin>>isbn>>title>>price){
        Book book(isbn,title,price);
        mybooks.push_back(book);
        s++; 
    }
    for(int i=0;i<s;i++){
        mybooks[i].print();
    }
    return 0;
}

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<<endl;
    cout<<"书名:"<<title<<endl;
    cout<<"定价:"<<price<<endl;
}

截图
技术分享图片

实验总结

再一次看期中考试的题目,感觉没有做的时候感觉那么难,可能考试的时候时间比较紧,一时半数不能有清晰简洁的思路,所以无从下手,另外对于函数返回引用这一方面在实验时遇到了点问题,查了查函数返回值与返回引用的区别,发现函数返回值时会生成一个临时变量来间接赋值,而函数返回引用则不会产生临时变量,而是直接赋值,这样省了一点内存也提高了一些效率。

C++实验5

标签:遇到   密码   内容   ons   cpp   info   output   返回值   while   

原文地址:https://www.cnblogs.com/wyqwyq/p/9063319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!