c语言switch函数输入一个年月日输出是这一年的第几天
时间: 2023-05-27 20:04:47 浏览: 221
以下是一个可能的解法:
```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;
}
```
注:此代码并没有对输入的日期是否合法进行校验。
相关问题
通过键盘输入年月日输出该日是这一年的多少天,C语言switch
语句实现如下:
```c
#include<stdio.h>
int main()
{
int year, month, day, days = 0;
printf("请输入年月日,格式为YYYY MM DD:");
scanf("%d %d %d", &year, &month, &day);
switch(month) {
case 1: days = 0; break;
case 2: days = 31; break;
case 3: days = 59; break;
case 4: days = 90; break;
case 5: days = 120; break;
case 6: days = 151; break;
case 7: days = 181; break;
case 8: days = 212; break;
case 9: days = 243; break;
case 10: days = 273; break;
case 11: days = 304; break;
case 12: days = 334; break;
default: printf("输入错误!\n"); return 0;
}
days += day;
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
if(month > 2) days += 1;
}
printf("该日是该年的第%d天。\n", days);
return 0;
}
```
在上述代码中,我们首先通过`scanf`函数从键盘输入年月日,然后使用`switch`语句根据月份计算出该月前面所有的天数,再加上当月的天数,最终得到该日是这一年的第几天。需要注意的是,如果是闰年且该日在二月份之后,需要将天数加1。最后,使用`printf`函数输出结果。
输入年月日输出本年度是第几天C语言
在C语言中,计算给定日期是本年度的第几天需要一些日期处理的知识。你可以创建一个函数,它会接收年、月、日作为参数,然后通过判断月份和日期来确定。这里是一个简单的示例:
```c
#include <stdio.h>
#include <time.h>
int daysInMonth(int month, int year) {
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 (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
return 29;
} else {
return 28;
}
}
}
int dayOfYear(int year, int month, int date) {
int total_days = 0;
for (int i = 1; i < month; i++) {
total_days += daysInMonth(i, year);
}
total_days += date - 1; // 减去1是因为1月1日是第一天,不是零
return total_days;
}
int main() {
int year, month, day;
printf("请输入日期(YYYY MM DD): ");
scanf("%d %d %d", &year, &month, &day);
if (year >= 1900) { // 可以调整开始年份
int current_day = dayOfYear(year, month, day);
printf("该日期是%ld年中的第%d天.\n", year, current_day);
} else {
printf("输入无效,年份应大于或等于1900。\n");
}
return 0;
}
```
在这个程序中,`daysInMonth`函数用于获取每个月的天数,`dayOfYear`函数则逐个月累加天数来计算总天数。请注意,这个例子假设用户输入的是有效的日期,并且从1900年开始计数。
阅读全文