[C++] Tìm chữ số lớn nhất của số nguyên dương N

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ến tram
    • Hàng chục: chuc = (n % 100) / 10 sẽ gán giá trị của chữ số hàng chục cho biến chuc
    • Hàng đơn vị: donvi = n % 10 sẽ gán giá trị của chữ số hàng đơn vị cho biến donvi.
  • 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

Kết quả 1

Kết quả 2

Kết quả 3

Kết quả 4

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?

thuật toán cờ caro

thuật toán prim

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

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em