zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

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

计算变量 一个 结构 定义 注意 习题 包括
2023-09-14 09:06:56 时间

C程序设计(第四版) 谭浩强 习题9.1 个人设计

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

代码块:

方法1:

#include <stdio.h>
#include <stdlib.h>
struct count_day
{
	int year;
	int month;
	int day;
} dd={2018, 3, 28};
int main()
{
	int i, m[12], sum;
	for (i=0; i<6; i++)
		i<=3 ? m[2*i]=31, m[2*i+1]=30 : m[2*i-1]=31, m[2*i]=30;
	(!(dd.year%4)&&dd.year%100!=0)||!(dd.year%400) ? m[1]=29 : m[1]=28;
	for (i=0, sum=0; i<dd.month-1; sum+=m[i++]);
	printf("%d-%d-%d is No.%d days!\n", dd.year, dd.month, dd.day, sum+dd.day);
	system("pause");
	return 0;
}

方法2:

#include <stdio.h>
#include <stdlib.h>
struct Date{
	int year;
	int month;
	int day;
};
void input(Date *d);
void print(Date *d);
int main()
{
	Date *dd=(Date*)malloc(sizeof(Date));
	input(dd);
	print(dd);
	system("pause");
	return 0;
}
void input(Date *d)
{
	printf("Please enter date: ");
	scanf("%d %d %d", &d->year, &d->month, &d->day);
}
void print(Date *d)
{
	int m[12], i, y, sum=0;
	y=d->year;
	(y%4==0&&y%100!=0)||y%400==0 ? m[1]=29 : m[1]=28;
	for (i=0; i<12; i++){
		if (i==1) continue;
		else if (i==0||i==2||i==4||i==6||i==7||i==9||i==11) m[i]=31;
		else m[i]=30;
	}
	for (i=0; i<d->month-1; sum+=m[i++]);
	printf("The date is No.%d days!\n", sum+d->day);
}