BT: Nhập vào số xe (gồm 4 chữ số) của bạn. Cho biết số xe của bạn được mấy nước?
Nước của biển số xe là gì?
- Nước của biển số xe là tổng của tất cả các chữ số của biển số xe cộng lại 2 lần
VD 1: Biển số xe 9998
Lần 1: 9+9+9+8=35 chưa phải là nước
Lần 2: 3+5=8 là nước
VD 2: Biển số xe 1233
Lần 1: 1+2+3+3=9 chưa phải là nước
Lần 2: 9+0=9 là nước
+ Input: Biển số xe 4 chữ số (bsx)
+ Solve: Ta sử dụng phép mod (%) và phép div (/) liên tục để giải quyết bài toán
+ Output: Nước của biển số xe
- Mod là phép chia lấy dư
Ví dụ 15 mod 8 = 7 hay là dư 7
- Div là phép chia lấy phần nguyên
Ví dụ 15 div 8 = 1 ( 1.875 ta chỉ lấy phần nguyên nên là = 1 )
Chẳng hạn ở VD 1: bsx = 9998
Lúc đầu khởi tạo biến trung gian và nước đều = 0
Biến tg = trung gian
L1: tg = tg + bsx % 10 ==> tg = 0 + 8 = 8
bsx = bsx / 10 ==> bsx= 9998 / 10 = 999
L2: tg = tg + bsx % 10 ==> tg = 8 + 9 =17
bsx = bsx / 10 ==> bsx= 9998 / 10 = 99
L3: tg = tg + bsx % 10 ==> tg = 17 + 9 = 26
bsx = bsx / 10 ==> bsx= 9998 / 10 = 9
L4: tg = tg + bsx % 10 ==> tg = 26 + 9 = 35
Tương tự với biến nước ta chỉ cần làm 2 lần vì tổng của 4 chữ số <= 36 nên ko cần làm đến lần thứ 3
L5: nuoc = nuoc + tg % 10 ==> nuoc = 0 + 5 = 5
tg = tg / 10 ==> tg = 35 / 10 = 3
L5: nuoc = nuoc + tg % 10 ==> nuoc = 5 + 3 = 8
Chương trình:
#include <stdio.h>
main()
{
int bsx,tg=0,nuoc=0;
printf("Nhap bien so xe: ");
scanf("%d",&bsx);
tg=tg+bsx%10;
bsx=bsx/10;
tg=tg+bsx%10;
bsx=bsx/10;
tg=tg+bsx%10;
bsx=bsx/10;
tg=tg+bsx%10;
//-----------------------------------------
nuoc=nuoc+tg%10;
tg=tg/10;
nuoc=nuoc+tg%10;
printf("Nuoc: %d",nuoc);
}
Màn hình chương trình:
Màn hình kết quả:
Nhận xét
Đăng nhận xét