Trong bài viết này chúng ta sẽ thực hiện chương trình đếm số lượng chữ số lớn nhất trong số nguyên dương n bằng C / C++. Để hiểu được bài này các bạn cần có kiến thức cơ bản về ngôn ngữ C và C++.
Mình sẽ thực hiện hai chương trình để đếm số lượng chữ số lớn nhất bằng hai ngôn ngữ khác nhau là C và C++.
Đếm số lượng chữ số lớn nhất trong số nguyên dương n bằng C
Ta cần một biến count = 1 để đếm số chữ số lớn nhất trong n và biến max = 1 đế tìm chữ số lớn nhất trong n.
Sử dụng vòng lặp do..while để yêu cầu người dùng nhập vào số nguyên dương n, nếu n < 0 thì yêu cầu nhập lại.
do { printf("\nNhập vào số nguyên dương n: "); scanf("%d", &n); }while(n < 0 && printf("\nSố n phải lớn hơn hoặc bằng 0!!"));
Nếu n = 0 thì count = 1, vì số lớn nhất khi đó là 0.
if(n == 0) count = 1;
Sử dụng vòng lặp do..while với điều kiện n /= 10 để tìm chữ số lớn nhất, sau mỗi lần tìm thấy thì tăng count lên 1.
do { i = n % 10; if(i == max) count++; if(i > max) max = i; }while(n /= 10);
Sau khi vòng lặp kết thúc thì ta được chữ số lớn nhất là max và số lượng chữ số max xuất hiện trong n là count.
Code:
#include<stdio.h> int main() { int i, n, temp, count = 1; int max = 1; //sử dụng vòng lặp do..while để yêu cầu người dùng nhập vào số nguyen dương n //nếu n < 0 thì yêu cầu nhập lại do { printf("\nNhập vào số nguyên dương n: "); scanf("%d", &n); }while(n < 0 && printf("\nSố n phải lớn hơn hoặc bằng 0!!")); temp = n; //nếu n = 0 thì count = 1 if(n == 0) count = 1; //sử dụng vòng lặp do..while để tìm chữ số lớn nhất trong n //mỗi lần tìm thấy thì tăng count lên 1 do { i = n % 10; if(i == max) count++; if(i > max) max = i; }while(n /= 10); printf("\nChữ số lớn nhất trong %d là: %d",temp, max); printf("\nCó %d chữ số %d trong số %d",count,max,temp); printf("\n-----------------------------------\n"); printf("Chương trình này được đăng tại Freetuts.net"); }
Kết quả:
Đếm số lượng chữ số lớn nhất trong số nguyên dương n bằng C++
Việc đếm số lượng chữ số lớn nhất trong số nguyên dương n bằng C++ tương tự như ngôn ngữ C. Vì về cơ bản hai ngôn ngữ này khá tương đồng nhau.
Ta chỉ cần thay thế printf() và scanf() trong C bằng cout và cin trong C++. Các bạn nhớ khai báo thư viện <iostream> trước khi sử dụng cout và cin nhé.
#include<iostream> using namespace std; int main() { int i, n, temp, count = 1; int max = 0; //sử dụng vòng lặp do..while để yêu cầu người dùng nhập vào số nguyen dương n //nếu n < 0 thì yêu cầu nhập lại do { cout<<"\nNhập vào số nguyên dương n: "; cin>>n; }while(n < 0 && cout<<"\nSố n phải lớn hơn hoặc bằng 0!!"); temp = n; //nếu n = 0 thì count = 1 if(n == 0) count = 1; //sử dụng vòng lặp do..while để tìm chữ số lớn nhất trong n do { i = n % 10; if(i == max) count++; if(i > max) max = i; }while(n /= 10); cout<<"\nChữ số lớn nhất trong "<<temp<<" là: "<<max; cout<<"\nCó "<< count<<" chữ số "<<max<<" trong số "<<temp; cout<<"\n-----------------------------------\n"; cout<<"Chương trình này được đăng tại Freetuts.net"; }
Kết quả:
Như vậy là chúng ta đã thực hiện xong chương trình đếm số lượng chữ số lớn nhất trong số nguyên dương n bằng C / C++. Các bạn có thể tham khảo các bài tập khác tại Tổng hợp 1000 bài tập C / C++ nhé, chúc các bạn thành công !!!
Nguồn: freetuts.net