c语言编写输入某年某月某日,判断这一天是这一年的第几天的程序
时间: 2023-11-20 14:13:03 浏览: 170
好的,以下是该程序的代码:
```c
#include <stdio.h>
int main()
{
int year, month, day, sum = 0, i;
int days_of_month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("请输入年、月、日,用空格隔开:\n");
scanf("%d %d %d", &year, &month, &day);
// 判断是否是闰年,修改2月天数
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
days_of_month[2] = 29;
}
// 累计前面月份的天数
for (i = 0; i < month; i++) {
sum += days_of_month[i];
}
// 加上本月已过天数
sum += day;
printf("%d年%d月%d日是这一年的第%d天。\n", year, month, day, sum);
return 0;
}
```
该程序使用了一个数组来记录每个月份的天数,通过输入的年月日计算出该日在该年中是第几天。同时,程序进行了闰年的判断,调整了2月份的天数。
注意,以上程序可能存在输入非法日期导致程序出错的风险,需要进行异常处理。
相关问题
C语言编写程序 输入某年某月某日,判断这一天是这一年的第几天
在C语言中,编写一个函数来计算给定日期是一年中的第几天,需要考虑闰年的情况,因为二月有28天或29天。以下是一个简单的示例,这个函数名为`days_in_month()`,它接收年份、月份和日期作为输入:
```c
#include <stdio.h>
// 检查是否是闰年
int is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 计算一个月中的天数
int days_in_month(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 (is_leap_year(year)) {
return 29;
} else {
return 28;
}
default:
// 疑似错误的月份
return -1; // 或者抛出异常
}
}
// 计算特定日期是一年中的第几天
int day_of_year(int day, int month, int year) {
int total_days = 0;
for (int i = 1; i < month; ++i) {
total_days += days_in_month(i, year);
}
total_days += day;
return total_days;
}
int main() {
int year, month, day;
printf("请输入年月日(例如: 2023 2 1): ");
scanf("%d %d %d", &year, &month, &day);
if (day <= 0 || month <= 0 || month > 12 || day > days_in_month(month, year)) {
printf("无效的日期!\n");
} else {
int result = day_of_year(day, month, year);
printf("这一天是一年的第 %d 天。\n", result);
}
return 0;
}
```
当你运行此程序并提供有效的日期,它会计算并打印出该日期是一年中的第几天。注意,这个程序假设用户输入的月份和日期是合法的,并没有做额外的错误检查。
用c语言编写输入某年某月某日判断这一天是这一年的第几天
可以使用C语言编写一个函数来实现输入某年某月某日,判断这一天是这一年的第几天。以下是一个示例代码:
```c
#include <stdio.h>
// 判断是否为闰年
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1; // 是闰年
} else {
return 0; // 不是闰年
}
}
// 计算某月的天数
int getDaysOfMonth(int year, int month) {
int days;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if (isLeapYear(year)) {
days = 29;
} else {
days = 28;
}
break;
default:
days = -1; // 非法月份
break;
}
return days;
}
// 计算某年某月某日是这一年的第几天
int getDayOfYear(int year, int month, int day) {
int i, days = 0;
for (i = 1; i < month; i++) {
days += getDaysOfMonth(year, i);
}
days += day;
return days;
}
int main() {
int year, month, day;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
printf("请输入日期:");
scanf("%d", &day);
int dayOfYear = getDayOfYear(year, month, day);
printf("%d年%d月%d日是这一年的第%d天。\n", year, month, day, dayOfYear);
return 0;
}
```
你可以通过输入年份、月份和日期来运行这个程序,它会输出这一天是这一年的第几天。
阅读全文