输入某年某月某日,判断这一天是这一年的第几天? Description 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一

这段C语言代码实现了计算输入的日期是该年的第几天的功能。通过标记法判断是否为闰年,调整2月天数,再累加月份天数得出结果。

#include “stdio.h”
#include “math.h”
int main()
{
int year, s,sum=0, month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 },i,j,flag=0;
printf(“请输入年、月、日,格式为:年 月 日(2015 12 10)”);
scanf("%d%d%d", &year,&i,&j);
if ((year % 100 != 0 && year % 4 == 0) || year % 400 == 0)
flag = 1; //标记法此年为闰年;
if (flag == 1) month[1] = 29;
for (s = 0; s < i - 1; s++) sum += month[s];
printf(“这是这一年的第%d天。”,sum+j);
return 0;
}

在C语言中,要实现输入某年某月判断一天是该年的第几天,可以按照以下思路进行:首判断输入年份是否为闰年,因为闰年2有29,平年2有28;然后根据输入月份数,累月份数再加上月份数,得到这一天是该年的第几天。以下是几种不同的实现方式: ### 实现方式 ```c #include <stdio.h> void main() { //声明变量保存年, int year, month, day, sum; printf("输入期:格式为:年,(2000,1,1)\n"); //输入期 scanf_s("%d,%d,%d", &year, &month, &day); //判断是几 switch (month) { case 1: sum = day; break; case 2: sum = day + 31; break; case 3: sum = day + 59; break; case 4: sum = day + 90; break; case 5: sum = day + 120; break; case 6: sum = day + 151; break; case 7: sum = day + 181; break; case 8: sum = day + 212; break; case 9: sum = day + 243; break; case 10: sum = day + 273; break; case 11: sum = day + 304; break; case 12: sum = day + 334; break; default: printf("请输入正确期格式!"); break; } //判断一年是不是闰年,如果是则在第二后的每一天 if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { if (month > 2) { sum += 1; } } printf("%d,%d,%d是这一年的第%d\n", year, month, day, sum); } ``` 这种方式通过`switch`语句根据月份计算数,再根据是否为闰年对2之后的数进行调整 [^1]。 ### 实现方式二 ```c #include<stdio.h> void main() { int year, month, day; int a[] = { 0, 31,28,31,30,31,30,31,31,30,31,30,31 };//用数组存放每个数 printf("依次输入 :"); scanf("%d%d%d", &year, &month, &day); if (month > 12 || month < 1) //判断是否输入月份错误 更严谨 { printf("输入错误月份,请重新输入"); return;//退出程序 } if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//判断闰年 { ++a[2];//如果是闰年,则二一天 printf("这一年闰年,"); } if (day > a[month] || day < 0)//判断是否输入数错误 更严谨 { printf("输入数错误,请重新输入"); return; } for (int i = 0; i < month; i++) day += a[i];//总数 printf("这一天是这一年的第%d\n", day); } ``` 此方式使用数组存储每个数,判断输入月份数是否合法,再判断是否为闰年并调整2数,最后累数得到结果 [^2]。 ### 实现方式三 ```c #include<stdio.h> int main(int argc, char const *argv[]) { int year,month,day; printf("请输入:\n"); scanf("%d %d %d",&year,&month,&day); int sum=0; switch (month) { case 12: sum+=30; case 11: sum+=31; case 10: sum+=30; case 9: sum+=31; case 8: sum+=31; case 7: sum+=30; case 6: sum+=31; case 5: sum+=30; case 4: sum+=31; case 3: if((year%4==0&&year%100!=0)||(year%400==0)){ sum+=29; }else { sum+=28; } case 2: sum +=31; case 1: sum +=day; break; } printf("这一天一年的第%d",sum); } ``` 该方式同样使用`switch`语句,不过是从大月份开始累数,在计算3月判断是否为闰年 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nepu_bin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值