天天看點

C語言:計算某日是該年的第幾天

題目:計算某日是該年的第幾天

自定義一個函數計算天數

首先要判斷該年是否為閏年,代碼如下:

year % 4 == 0 || year % 100 != 0 || year % 400 == 0
           

然後調用數組輸出閏年平年的每個月天數:

int arr_day[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };  
int arr_leap_day[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
           

引入一個中間變量用于累計天數

具體代碼如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int ChackDay(int year, int month, int day) {
	int count = 0;
	int arr_day[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	int arr_leap_day[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	if (year % 4 == 0 || year % 100 != 0 || year % 400 == 0) {
		int i = 0;
		for (; i < month - 1; i++) {
			count += arr_leap_day[i];
		}
	}
	else {
		int i = 0;
		for (; i < month - 1; i++) {
			count += arr_day[i];
		}
	}
	count += day;
	return count;
}

int main() {
    int year = 0;
	int month = 0;
	int day = 0;
	printf("請輸入年月日:");
	scanf("%d %d %d", &year, &month, &day);
	if (year < 0 || month < 0 || month > 12 || day < 0 || day > 31) {
		printf("您的輸入有誤!\n");
	}
	else {
		int num = 0;
		num = ChackDay(year, month, day);
		printf("這一天是第%d天\n", num);
	}
	system("pause");
	return 0;
}
           

程式運作結果如下:

C語言:計算某日是該年的第幾天