输入年月日,推算是此年,第几天。
c吧
全部回复
仅看楼主
level 6
#include<stdio.h>
void main()
{
int year, month, day,sum,leap;
printf("需要判断的时间(年,月,日):");
scanf("%d,%d,%d", &year, &month, &day);
printf("\n");
switch (month){
case 1:sum = 0; break;
case 2:sum = 31; break;
case 3:sum = 59; break;
case 4:sum = 90; break;
case 5:sum = 120; break;
case 6:sum = 151; break;
case 7:sum = 181; break;
case 8:sum = 212; break;
case 9:sum = 243; break;
case 10:sum = 273; break;
case 11:sum = 304; break;
case 12:sum = 334; break;
default:printf("输入日期格式错误\n");
}
sum = sum + day;
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
leap = 1;
}
else{
leap = 0;
}
if (leap == 1 && month > 2) {
sum = sum + 1;
}
printf("这是%d年的第%d天\n", year, sum);
}
2021年04月05日 07点04分 1
level 1
新手练习一下
#include<stdlib.h>
#include<stdio.h>
#include<stdbool.h>
int daysinmonth(int month, bool leap)
{
switch (month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
case 2:
if(leap) return 29; else return 28;
}
}
int main()
{
int year, month, day, sum;
bool leap;
printf("本程序可计算某日期处于一年的第多少天。请输入日期(格式:xxxx年-月-日):\n");
scanf("%d-%d-%d", &year, &month, &day);
if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)))
leap = true;
else
leap = false;
if ((month<1) || (month>12) || (day<1) || (day>daysinmonth(month, leap)))
{
printf("输入日期格式错误\n");
return 1;
}
sum = 0;
for (int i=0; i<month; ++i)
sum += daysinmonth(i, leap);
sum += day;
printf("这是 %d 年的第 %d 天。\n", year, sum);
return 0;
}
2021年05月26日 08点05分 4
level 8
通过月份知道前面几个月的天数,然后加上当前月份天数就行了。
月份天数都是固定的,然后判定闰年处理2月就行了。
2021年06月03日 01点06分 5
1