7-2 闰年的个数 (100 分)

本文介绍了一个简单的程序,用于判断指定年份是否为闰年,并统计给定年份列表中闰年的数量。程序遵循了公历闰年的规则,即普通年份能被4整除且不能被100整除为闰年,或者能被400整除也为闰年。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

地球绕太阳运行周期为365天5小时48分46秒(合365.24219天),即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,每四年累积约一天,把这一天加于2月末(即2月29日),使当年时间长度变为366日(1-12月分别为31天,29天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天),这一年就为闰年。需要注意的是,公历是根据罗马人的"儒略历"改编而得。由于当时没有了解到每年要多算出0.0078天的问题,从公元前46年,到16世纪,一共累计多出了10天。为此,当时的教皇格列高利十三世,将1582年10月5日人为规定为10月15日。并开始了新闰年规定。即规定公历年份是整百数的,必须是400的倍数才是闰年,不是400的倍数的就是平年。比如,1700年、1800年和1900年为平年,2000年为闰年。此后,平均每年长度为365.2425天,约4年出现1天的偏差。按照每四年一个闰年计算,平均每年就要多算出0.0078天,经过四百年就会多出大约3天来,因此,每四百年中要减少三个闰年。闰年的计算,归结起来就是通常说的:四年一闰;百年不闰,四百年再闰。

现有若干行年份,请你写一段程序分别统计每一行中有多少个闰年。

输入格式:

第一行为一个整数n(0<n<=10),代表测试用例行数。后边是n行,每行为若干个用空格分隔的正整数(代表需要统计的年份,这些年份值在1到3000之间)。这些正整数的最后是-1,表示此行结束。

输出格式:

为n行,每行一个整数,对应于输入的每一行中闰年的个数。

输入样例:

3
1900 1968 1991 2009 1938 1982 1972 1939 1989 -1
1979 1933 1976 1922 1950 2014 1958 -1
2016 1921 1904 1982 1968 1995 1956 1907 1978 2001 1965 1990 2014 1947 -1

输出样例:

2
1
4

代码如下:

#include<stdio.h>
int judge(int n)
{
	if (n % 400 == 0 || (n % 100 != 0 && n % 4 == 0))
		return 1;
	else
		return 0;
}
int main()
{
	int n, ch,i,s;
	scanf("%d", &n);
	int arr[10] = { 0 };
	for (i = 0; i < n; i++)
	{
		scanf("%d", &ch);
		while (ch != -1)
		{
			s = judge(ch);
			if (s == 1)
				arr[i]++;
			scanf("%d", &ch);
		}
	}
	for (i = 0; i < n; i++)
		printf("%d\n", arr[i]);
	return 0;
}

我一开始写的是

int judge(int n)
{
	if (n % 400 == 0 || (n % 100 != 0 && n % 4 == 0))
		return 1;
	
}

 但是这个是错的,因为如果不是闰年会返回一个随机值把,然后万一返回1的话,答案就错了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值