验证用户输入的日期格式是否正确,如果不正确,则提示重新输入,直到重新输入正确为止。

(提示:需要定义一个表示日期的结构体类型struct Date,包括年、月、日信息,并用typedef重新定义新类型名Date;检查日期是否有效,定义为函数int checkDate(Date date))。

#include <stdio.h>
//定义一个表示日期的结构体类型struct Date
struct Date
	int year;
	int month;
	int day;
}date;
//用typedef重新定义新类型名Date
typedef struct Date Date;
//检查日期是否有效函数
//int checkDate(Date date);
int checkDate(Date date)
	int y = 0;
	//判断月份是否为31天
	if (date.month == 1 || date.month == 3 || date.month == 5 || date.month == 7 || date.month == 8 || date.month == 10 || date.month == 12)
		y = 1;
	//判断月份是否为30天
	if (date.month == 4 || date.month == 6 || date.month == 9 || date.month == 11)
		y = 4;
	//月份为2月时(需要判断闰年)
	if (date.month == 2)
		if ((date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0)
			y = 2;
			y = 3;
	if (date.year < 1900 || date.year>2020)
		return 0;
	else if (date.month < 1 || date.month>12)
		return 0;
	else if (y == 1 && (date.day < 1 || date.day>31))
		return 0;
	else if ((y == 4) && (date.day < 1 || date.day>30))
		return 0;
	else if ((y == 2) && (date.day < 1 || date.day>29))
		return 0;
	else if ((y == 3) && (date.day < 1 || date.day>28))
		return 0;
		return 1;
int main()
	int x;
		printf("Please input the date!\n");
		scanf_s("%d%d%d", &date.year, &date.month, &date.day);
		x = checkDate(date);
	} while (x == 0);
	if (x)
		printf("Correct!\n");
	return 0;

运行结果:
在这里插入图片描述
在这里插入图片描述

验证用户输入的日期格式是否正确,如果不正确,则提示重新输入,直到重新输入正确为止。(提示:需要定义一个表示日期的结构体类型struct Date,包括年、月、日信息,并用typedef重新定义新类型名Date;检查日期是否有效,定义为函数int checkDate(Date date))。#include &lt;stdio.h&gt;//定义一个表示日期的结构体类型struct Datestruct Date{ int year; int month; int day;}date;// 我们知道一年有12个月,每个月最多有31天,年有平年和闰年之分,本题目要求如果输入一个日期程序需要判断用户输入日期是否正确提示:测试输入的三个数字中,年份是正数,月份和日期有可能是负数,程序需要对这两个数为负数的情况进行判断。 多组测试用例,对每组测试用例: 用户输入是三个数字,分别表示年,月和日。 例如 2007 10 21 ,表示2007年10月21日,这个输入经过判断是正确的。又例如输入 1993 11 38 ,这个输入经过判断是错误的,因为日期不能超过31天。 程序的输
import java.util.Scanner; public class WhileMonth { public static void main(String[] args) { Scanner input = new Scanner(System.in); int month; boolean isRight; System.out.println(“请输入月份(1-12月):”)...
public class Notebook { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输... while((n=scanf("%d%d",&a,&b))!=2){ printf("error,scanf return %d\n",n); while(getchar()!='\n'); printf("%d,%d",a,b); 这里有两层while循环,第一层用于检测scanf的返回值   (包括 m 和 n ) 的所有年分 具体要求输入,输出要有提示信息,并且要判断输入数据合法性,如果输入年份 m 和 n 不在合法范围内,则输出“输入错误!请重新输入。”用户重新输入数据,直到输入了合法的数据为止 要确保用户从键盘输入的数据符合要求,可用 do – while 语句实现。例如,要求输入一个正整数,如果输入错误,则需要重新输入
1、首先从输入的字符中提取出年、月、日,判断是不是大于0的数字,并且在月和日中小于10的数字填充‘0’ 变成长度为2的字符; 2、将提取出的字符重组,使其组合成“YYYY-MM-DD”格式,并判断是否长度为10; 3、判断年份是否为闰年,确定2月的天数; 4、判断30,31天的月份的日是否正确; 5、月份不能大于12.
Java判断日期格式是否正确 Java中有一个能判断日期格式是否正确的方法SimpleDateFormat.setLenient(boolean lenient)。该方法的默认值为true,会将错误的日期格式(如:2021年2月29日)转化为正确日期(2021年3月1日)。如果设置为false,则不会自动转化,而是抛出java.text.ParseException异常。可用于判断用户输入日期是否正确。 https://blog.csdn.net/weixin_30531261/article/det
输入多组数据,请处理到文件结束。 用户输入是三个数字,分别表示年,月和日。 例如 2007 10 21 ,表示2007年10月21日,这个输入经过判断是正确的。又例如输入 1993 11 38 ,这个输入经过判断是错误的,因为日期不能超过31天。 对于每组数据输出结果。 程序的输出分为两种,1或者0。1表示输入正确,0表示输入错误。 while (1) { // 无限循环,条件为真 printf("请输入一个数字:"); scanf("%s", input); // 提示用户输入,并将输入存放到 input 数组中 num = atoi(input); // 将字符转换为整型数字 if (num == 0 && input[0] != '0') { // 判断转换后的数字是否为 0,如果是则说明输入的不是数字 printf("您输入的不是数字,请重新输入!\n"); continue; // 如果用户输入的不是数字,跳过本次循环,重新提示用户输入 printf("您输入的数字为:%d\n", num); break; // 如果用户输入的是数字,跳出循环 return 0; 该代码中,使用 while(1) 语句实现了一个无限循环,程序会一直循环执行,直到满足某个条件(例如用户输入了数字)跳出循环。在循环体内,使用 scanf 函数获取用户输入,并使用 atoi 函数将输入的字符转换为整型数字。如果转换后的数字为 0,并且输入的字符不是字符 '0',则说明输入的不是数字,使用 continue 语句跳过本次循环,重新提示用户输入。如果转换后的数字不为 0,则说明用户输入的是数字,使用 break 语句跳出循环,程序结束执行。
【NS-3】报错:invalid lock file in The project was not configured: run “waf configure“ first dxr48012: 重新编译了依然不行怎么办 【C语言程序练习】输入一个3位正整数,计算该数的逆序数 nxjdjem: 那如果是300或者890这样的数输出的就是3和89 【VS报错】严重性 代码 说明 项目 文件 行 禁止显示状态 警告 C4477 “scanf_s” GemMice: