c语言计算指定的日期是当年的第几天和星期几
时间: 2023-06-12 13:04:00 浏览: 182
可以使用C语言中的time.h头文件中的函数来计算指定的日期是当年的第几天和星期几。具体步骤如下:
1. 定义一个结构体类型来存储日期信息,包括年、月、日。
```
struct Date {
int year;
int month;
int day;
};
```
2. 定义一个函数来计算指定的日期是当年的第几天。
```
int get_day_of_year(struct Date date) {
int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数
int is_leap_year = (date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0; //判断是否为闰年
int day_of_year = 0;
for (int i = 0; i < date.month - 1; i++) {
day_of_year += days_in_month[i];
}
day_of_year += date.day;
if (is_leap_year && date.month > 2) {
day_of_year += 1; //如果是闰年并且在2月之后,天数加1
}
return day_of_year;
}
```
3. 定义一个函数来计算指定的日期是星期几。
```
int get_weekday(struct Date date) {
time_t t = time(NULL); //获取当前时间
struct tm *tm_now = localtime(&t); //使用本地时间
tm_now->tm_year = date.year - 1900; //设置年份
tm_now->tm_mon = date.month - 1; //设置月份
tm_now->tm_mday = date.day; //设置日
mktime(tm_now); //计算时间
return tm_now->tm_wday; //返回星期几
}
```
使用示例:
```
int main() {
struct Date date = {2021, 6, 1};
printf("2021/6/1是第%d天,星期%d\n", get_day_of_year(date), get_weekday(date));
return 0;
}
```
输出结果:
```
2021/6/1是第152天,星期2
```
阅读全文