C++题库

1、求最大值

题目描述:输入两个整数,比较大小并输出“max=”,之后输出较大的值。

代码实现

#include <iostream>

using namespace std;

int main()
{
   
    int num1, num2;
    cin>>num1>>num2;
    num1 > num2 ? cout<<num1 : cout<<num2;
    return 0;
}

执行结果:在这里插入图片描述

2、求圆面积

题目描述:定义一个circle圆类,有浮点型的半径属性和计算面积行为。PI值定为常量3.14。从键盘接收一个半径值并创建相应的circle对象,输出这个圆的面积。

代码实现

#include <iostream>

using namespace std;

const float PI = 3.14;

class circle{
   


public:
    circle(float a)
    {
   
        r = a;
    }
    void area()
    {
   
        cout<<PI*r*r<<endl;
    }
private:
    float r;
};

int main()
{
   
    float r;
    cin>>r;
    circle crl(r);
    crl.area();
    return 0;
}

执行结果
在这里插入图片描述

3、编写重载函数来打印字符串

题目描述:编写函数 print_spaced 来打印字符串,要求打印出的字符串每个字母之间都有一个空格。要求编写两个同名函数,一个支持字符数组输入,另一个支持string类型输入。然后编写main函数测试这两个函数,第一个使用字符数组输入,第二个使用string类型输入。
函数原型为:void print_spaced(char s[]) ; void print_spaced(string s) ;

代码实现

#include <iostream>
#include <string.h>

using namespace std;

void print_spaced(char s[]);
void print_spaced(string s);

void print_spaced(char s[])
{
   
    int i = 0;
    while(s[i] != '\0')
    {
   
        cout<<s[i];

        if((i != strlen(s)-1))
        {
   
            cout<<" ";
        }
        i++;
    }
    cout<<endl;
}

void print_spaced(string s)
{
   
    for(int i = 0; i < s.length(); i++)
    {
   
        cout<<s[i];

        if((i != s.length()-1))
        {
   
            cout<<" ";
        }
    }
}


int main()
{
   

    char s1[101];
    string str;

    cin>>s1;
    print_spaced(s1);

    cin>>str;
    print_spaced(str);

    return 0;
}

运行结果
在这里插入图片描述

4、设计带构造函数的Dog类

题目描述:设计一个Dog类,包含name、age、sex和weight等属性,在有参数的构造函数中对数据成员进行初始化。
公有成员函数有:GetName()、GetAge()、GetSex()和GetWeight()可获取名字、年龄、性别和体重。编写成员函数speak() 显示狗的叫声(Arf!Arf!)。编写主函数,输入狗的名字、年龄、性别和体重;声明Dog对象并用输入的数据通过构造函数初始化对象,通过成员函数获取狗的属性并显示出来。

代码实现

#include <iostream>

using namespace std;


class Dog{
   

public:
    Dog(string names, int ages, string sexs, float weights)
    {
   
        name = names;
        age = ages;
        sex = sexs;
        weight = weights;
    }

    string GetName();

    int GetAge();

    string GetSex();

    float GetWeight();

    void speak();


private:
    string name;
    int age;
    string sex;
    float weight;

};

string Dog::GetName()
{
   
    return name;
}

int Dog::GetAge()
{
   
   return age;
}

string Dog::GetSex()
{
   
    return sex;
}

float Dog::GetWeight()
{
   
    return weight;
}

void Dog::speak()
{
   
    cout<<"Arf!Arf!"<<endl;
}

int main()
{
   
    string name;
    int age;
    float weight;
    string sex;

    cin>>name>>age>>sex>>weight;

    Dog dog(name, age, sex, weight);
    cout<<dog.GetName()<<endl;
    cout<<dog.GetAge()<<endl;
    cout<<dog.GetSex()<<endl;
    cout<<dog.GetWeight()<<endl;
    dog.speak();

    return 0;
}

运行结果
在这里插入图片描述

5、定义一个带重载构造函数的日期类

题目描述:定义一个带重载构造函数的日期类Date,数据成员有年、月、日;成员函数包括:一个带参数的构造函数Date(int,int,int),一个不带参数的构造函数(设置默认值为1900-1-1),一个按“年-月-日”格式显示日期的函数void show(),一个对数据成员赋值的函数void init(int,int,int)。
主函数中对类的测试要求:

  1. 分别使用两个不同的重载构造函数创建两个日期类对象(必须为d1,d2,d2初始值为2100-12-12);
  2. 按“年-月-日”格式分别显示两个对象的值;
  3. 输入数据,用init函数为d1赋值;
    2.按“年-月-日”格式显示对象d1的值;

代码实现

#include <iostream>

using namespace std;


class Date{
   

public:
    Date(int, int, int);

    Date();

    void show();

    void init(int,int,int);

private:
    int year;
    int mouth;
    int day;
};

Date::Date()
{
   
    year = 1900;
    mouth = 1;
    day = 1;
}

Date::Date(int years, int mouths, int days)
{
   
    year = years;
    mouth = mouths;
    day = days;
}

void Date::show()
{
   
    cout<<year<<"-"<<mouth<<"-"<<day<<endl;
}

void Date::init(int years, int mouths, int days)
{
   
    year = years;
    mouth = mouths;
    day = days;
}

int main()
{
   
    int y;
    int m;
    int d;

    Date d1;
    Date d2(2100, 12, 12);
    d1.show();
    d2.show();

    cin>>y>>m>>d;

    d1.init(y, m, d);

    d1.show();


    return 0;
}

运行结果
在这里插入图片描述

6、 C++第三章——指针,动态生成Person类的对象

题目描述:编写Person类,数据成员为姓名(20字符长度)、年龄(int)和性别(char)。
编写无参数的构造函数,其中姓名赋值为“XXX”,年龄0,性别m;
编写析构函数,在其中输出字符串“Now destroying the instance of Person”;
编写Register成员函数,为数据成员赋值;
编写showme成员函数,显示姓名、年龄和性别。

编写主函数:
用Person类创建2个指针,p1和 p2;
用new创建两个Person对象,分别将指针赋值给p1,p2;
用showme成员函数显示p1,p2所指对象的值;
再输入一组“姓名、年龄和性别”值,用成员函数Register为p1的成员赋值;
将p1所指对象的值赋值给p2所指对象;
用showme显示p1、p2所指对象的值。
删除动态对象。

代码实现

#include <iostream>
#include <string.h>

using namespace std;


class Person{
   

public:
    Person();
    ~Person();
    void Register(char names[20], int ages, char sexs);
    void showme();


private:
    char name[20];
    int age;
    char sex;
};

Person::Person()
{
   
    strcpy(name, "XXX");
    age = 0;
    sex = 'm';
}

Person::~Person()
{
   
    cout<<"Now destroying the instance of Person"<<endl;
}

void Person::Register(char names[20], int ages, char sexs)
{
   
    //将字符串names 赋值给name
    memcpy(name, names, strlen(names));
    age = ages;
    sex = sexs;
}

void Person::showme()
{
   
    cout<<name<<" "<<age<<" "<<sex<<endl;
}


int main()
{
   
    char name[20];
    int ages;
    char sexs;
    Person *p1, *p2;
    p1 = new Person();
    p2 = new Person();
    cout<<"person1:";
    p1->showme();
    cout<<"person2:";
    p2->showme();


    cin>> name >> ages >> sexs;

    p1->Register(name, ages, sexs);

    cout<<"person1:";
    p1->showme();
    *p2 = *p1;

    cout<<"person2:";
    p2->showme();

    delete p1;
    delete p2;
    return 0;
}

运行结果
在这里插入图片描述

7、编写一个小小的计算器,能够计算两个浮点数的加、减、乘、除。

每行是一个测试用例,每行的内容为:操作数1 运算符 操作数2,操作数为浮点数,运算符为+、-、*、/,操作数和运算符之间有一个空格隔开。
对每个测试用例,输出一行计算结果,保留两位小数的精度。如果除法遇到操作数2为0,输出“Divide by zero."。

代码实现

#include <iostream>
#include <iomanip>
//需导入iomanip库 才能使用cout<< fixed <<setprecision(2);

using namespace std;

class Calculator{
   

public:
    Calculator(double inum1, char ioper, double inum2)
    {
   
        num1 = inum1;
        oper = ioper;
        num2 = inum2;
    }

    void calculate()
    {
   
        cout<< fixed <<setprecision(2);
        switch(oper)
        {
   

            case '+' :
                cout<< num1 + num2 <<endl;
                break;
            case '-':
                cout<< num1 - num2 <<endl;
                break;
            case '*':
                cout<< num1 * num2  <<endl;
                break;
            case '/':
                if(num2 == 0)
                {
   
                    cout<< "Divide by zero." <<endl;
                    break;
                }
                cout<< num1 / num2 <<endl;
                break;
            default:
                cout<<"你输入有误" <<endl;
        }

    }

private:
    double  num1, num2;
    char oper;

};

int main()
{
   

    double  num1, num2;
    char oper;


    cin>>num1>>oper>>num2;
    Calculator cal(num1, oper, num2);
    cal.calculate();

    cin>>num1>>oper>>num2;
    Calculator cal2(num1, oper, num2);
    cal2.calculate();

    cin>>num1>>oper>>num2;
    Calculator cal3(num1, oper, num2);
    cal3.calculate();

    cin>>num1>>oper>>num2;
    Calculator cal4(num1, oper, num2);
    cal4.calculate();


    return 0;
}

运行结果
在这里插入图片描述

8、设计一个多功能的MyTime类

题目描述:设计一个多功能的MyTime类,设计多个重载的构造函数,可以设置时间,进行时间的加减运算,按各种可能的格式(24小时制、12小时制)输出时间。

注意:

(1)请考虑设置的时间的合理性(时0-23; 分0-59;秒0-59)。

(2)12小时制中,12:00:00前为AM, 12:00:00及以后为PM

(3)加减运算的加数、减数是一个时间的长度,单位为“时、分、秒”

(4)构造函数:没参数时,设置时间为0时 0分 0秒;有参数时,设置成给定的时、分、秒。

在主函数中

(1)声明两个对象t1,t2,并通过构造函数初始化它们(t2初始化为为8:10:30)

(2)显示按12、14小时制显示t1、t2的时间。

(3)再设置t1的时间,数据由用户输入。

(4)再输入待加减的时间。

(5)t1加输入的时间,并按12小时和24小时制显示。

(6)t2减输入的时间,并按12小时和24小时制显示。

输入格式:

第一行为t1的时间,第二行为待加减的时间

输出格式

显示按12、14小时制显示t1、t2的初始时间

t1加输入的待加减的时间按12小时和24小时制显示。

t2减输入的待加减的时间按12小时和24小时制显示

输入样例:

11 30 30

5 15 20

输出样例:

00:00:00 AM

00:00:00

08:10:30 AM

08:10:30

04:45:50 PM

16:45:50

02:55:10 AM

02:55:10

代码实现

#include<iostream>
using namespace std;
class MyTime
{
   
private:
    int hour;
    int minute;
    int second;
public:
    MyTime()
    {
   
        hour = 0;
        minute = 0;
        second = 0;
    }
    MyTime(int _hour, int _minute, int _second)
    {
   
        hour = _hour;
        minute = _minute;
        second = _second;
    }
    void SetTime(int _hour, int _minute, int _second)
    {
   
        hour = _hour;
        minute = _minute;
        second = _second;
    }
    void addTime(int h,int m,int s)
    {
   
        hour += h;
        minute += m;
        second += s;
        if(second>=60)
        {
   
            second = second -60;
            minute = minute + 1;
        }
        if(minute>=60)
        {
   
            minute = minute - 60;
            hour = hour + 1;
        }
        if(hour>=24)
        {
   
            hour = hour -24;
        }
    }
    void reduceTime(int _h,int _m,int _s)
    {
   
        if(second<_s)
        {
   
            second += 60;
            minute --;
        }
        if(minute<_m)
        {
   
            minute += 60;
            hour --;
        }
        if(hour<_h)
        {
   
            hour = hour + 24;
        }
        hour -= _h;
        minute -= _m;
        second -= _s;
    }
    void print_12()
    {
   
        int tempHour;
        hour>=12?tempHour=hour-12:tempHour=hour;
        if(tempHour<10){
   
            cout<<'0';
        }
        cout<<tempHour<<':';
        if(minute<10){
   
            cout<<'0';
        }
        cout<<minute<<':';
        if(second<10){
   
            cout<<'0';
        }
        cout<<second;
        if(hour>12||((hour==12)&&((minute>0)||(second>0)))){
   
            cout<<" "<<"PM"<<endl;
        }else{
   
            cout<<" "<<"AM"<<endl;
        }
    }
    void print_24()
    {
   
        if(hour<10){
   
            cout<<'0';
        }
        cout<<hour<<':';
        if(minute<10){
   
            cout<<'0';
        }
        cout<<minute<<':';
        if(second<10){
   
            cout<<'0';
        }
        cout<<second<<endl;
    }
};


int main()
{
   
    MyTime t1;
    MyTime t2(8,10,30);
    t1.print_12();
    t1.print_24();
    t2.print_12();
    t2.print_24();
    int h1,m1,s1,h2,m2,s2;
    cin>>h1>>m1>>s1;
    t1.SetTime(h1, m1, s1);
    cin>>h2>>m2>>s2;
    t1.addTime(h2,m2,s2);
    t2.
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.史

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值