C++编程学习笔记 week5

结构体&C++

5.1 日期结构体用法

定义一个日期结构体,该结构体成员有年、月、日3个数据。要求从键盘输入年月日,判断该年是否闰年(函数调用)并以年-月-日格式输出日期以及是否闰年(函数调用)。

#include<iostream>   
using namespace std;   
class Date   
{   
public:   
    int year;   
    int month;   
    int day;   
    int whichleaps(int n);   
    void Print(struct Date x);   
};   
  
int Date::whichleaps(int n)   
{   
    return((n%4==0&&n%100!=0)||(n%400==0));   
}   
  
void Date::Print(struct Date x)   
{   
    cout<<"日期是"<<x.year<<"-"<<x.month<<"-"<<x.day<<endl;   
    int flag=x.whichleaps(x.year);   
    if(flag==1)   
        cout<<"该年是闰年"<<endl;   
    else  
        cout<<"该年不是闰年"<<endl;   
} 
int main()   
 {   
   struct Date x;//定义一个日期结构体变量   
  cin>>x.year>>x.month>>x.day;//从键盘输入年月日   
  x.Print(x);//输出日期以及是否闰年   
  return 0;   
 } 

5.2 日期类用法

定义一个日期类,该类数据成员有年、月、日3个私有数据。私有成员函数有判断闰年,公有成员函数有设置年月日数据成员的值、按指定格式输出日期。要求从键盘输入年月日,判断该年是否闰年并以年-月-日格式输出日期以及是否闰年。

#include<iostream>   
using namespace std;   
class Date   
{   
private:   
    int year;   
    int month;   
    int day;   
    int whichleaps(int n);   
public:   
    void Print();   
    void reset(int a,int b,int c)   
    {   
        year=a;   
        month=b;   
        day=c;   
    }   
};   
  
int Date::whichleaps(int n)   
{   
    return((n%4==0&&n%100!=0)||(n%400==0));   
}   
  
void Date::Print()   
{   
    cout<<"日期是"<<year<<"-"<<month<<"-"<<day<<endl;   
    int flag=whichleaps(year);   
    if(flag==1)   
        cout<<"该年是闰年"<<endl;   
    else  
        cout<<"该年不是闰年"<<endl;   
}   
  
int main()   
{   
    Date x;   
    int a,b,c;   
    cin>>a>>b>>c;   
    x.reset(a,b,c);   
    x.Print();   
    return 0;   
       
}  
#include<iostream>
using namespace std;
class Date
{
private:
    int year;
    int month;
    int day;
    int whichleaps(int n);
public:
    void Print();
    void reset(int a,int b,int c)
    {
        year=a;
        month=b;
        day=c;
    }
};

int Date::whichleaps(int n)
{
    return((n%4==0&&n%100!=0)||(n%400==0));
}

void Date::Print()
{
    cout<<"日期是"<<year<<"-"<<month<<"-"<<day<<endl;
    int flag=whichleaps(year);
    if(flag==1)
        cout<<"该年是闰年"<<endl;
    else
        cout<<"该年不是闰年"<<endl;
}

int main()
{
    Date x;
    int a,b,c;
    cin>>a>>b>>c;
    x.reset(a,b,c);
    x.Print();
    return 0;
    
}  


5.3 长方形结构体用法

要求定义一个长方形结构体,有长和宽2个数据。要求从键盘输入长和宽,计算周长(用函数调用)和面积(用函数调用)并输出(用函数调用)。

#include<iostream>   
using namespace std;   
class acre   
{   
public:   
    int length;   
    int width;   
    int around(int a,int b);   
    int area(int a,int b);   
    void print(acre x);   
};   
  
int acre::around(int a,int b)   
{   
    return 2*(a+b);   
}   
  
int acre::area(int a,int b)   
{   
    return a*b;   
}   
  
void acre::print(acre x)   
{   
    cout<<"面积是"<<area(x.length,x.width)<<endl;   
    cout<<"周长是"<<around(x.length,x.width)<<endl;   
}   
  
int main()   
{   
    class acre x;   
    cin>>x.length>>x.width;   
    x.print(x);   
    return 0;   
}  
#include<iostream>
using namespace std;
class acre
{
public:
    int length;
    int width;
    int around(int a,int b);
    int area(int a,int b);
    void print(acre x);
};

int acre::around(int a,int b)
{
    return 2*(a+b);
}

int acre::area(int a,int b)
{
    return a*b;
}

void acre::print(acre x)
{
    cout<<"面积是"<<area(x.length,x.width)<<endl;
    cout<<"周长是"<<around(x.length,x.width)<<endl;
}

int main()
{
    class acre x;
    cin>>x.length>>x.width;
    x.print(x);
    return 0;
}  


5.4 时间结构体的用法

定义一个时间结构体,包括时、分、秒3个数据。要求时间从键盘输入,然后将时间以时:分:秒的格式输出(用函数调用)并将时间转换为以秒为单位的数输出(用函数调用)。
此题可以参考2.1题日期结构体用法来实现。

#include<iostream>   
using namespace std;   
struct time   
{   
    int hr;   
    int min;   
    int sed;   
    int whichleaps(int hr,int min,int sed);   
    void Print(time x);   
      
};   
  
int time::whichleaps(int hr,int min,int sed)   
{   
    return(hr*3600+min*60+sed);   
}   
  
void time::Print(time x)   
{   
    cout<<"时间为"<<x.hr<<":"<<x.min<<":"<<x.sed<<endl;   
    cout<<"转为"<<x.whichleaps(x.hr,x.min,x.sed)<<"秒"<<endl;   
}   
int main()   
{   
    struct time x;   
       
    cin>>x.hr>>x.min>>x.sed;   
      
    x.Print(x);   
    return 0;   
}

5.5 圆结构体用法

要求定义一个圆结构体,包括半径和圆心坐标数据。要求从键盘输入半径和圆心坐标,圆周率用3.14计算圆面积和周长。输出圆心坐标位置以及圆的面积和周长。
此题可以参考2.2题。

#include<iostream>  
#define pi = 3.14;   
using namespace std;   
struct circle   
{   
  
    float r;   
    float b,c;   
       
    float around(float a);   
    float area(float a);   
    void print(circle x);   
};   
  
float circle::around(float a)   
{   
    return 2*3.14*a;   
}   
  
float circle::area(float a)   
{   
    return 3.14*a*a;   
}   
  
void circle::print(circle x)   
{   
    cout<<"圆心坐标是"<<x.b<<","<<x.c<<endl;   
    cout<<"面积是"<<area(x.r)<<endl;   
    cout<<"周长是"<<around(x.r)<<endl;   
}   
int main()   
{   
    struct circle x;   
    float a;   
    cin>>x.r>>x.b>>x.c>>a;   
    x.print(x);   
    return 0;   
}  
#include<iostream>
#define pi = 3.14;
using namespace std;
struct circle
{

    float r;
    float b,c;
    
    float around(float a);
    float area(float a);
    void print(circle x);
};

float circle::around(float a)
{
    return 2*3.14*a;
}

float circle::area(float a)
{
    return 3.14*a*a;
}

void circle::print(circle x)
{
    cout<<"圆心坐标是"<<x.b<<","<<x.c<<endl;
    cout<<"面积是"<<area(x.r)<<endl;
    cout<<"周长是"<<around(x.r)<<endl;
}
int main()
{
    struct circle x;
    float a;
    cin>>x.r>>x.b>>x.c>>a;
    x.print(x);
    return 0;
}  


5.6 学生结构体用法

定义一个学生结构体,包括3个数据:英语成绩、计算机成绩以及这2门课的总成绩。要求从键盘输入5个学生的英语与计算机成绩信息,然后按这两门课的总成绩进行升序排序(用函数调用),并输出这5个学生排序后的成绩信息(用函数调用)。

#include <iostream>   
using namespace std;   
struct stu   
{   
    int en;   
    int pc;   
    int all;   
};   
void print(struct stu x[],int n)//输出学生信息   
{   
    int i;   
    for(i=0;i<n;i++)   
    {   
        cout<<"英语"<<x[i].en<<",计算机"<<x[i].pc<<",总成绩"<<x[i].all<<endl;   
    }   
}   
  
void LineAll(struct stu x[],int n)   
{   
    int i,j;   
    struct stu tmp;   
    for(i=0;i<n;i++)   
        for(j=n-1;j>i;j--)   
            if(x[j-1].all >x[j].all)   
            {   
                tmp=x[j-1];   
                x[j-1]=x[j];   
                x[j]=tmp;   
            }   
}   
int main()   
{   
    struct stu x[5];   
    for(int i=0;i<5;i++)   
    {   
        cin>>x[i].en>>x[i].pc;   
         x[i].all = x[i].en + x[i].pc;   
    }   
    LineAll(x,5);   
    print(x,5);   
    return 0;   
}

5.7 学生类用法

定义一个学生类,包括3个数据:英语成绩、计算机成绩以及这2门课的总成绩,自行分析成员函数。要求从键盘输入5个学生的英语与计算机成绩信息,然后按这两门课的总成绩进行升序排序,并输出这5个学生排序后的成绩信息。
提示:本题涉及对象数组用法

#include <iostream>   
using namespace std;   
class stu   
{   
private:   
    int en;   
    int pc;   
    int all;   
public:   
    void print()   
    {   
        cout<<"英语"<<en<<",计算机"<<pc<<",总成绩"<<all<<endl;   
    }   
    void reset(int e,int p)   
    {   
        en=e;   
        pc=p;   
        all=e+p;   
    }   
    int lineall()   
    {   
        return all;   
    }   
};   
  
  
void Line(stu x[],int n)   
{   
    int i,j,a,b;   
    struct stu tmp;   
    for(i=0;i<n;i++)   
        for(j=n-1;j>i;j--)   
        {   
            a=x[j-1].lineall();   
            b=x[j].lineall();   
            if(a > b)   
            {   
                tmp=x[j-1];   
                x[j-1]=x[j];   
                x[j]=tmp;   
            }   
        }   
}   
  
void Print(stu x[ ],int a)   
{   
    for(int i=0;i<5;i++)   
        x[i].print();   
}   
  
int main()   
{   
    stu x[5];   
    int a,b;   
    for(int i=0;i<5;i++)   
    {   
        cin>>a>>b;   
        x[i].reset(a,b);   
           
    }   
    Line(x,5);   
    Print(x,5);   
    return 0;   
} 
上一篇:Spring中beanDefinition合并操作分析


下一篇:学习之旅week5