Bài viết này sẽ hướng dẫn bạn cách viết chương trình tìm chữ số lớn nhất của số nguyên dương n c++. Đây là một bài toán đơn giản nhưng giúp bạn hiểu rõ hơn về các thao tác cơ bản trong lập trình.
Xem thêm: Bài 4: (TH-CSLT-06): Viết chương trình tính lương cho nhân viên theo các yêu
cầu sau:
– Nhập tên của người được lĩnh lương.
– Nhập tiền công 1 ngày, số ngày làm việc trong tháng, và số tiền đã tạm ứng.
tính tổng các phần tử trong mảng 2 chiều c++
xoá phần tử trong mảng c++
1. Mô tả bài toán
Bài 5 (TH-CSLT-03): Viết chương trình nhập vào một số nguyên N gồm ba chữ số. Xuất ra màn hình chữ số lớn nhất ở vị trí nào?
Nói cách khác: viết chương trình nhận vào số nguyên dương n và in ra chữ số có giá trị lớn nhất của n .
Ví dụ: N=497. Chữ số lớn nhất nằm ở hàng chục (chữ số 9)
2. Phân tích bài toán
– Trường hợp số nguyên có 3 chữ số:
- Xác thực số hợp lệ: Vòng lặp
do...while
được sử dụng để yêu cầu người dùng nhập một số có 3 chữ số. Điều kiện kiểm tra là(n < 100 || n > 999)
. Nếu số nhập vào không nằm trong khoảng từ 100 đến 999, vòng lặp sẽ tiếp tục chạy cho đến khi số hợp lệ được nhập vào.
do { cout << "nhap n co 3 chu so:"; cin >> n; } while (n < 100 || n > 999); Gán các giá trị hàng đơn vị, hàng chục và hàng trăm //gan gia tri donvi, chuc, tram tram = n / 100; chuc = (n % 100) / 10; donvi = n % 10; max = tram;
- Tách các chữ số: Khi số hợp lệ được nhập vào, chương trình sẽ tiến hành tách số đó thành các chữ số riêng lẻ. Điều này được thực hiện bằng cách sử dụng các phép toán chia và chia lấy dư.
- Hàng trăm:
tram = n / 100
sẽ gán giá trị của chữ số hàng trăm cho biếntram
- Hàng chục:
chuc = (n % 100) / 10
sẽ gán giá trị của chữ số hàng chục cho biếnchuc
- Hàng đơn vị:
donvi = n % 10
sẽ gán giá trị của chữ số hàng đơn vị cho biếndonvi
.
- Hàng trăm:
- Xác định chữ số lớn nhất: Kiểm tra giá trị của
max
để xác định vị trí chữ số lớn nhất và in ra thông báo tương ứng: Cả ba chữ số bằng nhau; Chữ số lớn nhất ở hàng chục; Chữ số lớn nhất ở hàng trăm; Chữ số lớn nhất ở hàng đơn vị - In kết quả: In ra giá trị lớn nhất và vị trí tương ứng.
if (tram == chuc && tram == donvi) cout << "ba chu so bang nhau"; else { if (chuc > max && donvi > max) { if (chuc > donvi) { max = chuc; } else max = donvi; } else { if (chuc > tram) max = chuc; if (donvi > tram) max = donvi; } if (max == tram) cout << "chu so lon nhat o hang tram"; else if (max == chuc) cout << "chu so lon nhat o hang chuc"; else cout << "chu so lon nhat o hang don vi"; }
– Trường hợp số nguyên bất kỳ:
Tách từng chữ số:
- Sử dụng vòng lặp
do...while
để lấy từng chữ số từ phải sang trái bằng phép chia lấy dư(n%10)
. - Cập nhật giá trị lớn nhất nếu chữ số hiện tại lớn hơn giá trị lớn nhất đã lưu.
Kết thúc vòng lặp: Khi n=0
, giá trị lớn nhất chính là kết quả.
3. Code chương trình
Trường hợp số nguyên 3 chữ số
#include<bits/stdc++.h> using namespace std; int main() { int n, tram, chuc, donvi, max; //nhap den khi n la so co 3 chu so thi thuc hien tiep do { cout << "nhap n co 3 chu so:"; cin >> n; } while (n < 100 || n > 999); //gan gia tri donvi, chuc, tram tram = n / 100; chuc = (n % 100) / 10; donvi = n % 10; max = tram; //thuc hien so sanh if (tram == chuc && tram == donvi) cout << "ba chu so bang nhau"; else { if (chuc > max && donvi > max) { if (chuc > donvi) { max = chuc; } else max = donvi; } else { if (chuc > tram) max = chuc; if (donvi > tram) max = donvi; } if (max == tram) cout << "chu so lon nhat o hang tram"; else if (max == chuc) cout << "chu so lon nhat o hang chuc"; else cout << "chu so lon nhat o hang don vi"; } }
Trường hợp số nguyên bất kỳ
#include <iostream> using namespace std; int main() { int n, max = 0, digit; // Nhập số nguyên dương cout << "Nhap n (so nguyen duong): "; cin >> n; // Tìm chữ số lớn nhất do { digit = n % 10; // Lấy chữ số cuối if (digit > max) max = digit; n /= 10; // Bỏ chữ số cuối } while (n > 0); // In kết quả cout << "Chu so lon nhat: " << max << endl; return 0; }
4.Kết quả chạy chương trình
5. Mở rộng bài toán
Viết chương trình nhập vào số nguyên N. Xuất ra màn hình chữ số lớn nhất(Tìm chữ số lớn nhất của số nguyên dương N)
Tương tự bài toán tìm số lớn nhất của số nguyên dương N có 3 chữ số. Ta chỉ cần thay đổi thuật toán so sánh if thành do…while như sau
do { i = n % 10; if (i > max) { max = i; } } while (n /= 10);
Sau khi kết thúc vòng lặp ta được chữ sô lớn nhất là max.
Bài tiếp theo:
Bài 6 (TH-CSLT-07): Viết chương trình nhập vào toạ độ 2 điểm P, Q với P(xP, yP), Q(xQ,yQ)
a.In ra màn hình phương trình đường thẳng đi qua 2 điểm PQ.
b.Cho điểm I có toạ độ I(xI, yI). Hãy cho biết điểm I có thuộc đường thẳng đi qua 2 điểm PQ hay không?
Tải full tài liệu thực hành C/C++
Trên đây ttnguyen.net đã đưa ra cách giải bài toán tìm chữ số lớn nhất của một số nguyên dương n ngôn ngữ lập trình C++. Mình rất vui khi các bạn tham khảo bài viết của mình. Nếu có bất kì thắc mắc hoặc nhầm lẫn gì, hãy đừng ngần ngại liên hệ với mình nhé. Chúc các bạn thành công