结构体&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;
}