Nhập 4 số abcd hãy sắp xếp theo thứ tự tăng dần của các số có giá trị abcd

Home / Tin học / Tin học lớp 11 / Tìm giá trị lớn nhất trong 4 số a, b, c, d (a, b, c, được nhập từ bàn phím).

Check Also

Nhập 4 số abcd hãy sắp xếp theo thứ tự tăng dần của các số có giá trị abcd

  Viết chương trình nhập vào một ma trận vuông cấp n. a. Tính tổng …

nhập vào ba số a b c từ bàn phím , in ra màn hình theo thứ tự tăng dần (chỉ được dùng hai biến phụ)

mong m.n giúp đỡ ạ, em mới học nên chưa biết ạ , muốn nhờ m,n làm mẫu ạ, em cảm ơn trước ạ

Nhập 4 số abcd hãy sắp xếp theo thứ tự tăng dần của các số có giá trị abcd

#include #inlcude int main(){ int a, b, c; // 3 số nguyên int temp;// biến tạm thời để giúp đổi chỗ (temporary) printf("Enter 3 integer a, b, c: "); scanf("%d %d %d", &a, &b, &c); // chuyển số bé nhất vào a if(a>b){ temp=a; a=b; b=temp; } if(a>c){ temp=a; a=c; c=temp; } // chuyển số bé nhì vào b if(b>c){ temp=b; b=c; c=temp; } printf("\n%d %d %d", a, b, c); getch(); return 0; }

Nguồn: http://diendan.congdongcviet.com/

2 Likes

em cảm ơn ạ, thanks

Nhập 4 số abcd hãy sắp xếp theo thứ tự tăng dần của các số có giá trị abcd

Home Categories FAQ/Guidelines Terms of Service Privacy Policy

This entry is part 43 of 69 in the series Học C Không Khó

85 / 100

Sắp xếp dãy số theo thứ tự tăng dần hay giảm dần là 1 bài toán sắp xếp đơn giản và cơ bản nhất đối với bất cứ ai học lập trình. Nói theo cách khác, bài toán này chính là bài toán sắp xếp mảng 1 chiều tăng dần/giảm dần. Bài toán sắp xếp dãy số là bài tập điển hình trong phần kiến thức về mảng 1 chiều. Sắp xếp cũng là một kiến thức quan trọng thuộc phần giải thuật trong cấu trúc dữ liệu & giải thuật. Trong bài viết này, Lập trình không khó sẽ cùng các bạn giải quyết bài toán sắp xếp mảng 1 chiều tăng dần và giảm dần.

1. Dãy số hay là mảng?

Khi bạn làm bài tập lập trình mà có các cụm từ khóa sau:

  • Sắp xếp dãy số tự nhiên tăng dần/giảm dần
  • Sắp xếp mảng số thực tăng dần/ giảm dần
  • Sắp xếp mảng 1 chiều các số tự nhiên tăng/giảm dần

Thì cả 3 đề bài này đều là bài toán sắp xếp dữ liệu trên mảng 1 chiều. Khi nhắc tới “dãy số” thì bạn phải nghĩ ngay tới mảng 1 chiều. Dưới đây là 1 số lưu ý tham khảo trước khi tiếp tục đọc bài viết này:

2. Sắp xếp dãy số giảm dần

Trong code mà mình cung cấp dưới đây thì mình sẽ dùng thuật toán sắp xếp chọn – một thuật toán sắp xếp dễ hiểu và dễ cài đặt nhất.

Xem hình dưới đây để hiểu ý tưởng sắp xếp, xem chi tiết tại bài thuật toán sắp xếp chọn

Nhập 4 số abcd hãy sắp xếp theo thứ tự tăng dần của các số có giá trị abcd

Code sắp xếp mảng/ dãy số giảm dần với C/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

#include

int main(){

    int a[100];

    int n;

    printf("\nNhap so luong phan tu n = ");

    do{

        scanf("%d", &n);

        if(n <= 0){

            printf("\nNhap lai n = ");

        }

    }while(n <= 0);

    for(int i = 0; i < n; i++){

        printf("\nNhap a[%d] = ",i);

        scanf("%d", &a[i]);

    }

    // Sap xep dung thuat toan sap xep chon

    int tg;

    for(int i = 0; i < n - 1; i++){

        for(int j = i + 1; j < n; j++){

            if(a[i] < a[j]){

                // Hoan vi 2 so a[i] va a[j]

                tg = a[i];

                a[i] = a[j];

                a[j] = tg;        

            }

        }

    }

    printf("\nMang da sap xep la: ");

    for(int i = 0; i < n; i++){

        printf("%5d", a[i]);

    }

}

Chạy thử:

Nhap so luong phan tu n = 5

Nhap a[0] = 1

Nhap a[1] = 3

Nhap a[2] = 2

Nhap a[3] = 4

Nhap a[4] = 5

Mang da sap xep la:     5    4    3    2    1

3. Sắp xếp dãy số tăng dần

Việc sắp xếp dãy số tăng dần chỉ khác sắp xếp giảm dần duy nhât ở bước kiểm tra điều kiện để hoán vị.

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

#include

int main(){

    int a[100];

    int n;

    printf("\nNhap so luong phan tu n = ");

    do{

        scanf("%d", &n);

        if(n <= 0){

            printf("\nNhap lai n = ");

        }

    }while(n <= 0);

    for(int i = 0; i < n; i++){

        printf("\nNhap a[%d] = ",i);

        scanf("%d", &a[i]);

    }

    // Sap xep dung thuat toan sap xep chon

    int tg;

    for(int i = 0; i < n - 1; i++){

        for(int j = i + 1; j < n; j++){

            if(a[i] > a[j]){

                // Hoan vi 2 so a[i] va a[j]

                tg = a[i];

                a[i] = a[j];

                a[j] = tg;        

            }

        }

    }

    printf("\nMang da sap xep la: ");

    for(int i = 0; i < n; i++){

        printf("%5d", a[i]);

    }

}

Kết quả chạy thử:

Nhap a[0] = 1

Nhap a[1] = 2

Nhap a[2] = 4

Nhap a[3] = 3

Nhap a[4] = 5

Mang da sap xep la:     1    2    3    4    5

4. Sắp xếp dãy số tăng, giảm dần với hàm

Việc dùng hàm sẽ giúp code của chúng ta rõ ràng, sạch sẽ và cũng dễ quản lý, nâng cấp. Với bài toán này, chúng ta có thể viết 4 hàm riêng biệt sau:

  • void NhapMang(int a[], int n)
  • void XuatMang(int a[], int n)
  • void TangDan(int a[], int n)
  • void GiamDan(int a[], int n)

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

70

71

#include

void NhapMang(int a[], int n){

    for(int i = 0; i < n; i++){

        printf("\nNhap a[%d] = ",i);

        scanf("%d", &a[i]);

    }

}

void XuatMang(int a[], int n){

    for(int i = 0; i < n; i++){

        printf("%5d", a[i]);

    }

}

void TangDan(int a[], int n){

    int tg;

    for(int i = 0; i < n - 1; i++){

        for(int j = i + 1; j < n; j++){

            if(a[i] > a[j]){

                // Hoan vi 2 so a[i] va a[j]

                tg = a[i];

                a[i] = a[j];

                a[j] = tg;        

            }

        }

    }

}

void GiamDan(int a[], int n){

    int tg;

    for(int i = 0; i < n - 1; i++){

        for(int j = i + 1; j < n; j++){

            if(a[i] < a[j]){

                // Hoan vi 2 so a[i] va a[j]

                tg = a[i];

                a[i] = a[j];

                a[j] = tg;        

            }

        }

    }

}

int main(){

    int a[100];

    int n;

    printf("\nNhap so luong phan tu n = ");

    do{

        scanf("%d", &n);

        if(n <= 0){

            printf("\nNhap lai n = ");

        }

    }while(n <= 0);

    NhapMang(a, n);

    printf("\nMang vua nhap la: ");

    XuatMang(a, n);

    // Sap xep tang dan:

    TangDan(a, n);

    printf("\nMang sap xep tang dan la: ");

    XuatMang(a, n);

    // Sap xep giam dan:

    GiamDan(a, n);

    printf("\nMang sap xep giam dan la: ");

    XuatMang(a, n);

}

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

Nhap so luong phan tu n = 5

Nhap a[0] = 1

Nhap a[1] = 4

Nhap a[2] = 3

Nhap a[3] = 2

Nhap a[4] = 5

Mang vua nhap la:     1    4    3    2    5

Mang sap xep tang dan la:     1    2    3    4    5

Mang sap xep giam dan la:     5    4    3    2    1

Chú ý:

  • Với số thực hay kiểu ký tự(char) bạn cũng làm tương tự. Chỉ cần sửa kiểu dữ liệu của mảng, cách nhập, xuất. Còn phần thuật toán sắp xếp vẫn giữ nguyên.
  • Đây là thuật toán sắp xếp đơn giản và dễ cài đặt nhất, bạn nên thử cài đặt bằng những thuật toán sắp xếp khác.