DEV c++编写从键盘输入一个年份year和月份month,输出该月有多少天(考虑闰年)。
时间: 2023-05-21 17:01:27 浏览: 115
以下是 DEV C 的代码:
```
#include <stdio.h>
int main() {
int year, month, days;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
printf("%d 年 %d 月有 %d 天\n", year, month, days);
return 0;
}
```
相关问题
使用devc++编写一个c语言程序,要求从键盘输入两个日期,计算这两个日期间隔的天数,例如:输入:2019,3,5 2022,1,2 输出:2019年3月5日到2022年1月2日之间间隔1050
天。
好的,这是一个计算日期间隔的题目。以下是C语言程序示例:
```c
#include <stdio.h>
int main() {
int year1, month1, day1, year2, month2, day2;
int i, leap = 0, sum1 = 0, sum2 = 0, days;
printf("请输入起始日期(年、月、日,用空格隔开):");
scanf("%d%d%d", &year1, &month1, &day1);
printf("请输入结束日期(年、月、日,用空格隔开):");
scanf("%d%d%d", &year2, &month2, &day2);
for (i = 1; i < month1; i++) {
switch (i) {
case 4:
case 6:
case 9:
case 11:
sum1 += 30;
break;
case 2:
if ((year1 % 400 == 0) || (year1 % 4 == 0 && year1 % 100 != 0)) {
leap = 1;
} else {
leap = 0;
}
sum1 += 28 + leap;
break;
default:
sum1 += 31;
break;
}
}
sum1 += day1;
for (i = 1; i < month2; i++) {
switch (i) {
case 4:
case 6:
case 9:
case 11:
sum2 += 30;
break;
case 2:
if ((year2 % 400 == 0) || (year2 % 4 == 0 && year2 % 100 != 0)) {
leap = 1;
} else {
leap = 0;
}
sum2 += 28 + leap;
break;
default:
sum2 += 31;
break;
}
}
sum2 += day2;
if (year1 == year2) {
days = sum2 - sum1;
} else {
days = 365 - sum1 + sum2;
for (i = year1 + 1; i < year2; i++) {
if ((i % 400 == 0) || (i % 4 == 0 && i % 100 != 0)) {
leap = 1;
} else {
leap = 0;
}
days += 365 + leap;
}
}
printf("%d年%d月%d日到%d年%d月%d日之间间隔%d天。\n", year1, month1, day1, year2, month2, day2, days);
return 0;
}
```
在程序中,我们首先从键盘输入两个日期的年、月、日,然后用两个循环分别计算这两个日期距离该年的1月1日的天数(sum1和sum2),并累加各个月份的天数(根据不同的月份判断天数),还需要判断闰年的影响。最后,如果两个日期是同一年,直接相减就是间隔的天数;否则需要分段计算,累加中间年份的天数。
运行程序,输入开始日期和结束日期,即可得到日期间隔的天数。注意,该程序没有处理输入错误的情况(例如月份和日期超出范围、日期倒置等),需要自行添加判断。
dev c++按年/月/日的格式输入一个日期,按该格式输出该日期的下一天 代码示例
在Dev C++中,你可以使用`<ctime>`库来进行日期操作。以下是一个简单的代码示例,它将提示用户输入一个日期,然后计算并输出下一天:
```cpp
#include <iostream>
#include <ctime>
void inputDate(int& day, int& month, int& year) {
std::cout << "请输入年、月、日(格式:YYYY/MM/DD): ";
std::cin >> year >> month >> day;
}
int main() {
int day, month, year;
struct tm date = {0};
// 输入日期
inputDate(day, month, year);
date.tm_mday = day; // 存储输入的天数
date.tm_mon = month - 1; // 月份从0开始计数,所以减一
date.tm_year = year - 1900; // 对于tm_year,通常以1900为基准
// 设置当前时间的其他部分
time_t raw_time = time(0); // 获取当前时间
localtime_s(&date, &raw_time);
// 计算下一天
++date.tm_mday;
// 如果超过当月天数,则跳到下个月第一天
if (date.tm_mday > days_in_month(year, month)) {
date.tm_mday = 1;
++date.tm_mon;
}
// 如果一年最后一个月已经是12月,加一整年
while(date.tm_mon == 12 && date.tm_mday > days_in_month(year + 1, 1)) {
date.tm_mon = 0;
++year;
}
// 格式化并输出结果
char buffer[25];
strftime(buffer, sizeof(buffer), "%Y/%m/%d", &date);
std::cout << "下一天的日期是: " << buffer << std::endl;
return 0;
}
// 辅助函数获取给定年份和月份的天数
int days_in_month(int year, int month) {
return (month == 2 && is_leap_year(year)) ? 29 : (month == 4 || month == 6 || month == 9 || month == 11) ? 30 : 31;
}
// 判断是否是闰年
bool is_leap_year(int year) {
return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}
```
这个程序首先定义了几个辅助函数,如输入日期、判断是否为闰年以及获取某个年月的天数。主函数中先获取用户输入的日期,然后通过递增`tm_mday`并处理可能出现的月份变化,得到下一天的日期。
阅读全文