浙大版《C语言程序设计(第3版)》题目集 练习3-5 输出闰年 (15 分)

练习3-5 输出闰年 (15 分)

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

输入格式:

输入在一行中给出21世纪的某个截止年份。

输出格式:

逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。

输入样例1:

2048

输出样例1:

2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048

输入样例2:

2000

输出样例2:

Invalid year!


思路:2000年属于20世纪,21世纪从2001年开始,然后利用提给的判断闰年方法进行判断。

代码如下:
#include<stdio.h>
int main ()
{
    int year, i, count=0;

    scanf("%d",&year);
    if(year<=2000||year>2100)
    {
	printf("Invalid year!");
	return 0;
    }
    for (i=2001;i<=year;i++)
    {
	if (i%4==0&&i%100!=0)
        {
            count++;
            printf("%d\n",i);
        }
    }
    if(count==0)
	printf("None");

    return 0;
}

 科普:

  闰年:闰年是比普通年分多出一段时间的年分,在各种历法中都有出现,目的是为了弥补人为规定的纪年与地球公转产生的差异。

  闰年规则:目前使用的格里高利历闰年规则如下:

  1. 公元年分除以4不可整除,为平年。
  2. 公元年分除以4可整除但除以100不可整除,为闰年。
  3. 公元年分除以100可整除但除以400不可整除,为平年。
  4. 公元年分除以400可整除但除以3200不可整除,为闰年。

  每逢闰年,2月有29日,平年的2月为28日。

  因此,1977年为平年,1980年逢4的倍数为闰年,1900年逢100的倍数但非400的倍数故为平年,2000年逢400的倍数又为闰年。

此外,如依照现有太阳年的长度与上述闰年规则,每8000年又约差一日,因此约翰·赫歇尔提议每逢4000的倍数不闰,如公元4000年。但距此年分来临尚有约二千年之遥,因此还未曾真正纳入规则或实施过。又由于地球公转速度的不稳定与众多影响因素,届时是否需要纳入此规则有待商榷。

  公元前的闰年:

  公元前之闰年出现在前1, 前5, 前9, 前13, ...,或记作1 BC,5 BC,9 BC,13 BC,...,或在数轴上记作0,-4,-8,-12,...。 判断是否闰年,须将年份值减1再以“除以4”计算,或以数轴记法表示时直接计算(正负性不影响是否整除)。(因为没有公元0年这一年(除非临时约定,并注明对应等式),所以公元前1, 2, 3, 4, ... 年应该在数学数轴上对应着(但不是,或不应该在历法上称)公元0, -1, -2, -3, ... 年,而公元前1, 5, 9, 13, ... 年在数学数轴上对应着0, -4, -8, -12, ... 年,为4的倍数)。 记住:临时约定的数学“0”年,等于天文学固有的“0”年,等于历法公元前一年。

  来源:维基百科-闰年(https://zh.wikipedia.org/wiki/%E9%97%B0%E5%B9%B4)

 

 

原文地址:https://www.cnblogs.com/IT-Lead-The-World/p/10349731.html

时间: 2024-10-11 02:11:00

浙大版《C语言程序设计(第3版)》题目集 练习3-5 输出闰年 (15 分)的相关文章

浙大版《C语言程序设计(第3版)》题目集 练习3-4 统计字符 (15 分)

练习3-4 统计字符 (15 分) 本题要求编写程序,输入10个字符,统计其中英文字母.空格或回车.数字字符和其他字符的个数. 输入格式: 输入为10个字符.最后一个回车表示输入结束,不算在内. 输出格式: 在一行内按照 letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数 的格式输出. 输入样例: aZ & 09 Az 输出样例: letter = 4, blank = 3, digit = 2, other = 1

浙大版《C语言程序设计(第3版)》题目集 练习3-7 成绩转换 (15 分)

练习3-7 成绩转换 (15 分) 本题要求编写程序将一个百分制成绩转换为五分制成绩.转换规则: 大于等于90分为A: 小于90且大于等于80为B: 小于80且大于等于70为C: 小于70且大于等于60为D: 小于60为E. 输入格式: 输入在一行中给出一个整数的百分制成绩. 输出格式: 在一行中输出对应的五分制成绩. 输入样例: 90 输出样例: A 思路:用if-else语句分五种情况讨论. 代码如下: #include<stdio.h> int main() { int a, A, B,

浙大版《C语言程序设计(第3版)》题目集 习题3-5 三角形判断 (15 分)

习题3-5 三角形判断 (15 分) 给定平面上任意三个点的坐标(x1,y1).(x2,y2).(x3,y3),检验它们能否构成三角形.1??,y?1??).(x?2??,y?2??).(x?3??,y?3??),检验它们能否构成三角形 输入格式: 输入在一行中顺序给出六个[?100,100]范围内的数字,即三个点的坐标x1.y1.x2.y2.x3.y3.(.x1,y1).(x2,y2).(x3,y3)1??.y?1??.x?2??.y?2??.x?3??.y?3??. 输出格式: 若这3个点不

C语言程序设计 第3版 课后习题答案 苏小红 王宇颖 孙志岗 版 实验题答案 高等教育出版社 课后答案 解析 第3章 课后答案

C语言程序设计 第3版 课后习题答案  苏小红 王宇颖 孙志岗  实验题答案 高等教育出版社 课后答案 解析 第3章 课后答案 C语言程序设计 苏小红 王宇颖 孙志岗 版 习题3 课后习题答案 前辅文第1章 为什么要学C 语言 课后习题答案1.1 引言1.2 游戏?黑客和C 语言1.3 C 语言,不老的传说1.4 C 语言的爱与恨1.5 C 语言教给我们的事1.6 什么是“编程”1.7 本章小结习题1第2章 C 数据类型 课后答案2.1 常量与变量2.1.1 常量2.1.2 变量2.2 简单的屏

浙大版《C语言程序设计(第3版)》题目集 练习2-9 整数四则运算 (10 分)

练习2-9 整数四则运算 (10 分) 本题要求编写程序,计算2个正整数的和.差.积.商并输出.题目保证输入和输出全部在整型范围内. 输入格式: 输入在一行中给出2个正整数A和B. 输出格式: 在4行中按照格式"A 运算符 B = 结果"顺序输出和.差.积.商. 输入样例: 3 2 输出样例: 3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 = 1 思路:格式化输出.代码如下: #include <stdio.h> int main() { int

浙大版《C语言程序设计(第3版)》题目集 练习4-10 找出最小值 (20 分)

练习4-10 找出最小值 (20 分) 本题要求编写程序,找出给定一系列整数中的最小值. 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔. 输出格式: 在一行中按照“min = 最小值”的格式输出n个整数中的最小值. 输入样例: 4 -2 -123 100 0 输出样例: min = -123 思路:假设输入的第一个是最小值,如果后面输入的小于最小值,更新最小值. 代码如下: #include <stdio.h> int main() { int n, i, mi

学习《C语言程序设计第四版.谭浩强》计划

1.每天学习一个章节 2.所有的课程代码手动创建.生成 3.完成课后习题 4.每章节发表博客 5.每章节写笔记 第一章:程序设计和C语言 第二章:算法--程序的灵魂 第三章:最简单的C程序设计--顺序程序设计 第四章:选择结构程序设计 第五章:循环结构程序设计 第六章:利用数组处理批量数据 第七章:用函数实现模块化程序设计 第八章:善于利用指针 第九章:用户自己建立数据类型 第十章:对文件的输入输出 第十一章:常见错误分析

武汉科技大学ACM :1009: 华科版C语言程序设计教程(第二版)例题4.18

Problem Description 验证哥德巴赫猜想:任何充分大(>=4)的偶数都可以用两个素数之和表示. Input 输入一个偶数n.(2<n<=10000) Output 找到a.b使得 n=a+b 其中a.b为两个素数,且a<=b. Sample Input 4 100 Sample Output 2 2 3 97 1 #include <iostream> 2 3 #include<math.h> 4 5 using namespace std;

武汉科技大学ACM :1007: 华科版C语言程序设计教程(第二版)例题4.13

Problem Description 输入两个整数,求他们的最大公约数和最小公倍数. Input 两个整数. Output 最大公约数和最小公倍数. Sample Input 12 9 Sample Output 3 36 HINT 可以把求最小公约数和最小公倍数写成函数,方便以后调用. 1 #include <stdio.h> 2 3 void main() 4 5 { 6 7 int m,n; 8 9 while(scanf("%d%d",&m,&n)

武汉科技大学ACM :1010: 华科版C语言程序设计教程(第二版)例题7.8

Problem Description 输入一个用年月日表示的日期,求该日期是该年的第几天.输入某年的第几天,输出这一天是该年的几月几号,茂茂解不出,需要你的帮助. Input 开始有个整数k,表示询问的种类,如果k=1,后面有三个合法的整数a,b,c,表示输入的年月日,此时输出该日期是该年的第几天:如果k=2,后面有两个合法的整数a,b,求a年的第b天的日期.保证所有的输入合法. Output 对于询问1,输出一个整数表示是该年的第几天. 对于询问2,输出年月月,格式为****/**/** 如