六月 27, 2020
如果日期有效
Đề bài: VCT nhập vào ngày tháng năm và kiểm tra xem ngày tháng năm nhập vào có hợp lệ hay không?
Ví dụ nhập ngày 29 月 2 năm 2017 –> không hợp lệ
天 31 月 4 năm 2016 –> không hợp lệ
天 30 月 3 năm 2020 –> hợp lệ.
输入: 3 số nguyên lần lượt là ngày tháng năm cách nhau một khoảng trắng
产量: thông báo HOP LE 或 KHONG HOP LE
例子 1:
输入: 29 2 2017
产量: KHONG HOP LE
例子 2:
输入: 30 3 2020
产量: HOP LE
- Hướng dẫn: Ta khai báo biến kt (kiểm tra) có kiểu Boolean; (kiểu boolean là kiểu logic nó có 2 giá trị là True (权) hoặc False (sai))
var kt:boolean; - Đầu tiên ta giả sử cho ngày tháng năm nhập vào là hợp lệ ta gán giá trị cho biến kiểm tra là đúng.
kt:=true; - Sau đó ta xét các trường hợp ngày tháng năm nếu nó ko hợp lệ thì gán biến kt lại thành sai. Như thế nào là ko hợp lệ, sau đây là các trường hợp không hợp lệ:
-Nếu ngày nhỏ hơn 1 hoặc lớn hơn 31 hoặc tháng nhỏ hơn 1, hoặc lớn hơn 12
-Nếu ngày là 31 mà các tháng là 2,4,6,9,11
-Nếu ngày là 30 mà tháng 2
-Nếu ngày là 29 mà tháng 2 và năm không nhuận - Cuối cùng, ta xét lại biến kiểm tra nếu nó vẫn là đúng thì ngày tháng năm nhập vào là hợp lệ ngược lại là không hợp lệ.
您还没有登录? 注册 到现在提交!
5 评论
添加评论
你一定是 登录 发表评论.
Hướng dẫn: Ta khai báo biến kt (kiểm tra) có kiểu Boolean; (kiểu boolean là kiểu logic nó có 2 giá trị là True (权) hoặc False (sai))
var kt:boolean;
Đầu tiên ta giả sử cho ngày tháng năm nhập vào là hợp lệ ta gán giá trị cho biến kiểm tra là đúng.
kt:=true;
Sau đó ta xét các trường hợp ngày tháng năm nếu nó ko hợp lệ thì gán biến kt lại thành sai. Như thế nào là ko hợp lệ, sau đây là các trường hợp không hợp lệ:
-Nếu ngày nhỏ hơn 1 hoặc lớn hơn 31 hoặc tháng nhỏ hơn 1, hoặc lớn hơn 12
-Nếu ngày là 31 mà các tháng là 2,4,6,9,11
-Nếu ngày là 30 mà tháng 2
-Nếu ngày là 29 mà tháng 2 và năm không nhuận
Cuối cùng, ta xét lại biến kiểm tra nếu nó vẫn là đúng thì ngày tháng năm nhập vào là hợp lệ ngược lại là không hợp lệ.
add nhờ add xem code của em sai ở đâu vậy ạ em dùng pascal:
var kt:boolean;
day,month,year:整数;
开始
readln(day,month,year);
如果 (day31) 要么 (month12) then kt:=false ;
if day=31 then if month in [4,6,9,11] then kt:=false;
if day=30 then if month=2 then kt:=false ;
if day=29 then if ((year mod 4)0) and (month=2) then kt:=false;
if kt=false then write(‘KHONG HOP LE’) ELSE WRITE(‘HOP LE’);
readln;
结束.
sao nó không hiện vậy add
‘””‘
#包括
#define FAST ios_base::sync_with_stdio(false); cin.tie(0);
使用命名空间 std;
int check(int d, int m, int y) {
如果(d 31)
返回 0;
如果(米 12)
返回 0;
else {
switch(米) {
case 4: case 6: case 9: case 11:
如果(d == 31)
返回 0;
case 2:
如果(d == 29 && !((y % 4 == 0 && y % 100 != 0) || y % 400 == 0))
返回 0;
}
}
返回 1;
}
INT主() {
FAST
int d, 米, y;
辛 >> d >> 米 >> y;
如果(check(d, 米, y))
库特 << "HOP LE";
else
库特 << "KHONG HOP LE";
返回 0;
}
Không biết em tư duy như thế này đúng không?