Viết chương trình kiểm tra số amstrong trong pascal

Trong bài học này, chúng ta cùng nhau đi luyện tập kiến thức về hàm bằng cách giải quyết bài tập kiểm tra số armstrong trong ngôn ngữ C/C++.

Nếu bạn chưa biết tới khóa Học C Bá Đạo, xem bài giới thiệu khóa học tại https://nguyenvanhieu.vn/khoa-hoc-lap-trinh-c/.

NỘI DUNG BÀI VIẾT

  • Bài tập kiểm tra số armstrong
    • Số armstrong là gì?
  • Video hướng dẫn kiểm tra số armstrong
  • Lời giải cho bài toán kiểm tra số armstrong trong C

Bài tập kiểm tra số armstrong

Viết chương trình trên ngôn ngữ C để nhập một số nguyên và kiểm tra xem số đó có phải là số Armstrong hay không. Đưa thông báo kết quả kiểm tra lên màn hình.

Số armstrong là gì?

Số armstrong là số mà từng chữ số trong số đó lũy thừa với số chữ số của nó bằng chính nó. Ví dụ:

  • 137 != 1^3 + 3^3 + 7^3 => 137 không phải là số armstrong
  • 153 = 1^3 + 5^3 + 3^3 => 153 là số armstrong

Ý tưởng giải bài toán

  1. Đếm số lượng chữ số.

  2. Tính tổng các lũy thừa: cơ số là các chữ số, số mũ là số lượng chữ số.

  3. So sánh và kết luận.

Ý tưởng đếm số chữ số của số n

  1. Khởi tạo biến dem = 0.
  2. Chừng nào n còn lớn hơn 0. Thực hiện tăng đếm, xóa bỏ chữ số cuối của n

Video hướng dẫn kiểm tra số armstrong

Lời giải cho bài toán kiểm tra số armstrong trong C

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

 

/*

    BT kiểm tra số Armstrong

*/

 

#include

#include

/*

    1. Đếm số lượng chữ số

    2. Tính tổng các lũy thừa: cơ số là các chữ số, số mũ là số lượng chữ số

    3. So sánh và kết luận

*/

 

// Đếm số lượng chữ số của số n

/*

    1023

    1. 102

    2. 10

    3. 1

    4. 0

    => Có 4 chữ số

*/

int CountDigit(int n)

{

    int count = 0;

    while (n > 0)

    {

        n /= 10;

        ++count;

    }

    return count;

}

 

// Kiểm tra số armstrong

/*

    n = 1023

    => 1^4 + 0^4 + 2^4 + 3^4 so sánh với 1023

 

    1023 % 10 = 3

    1023 / 10 = 102

*/

bool IsArmstrong(int n)

{

    int numDigit = CountDigit(n);

    int tmp = n, sum = 0, last;

    while (tmp > 0)

    {

        last = tmp % 10; // lấy chữ số cuối cùng

        tmp /= 10;       // bỏ chữ số cuối cùng

        sum += pow(last, numDigit);

    }

    if (sum == n)

        return true;

    return false;

}

 

int main()

{

    int n;

    printf("\nNhap n = ");

    scanf("%d", &n);

 

    if (IsArmstrong(n) == true)

    {

        printf("\n%d la so armstrong!", n);

    }else{

        printf("\n%d khong la so armstrong!", n);

    }

}

 

Kết quả chạy chương trình:

0

1

2

3

4

5

6

7

8

9

10

11

12

 

PS G:\c_cources\day_35> g++ .\ArmstrongNumber.cpp -o .\ArmstrongNumber

PS G:\c_cources\day_35> .\ArmstrongNumber.exe

 

Nhap n = 135

 

135 khong la so armstrong!

PS G:\c_cources\day_35> .\ArmstrongNumber.exe

 

Nhap n = 153

 

153 la so armstrong!

 

Theo dõi lập trình không khó tại:

  • Forum: https://www.facebook.com/groups/LapTrinhKhongKho/
  • Youtube: https://www.youtube.com/HieuNguyenVanOfficial

  • TAGS
  • bài tập c++
  • bài tập c++ có lời giải
  • hàm
  • học c bá đạo
  • khóa học lập trình C

Facebook

Twitter

Pinterest

WhatsApp

Nguyễn Văn Hiếu

Sáng lập cộng đồng Lập Trình Không Khó với mong muốn giúp đỡ các bạn trẻ trên con đường trở thành những lập trình viên tương lai. Tất cả những gì tôi viết ra đây chỉ đơn giản là sở thích ghi lại các kiến thức mà tôi tích lũy được.