C++的输入:
可分为两种方式:(通过例题来说明)
第一种:
定义一个日期类Date,类中包括year、month和day3个数据成员,包括3个成员函数,分别是void SetDate(int,int,int)用以设置日期,void Display()用于显示日期,显示格式为“年/月/日”如2022/3/25,bool IsLeap()用于判断是否为闰年,是闰年返回true,否则返回false。利用Date类,实现计算给定日期是在本年中是第几天。 |
---|
#include <iostream>
using namespace std;
class Date {
private:
int year;
int month;
int day;
char ch;
public:
void SetDate(int,int,int);
bool IsLeap();
};
void Date::SetDate(int x,int y,int z) {
year=x,month=y,day=z;
}
bool Date::IsLeap() {
if((year%400==0) || ((year%4==0) && (year%100 !=0)))
return true;
else
return false;
}
int main() {
Date dat;
int x;
int y;
int z;
char ch;
int sum=0;
int a1[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
int a2[12]= {31,29,31,30,31,30,31,31,30,31,30,31};
while(cin>>x>>ch>>y>>ch>>z){
dat.SetDate(x,y,z);
sum=z;
if(dat.IsLeap()==true) {
for(int i=0; i<y-1; i++) {
sum+=a2[i];
}
cout<<sum<<endl;
}
else{
for(int j=0; j<y-1; j++) {
sum+=a1[j];
}
cout<<sum<<endl; }
}
return 0;
}
其中:
void Date::SetDate(int x,int y,int z) {
year=x,month=y,day=z;
}
通过在在中函数中输入,在通过形参的方式传输给类的成员。
第二种:
定义一个Student类,类中包含一次考试的学生的3个学科的成绩,包含4个成员函数,分别是void input()用于输入学生考试成绩,void Display()用于显示成绩,int Sum()用于计算3个学科的总分,double Average()用于计算3个学科平均分。 |
---|
#include <iostream>
#include <iomanip>
using namespace std;
class Student {
public:
void Set(); //用于接收姓名,学号和三门课程成绩
int Sum();
void Display();
double Averate();
private:
string name; //学生姓名
int rollno; //学生学号
int sub_marks[3]; //3门课程成绩
};
void Sort(Student *stud,int n);
void Student::Set() {
cin>>name>>rollno>>sub_marks[0]>>sub_marks[1]>>sub_marks[2];
}
int Student::Sum() {
int sum=0;
for(int i=0; i<3; i++) {
sum+=sub_marks[i];
}
return sum;
}
void Student::Display() {
cout<<"姓名:"<<name<<' '<<"学号:"<<rollno<<' '<<"平均分:"<< fixed << setprecision(2) <<Averate()<<' '<<"总分:"<<Sum()<<endl;
}
double Student::Averate() {
double add=Sum();
return add/3;
}
int main() {
int n;
cin>>n;
Student *stu;
stu = new Student[n];
for(int i=0; i<n; i++) {
stu[i].Set();
}
Sort(stu,n);
for(int i=0; i<n; i++) {
stu[i].Display();
}
delete []stu;
return 0;
}
void Sort(Student *stud,int n) {
Student t;
for(int i=0; i<n-1; i++) {
for(int j=i+1; j<n; j++) {
if(stud[i].Sum()<stud[j].Sum()) {
t=stud[i],stud[i]=stud[j],stud[j]=t;
}
}
}
}
其中:
void Student::Set() {
cin>>name>>rollno>>sub_marks[0]>>sub_marks[1]>>sub_marks[2];
}
通过调用类的函数,直接进行输出。