#include<stdio.h> int main() { int year, month, day,n; printf("输入年-月-日:\n"); scanf("%d-%d-%d", &year, &month, &day); int a[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31}; n=month; while(month < 1 || month>12){ printf("月份错误,重新输入:\n"); scanf("%d",&month); break; } while (day<1 || day>a[n]){ printf("天数错误,重新输入:\n"); scanf("%d",&day); break; } printf("%d年%d月%d日",year,month,day); }
时间: 2024-04-08 20:35:46 浏览: 92
你的代码是一个简单的日期输入和验证程序。用户需要输入一个年份、月份和日期,然后程序会验证输入的月份和日期是否有效,并输出输入的日期。
然而,你的代码有一些问题。在第一个while循环中,你打算通过break语句来跳出循环,但是由于你没有使用条件语句,所以这个break语句会立即执行,导致循环只执行一次。同样,第二个while循环也存在相同的问题。
这里是修正后的代码:
```c
#include <stdio.h>
int main() {
int year, month, day;
printf("输入年-月-日:\n");
scanf("%d-%d-%d", &year, &month, &day);
int days_in_month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
while (month < 1 || month > 12) {
printf("月份错误,重新输入:\n");
scanf("%d", &month);
}
while (day < 1 || day > days_in_month[month]) {
printf("天数错误,重新输入:\n");
scanf("%d", &day);
}
printf("%d年%d月%d日", year, month, day);
return 0;
}
```
现在,如果用户输入的月份或日期不在有效范围内,程序会要求用户重新输入,直到输入有效的值为止。
阅读全文