自学内容网 自学内容网

c1-第三周

1月份

2.定义一个整形数组arr

(1)把arr中的偶数去掉后保存到一个新数组中
(2)输出arr数组元素,输出新数组元素,并输出新旧数组长度之差

void test_week3_1(){
    int arr1[9]={1,2,3,4,5,6,7,8,9};
    int arr2[9];
    int k = 0;
    for(int i = 0;i<9;i++){
        if(arr1[i]%2 != 0){
            arr2[k] = arr1[i];
            cout << arr2[k] << endl; //打印新数组
            k++;
        }
    }
    cout << 9-k<< endl;
}

在这里插入图片描述

2.定义整形栈s

(1)栈s中添加多个元素
(2)遍历并输出元素

#include <stack> //导栈
void test_week_3(){
    stack<int> s; //定义int类型的栈(容器)

    s.push(1);//放进去  底
    s.push(2);//放进去
    s.push(3);//放进去 顶

    for(int i = 0;i<3;i++){
        cout << s.top()<< endl; //3 2 1
        s.pop();//弹走
    }
}

3.输入一个字符串包括大小写和数字,将其中的大写英文字母改为小写,并且输出数字个数

(1)按要求提示并输入要转换的字符串
(2)循环判断每个字符并转换并判断数字的个数
(3)正确输出转换后的结果和数字的个数

int main(){

    string str1 = "abc111AAA";
    int num = 0;
    for(int i = 0 ;i<str1.length();i++){ //i下标
        if(isdigit(str1[i])){
            num++;
        } else if(isupper(str1[i])){
            str1[i]=tolower(str1[i]);
        }
    }
    cout << num<< endl;
    cout << str1;
 }

4.根据下面数据,编程实现要求功能:

姓名 年龄 性别
name age gender
A 22 女
B 21 女
C 20 男
D 23 男
E 19 男
(1)定义学生结构体或者类Stu,包括姓名(name),年龄(age),性别(gender)等变量
(2)定义结构体MyR,要求结构体中用上()运算符重载
(3)定义函数show,要求对传入的学生数据进行显示
(4)在主程序中,根据题目中数据创建学生数组
(5)调用show方法遍历学生数据并输出
(6)对学生数据根据年龄进行排序并输出排序后结果
(7)判断是否存在名字为E的学生并输出结果
(8)要求主程序中使用STL,用上sort方法
(9)要求主程序中排序时用上MyR与运算符重载()


struct student{
    string name;
    int age;
    string sex;
};

//制定排序规则
struct MyR {
    //重载()运算符
    bool operator()(student s1, student s2){
        return s1.age > s2.age; //用年龄 >降序
    }
};

//用来打印结构体数据
void show(student stu){
    cout << "name:" << stu.name <<"age:" << stu.age <<"sex:" <<stu.sex << endl;
}
//以前的写法
//bool compare(student stu1,student stu2){
//    return stu1.age > stu2.age; //>年龄降序  <升序
//}
int main(){
    student stu1={"谢天宇",20,"男"}; //结构体创建对象
    student stu2={"张文京",19,"男"}; //结构体创建对象
    student stu3={"班长",21,"男"}; //结构体创建对象

    student arr[3] ={stu1,stu2,stu3};
    sort(arr,arr+3, MyR()); //排序
    //打印看看是否排序了
    for(int i = 0;i<3;i++){
        show(arr[i]); //在循环中调用打印函数,打印学生信息
    }
 }

9月

1.编写程序实现以下功能或问题

(1)定义一个成绩类Grade
(2)数据成员:gMath、gChn、gEng。分别储存数学、语文、英语的成绩
①说明:学生A三门成绩为77、80、75
②说明:学生B三门成绩为65、75、70
(3)函数成员:构造函数(有参数)、相应的计算、输出信息等函数。计算、输出的实际方式不限
(4)对2个学生(stuA、stuB)的各项成绩,运用合理方法,计算2名学生各自的总分并输出
(5)输出2个学生各项的成绩总和(即mathSum、chnSum、engSum),并相应输出

class Grade{
public:
    int gMath;
    int gChn; //语文
    int gEng; //英文

    //带参构造 用来给属性赋值
    Grade(int math,int chinese,int english){
        gMath = math;
        this->gChn = chinese;
        this->gEng = english;
    }

    void get_sum(){
        cout << "成绩总和是:" << gMath+gChn+gEng <<endl;
    }
    //第5问
    void operator+(Grade a){ //重载(重写)运算符+ (+ - * / % ++ --)
        cout << "语文成绩和是:" << a.gChn+ gChn;
        cout << "英语成绩和是:" << a.gEng+ gEng;
        cout << "数学成绩和是:" << a.gMath+ gMath;
    }
};

3.完成以下功能

问题描述:老师和学生有共同的属性m_name。各自的衡量标准是老师的论文数量m_paper和学生的考试分数m_score。由键盘输入对应的数值,输出复合条件的对应的姓名。老师要求m_paper > 3。学生要求m_score > 80。
提示:本题要#include
(1)定义基类Base
①公有域成员:构造函数(输入m_name行为放在构造函数内)、功能函数(输出数据)、纯虚函数isGood,用于判断是否满足条件、接口函数输出信息
②保护域成员:string型数据m_name、int型数据m_score、int型数据m_paper
(2)派生student和teacher两个类
①公有域成员:构造函数(学生类由键盘输入m_score、教师类由键盘输入m_paper)
②isGood()函数,学生类m_score>80返回1、教师类m_paper>3返回1。不符合条件返回0
(3)对于符合条件(即上条要求)的,接口函数,输出对应的m_name

using namespace std;
class Base{    //父类
protected:
    string m_name;
    int m_score;
    int m_paper;
public:
    Base(string m_name){
        this->m_name = m_name;
    }
    void print(){
        cout <<"名字:" << m_name << endl;
    }
    virtual int isGood()=0; //纯虚函数
};

class student: public Base{ //子类 : 父类   (继承)
public:
    student(string m_name):Base(m_name){ //调用父类的构造函数,给名字赋值
        cout << "输入学生成绩" << endl;
        cin >> m_score;
    }
    int isGood(){  //重写(覆盖)父类的虚函数
        //补齐
        if(m_score > 80){
            cout << "成绩合格" << endl;
            return 1;
        } else{
            cout << "成绩不合格" << endl;
            return 0;
        }
    }
};

class teacher:public Base{  //子类2
public:
    teacher(string m_name):Base(m_name){ //子调用父的构造函数,为了给name赋值
        cout << "输入论文数量" << endl;
        cin >> m_paper;
    }
    int isGood(){
        if(m_paper > 3){
            cout << "论文数量合格" << endl;
            return 1;
        } else
        {
            cout << "论文数量不合格" << endl;
            return 0;
        }
    }
};
int main(){
    student stu1("张世博");
    stu1.print();
    stu1.isGood();

    teacher tea("小李");
    tea.print();
    tea.isGood();
}

4.对运算符“%”重载,实现数组各对应元素求模运算,如:a[3]={ 11,22,37 } ,b[3]={ 3,6,8 } ,则 a%b={ 2,4 ,5 } 。具体要求:

(1)类的公有函数成员:构造函数,接受参数为数组名
(2)利用运算符%的重载,完成相关运算
(3)在主函数中定义相关对象,并进行测试

class Test{
public:
    int arr[3]; //属性
    Test(int a[3]){ //{1,2,3}
        for(int i = 0;i<3;i++){
            arr[i]=a[i];
        }
    }
    void operator%(Test b){ //b---arr{3,6,8}
        for(int i = 0;i<3;i++){
           cout <<  arr[i]%b.arr[i] << endl;
        }
    }
};
int main(){
 int arr1[3] = {11,22,37};
    Test a(arr1);
    int arr2[3] = {3,6,8};
    Test b(arr2);
    a%b;
}

原文地址:https://blog.csdn.net/amynn/article/details/136558026

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!