今天是啥时候?

描述

定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。。

输入

年月日

输出

当年第几天

输入样例 1 

2020 2 28

输出样例 1

59

输入样例 2 

2022 9 5

输出样例 2

248

代码一(如下):采用if判断语句和for循环语句

#include 
using namespace std;
struct Date
{
	int year;
	int month;
	int day;
}riqi;
int main()
{
	cin >> riqi.year >> riqi.month >> riqi.day;
	int i,sum=0;
	if ((riqi.year % 4 == 0&&riqi.year%100!=0)||riqi.year%400==0)
	{
		for (i = 1; i < riqi.month; i++)
		{
			if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
			{
				sum += 31;
			}
			else if (i == 4 || i == 6 || i == 9||i==11)
			{
				sum += 30;
			}
			else
			{
				sum += 29;
			}
		}
	}
	else
	{
		for (i = 1; i < riqi.month; i++)
		{
			if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
			{
				sum += 31;
			}
			else if (i == 4 || i == 6 || i == 9||i==11)
			{
				sum += 30;
			}
			else
			{
				sum += 28;
			}
		}
	}
	sum = sum + riqi.day;
	cout << sum;
	return 0;
}

代码二(如下):采用switch语句

#include 
using namespace std;
struct Date
{
	int year;
	int month;
	int day;
}riqi;
int main()
{
	cin >> riqi.year >> riqi.month >> riqi.day;
	int i,sum=0;
	if ((riqi.year % 4 == 0&&riqi.year%100!=0)||riqi.year%400==0)
	{
		switch (riqi.month)
		{
		case 1:sum = riqi.day; break;
		case 2:sum = 31 + riqi.day; break;
		case 3:sum = 31 + 29 + riqi.day; break;
		case 4:sum = 31 * 2 + 29 + riqi.day; break;
		case 5:sum = 31 * 2 + 29 + 30 + riqi.day; break;
		case 6:sum = 31 * 3 + 29 + 30 + riqi.day; break;
		case 7:sum = 31 * 3 + 29 + 30 * 2 + riqi.day; break;
		case 8:sum = 31 * 4 + 29 + 30 * 2 + riqi.day; break;
		case 9:sum = 31 * 5 + 29 + 30 * 2 + riqi.day; break;
		case 10:sum = 31 * 5 + 29 + 30 * 3 + riqi.day; break;
		case 11:sum = 31 * 6 + 29 + 30 * 3 + riqi.day; break;
		case 12:sum = 31 * 6 + 29 + 30 * 4 + riqi.day; break;
		}
	}
	else
	{
		switch (riqi.month)
		{
		case 1:sum = riqi.day; break;
		case 2:sum = 31 + riqi.day; break;
		case 3:sum = 31 + 28 + riqi.day; break;
		case 4:sum = 31 * 2 + 28 + riqi.day; break;
		case 5:sum = 31 * 2 + 28 + 30 + riqi.day; break;
		case 6:sum = 31 * 3 + 28 + 30 + riqi.day; break;
		case 7:sum = 31 * 3 + 28 + 30 * 2 + riqi.day; break;
		case 8:sum = 31 * 4 + 28 + 30 * 2 + riqi.day; break;
		case 9:sum = 31 * 5 + 28 + 30 * 2 + riqi.day; break;
		case 10:sum = 31 * 5 + 28 + 30 * 3 + riqi.day; break;
		case 11:sum = 31 * 6 + 28 + 30 * 3 + riqi.day; break;
		case 12:sum = 31 * 6 + 28 + 30 * 4 + riqi.day; break;
		}
	}
	cout << sum;
	return 0;
}

问题点:

①:用户可以自己声明的类型有结构体类型、共用体类型、枚举类型、类类型等,这些同称为用户自定义类型。

②:在一个组合项中包含若干类型不同(当然也可以相同)的数据项,这种数据类型称为结构体。struct是声明结构体类型时必须使用的关键字。

声明一个结构体类型的一般形式为

struct 结构体类型名

{成员表};

在声明一个结构体类型时必须对各成员都应进行类型声明,即

类型名 成员名;

每一个成员也称为结构体中的一个域。成员表又称为域表。成员名定名规则与变量名相同。

在C++中,结构体成员既可以包括数据(即数据成员),又可以包括函数(即函数成员),以适应面向对象的程序设计。

③:定义结构体类型变量的方法

1)先声明结构体类型再定义变量,如

struct Date{

int year;

int month;

int day;};

Date day1,day2;         //Date是结构体类型名,day1、day2是结构体变量名。

2)在声明类型的同时定义变量,如

struct Date{

int year;

int month;

int day;}day1,day2;

这种形式的定义的一般形式为

struct 结构体名

{

成员表

}变量名表;

3)成员也可以是一个结构体变量,如

struct Date

{int year;

int month;

int day;

};

struct Student

{int num;

char name[20];

int age;

Date birthday;       //Date是结构体类型,birthday是Date类型的成员。

//(已声明的类型Date与其他类型(如int,char)一样可以用来定义成员的类型)

char addr[30];

}student1,student2;

④:结构体变量的初始化

和其他类型变量一样,对结构体变量可以在定义时指定初始值。如

struct Date

{int year;

int month;

int day;

}day1={2022,1,1};        //初始化

也可以采用声明类型与定义变量分开的形式,在定义变量时进行初始化。如

Date day1={2022,1,1}; 

⑤:引用结构体变量

1)可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。

2)可以引用一个结构体变量中的一个成员的值。如day1.year表示结构体变量day1中成员year的值。

引用结构体变量中成员的一般形式为   结构体变量名 . 成员名 

可以对变量中的成员赋值:day1.year=2022;

 . ”是成员运算符,它在所有的运算符中优先级最高,因此可以把day1.year作为一个整体来看待。

你可能感兴趣的:(ACM作业,c++)