1 题目
功能:计算某日是该年的第几天
描述:计算天数的代码,从键盘输入年、月、日,在屏幕输出此日期是改年的第几天
2 思路
判断年份是闰年还是平年,两点:要么可以直接被 400 整除,要么能被 4 整除,但是不能被 100 整除
if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)
return 1;
else
return 0;
判断该天是改年的第几天,那么需要知道每个月有多少天。另外,2 月份需要第一判断是平年还是闰年,再来进行后续的计算
3 代码
#include <stdio.h>
#include <stdlib.h>
/**
功能:计算某日是该年的第几天
描述:计算天数的代码,从键盘输入年、月、日,在屏幕输出此日期是改年的第几天
**/
int leap(int a) { // 判断是否为闰年
if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) // 闰年判定条件
return 1; // 是闰年返回1
else
return 0; // 不是闰年返回0
}
int number(int year, int m, int d) { // 参数 年 月 日,计算是该年的第几天
int sum = 0, i;
// 平年每月的天数
int a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 闰年每月的天数
int b[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (leap(year) == 1) // 判断是否为闰年
for (i = 0; i < m - 1; i++)
sum += b[i]; // 是闰年,累加数组b前m-1个月份天数
else
for (i = 0; i < m - 1; i++)
sum += a[i]; // 不是闰年,累加数组a钱m-1个月份天数
sum += d; // 将前面累加的结果加上日期,求出总天数
return sum; // 将计算的天数返回
}
int main(int argc, char const *argv[]) {
int year, month, day, n; // 定义变量为基本整型
printf("请输入年月日
");
scanf("%d%d%d", &year, &month, &day); // 输入年月日
n = number(year, month, day); // 调用函数number
printf("%d.%d.%d 是 %d 年的第 %d 天
", year, month, day, year, n);
}
示例结果:
$ gcc ex054.c -o demo
$ ./demo
请输入年月日
2020 12 31
2020.12.31 是 2020 年的第 366 天
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
















暂无评论内容