用c写一个计算一年第几天的函数
时间: 2023-03-16 10:43:59 浏览: 104
我可以用下面的代码来写一个计算一年第几天的函数:int GetDayOfYear(int year, int month, int day)
{
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int sum = 0;
// 跳过年份
for (int i = 0; i < month - 1; i++)
{
sum += days[i];
}
// 加上本月的天数
sum += day;
// 如果是闰年,加上一天
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
if (month > 2)
{
sum += 1;
}
}
return sum;
}
相关问题
c语言判断日期是这一年的第几天
这段代码可以用来判断输入的日期是这一年的第几天。首先通过scanf函数获取输入的年月日,然后通过switch语句计算出该日期之前整月的天数,再加上当月的天数。最后,如果该年是闰年并且该日期在2月29日之后,还需要再加上1天。最终输出该日期是这一年的第几天。
代码如下:
```
int main() {
int y,m,d;
int days = 0;
printf("请输入一个日期:");
scanf("%d/%d/%d",&y,&m,&d);//年月日用/隔开。
switch(m)
{
case 12: days += 30;
case 11: days += 31;
case 10: days += 30;
case 9: days += 31;
case 8: days += 31;
case 7: days += 30;
case 6: days += 31; case 5: days += 30;
case 4: days += 31;
case 3: days += 28;
case 2: days += 31;
case 1: days += d; //此次同时加上当月天数
}
//判断是否为闰年
if( m > 2 && ((y%4==0&&y%100!=0)||y%400==0))
days += 1;
printf("%d年%d月%d日是这一年的第%d天!\n", y,m,d,days);
return 0;
}
```
c语言switch函数输入一个年月日输出是这一年的第几天
以下是一个可能的解法:
```c
#include <stdio.h>
int main() {
int year, month, day;
printf("请输入年月日(格式:年-月-日):\n");
scanf("%d-%d-%d", &year, &month, &day);
// 计算该月前的天数和该月的天数
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int sum = 0;
for (int i = 0; i < month - 1; i++) {
sum += days[i];
}
if (month > 2) {
// 闰年2月有29天
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
sum++;
}
}
sum += day;
// 输出结果
printf("%d年%d月%d日是%d年的第%d天\n", year, month, day, year, sum);
return 0;
}
```
注:此代码并没有对输入的日期是否合法进行校验。