设置一个变量存储每个月的总天数,设置一个变量存储第一天是星期几,利用循环控制语句遍历该月的每一天,如果碰到周日要换行
时间: 2024-10-18 11:18:22 浏览: 17
在C语言中,如果你需要统计每个月的总天数以及记录第一个星期天的位置,并且按照这个逻辑遍历整个月并在遇到周日时换行,你可以创建两个变量分别用于计数天数和星期天的计数,并使用`%w`作为条件判断星期几。这里是一个简化版本的例子,仅适用于非闰年的2月份,因为闰年二月有29天:
```c
#include <stdio.h>
#include <time.h>
int days_in_month;
int first_sunday;
void count_days_and_weekends(int year, int month) {
struct tm timeinfo = {0};
timeinfo.tm_year = year - 1900;
timeinfo.tm_mon = month - 1;
days_in_month = 0;
first_sunday = -1; // 初始化为-1,表示还没有找到
while (true) {
timeinfo.tm_mday++;
if (timegm(&timeinfo)) { // 尝试设置时间戳,如果成功则继续
printf("%d ", timeinfo.tm_wday); // 星期几(范围0-6,0代表周一)
days_in_month++;
if (timeinfo.tm_wday == 0) { // 找到第一个星期天
first_sunday = days_in_month;
break;
}
} else {
break; // 如果无法设置时间(例如超出月份天数),跳出循环
}
}
// 检查是否需要换行
if (first_sunday != -1 && first_sunday > 0) {
printf("\n"); // 遇到周日换行
}
}
int main() {
int year = 2024;
int month = 2;
count_days_and_weekends(year, month);
printf("Total days in February: %d\n", days_in_month);
return 0;
}
```
这段代码会先计算给定月份(这里取2月份)的总天数,并找出第一个星期天的索引。当遇到周日时,它会检查`first_sunday`是否已设置,如果是,则在输出后换行。
阅读全文