Lập trình C: Tìm số lớn thứ 2 trong dãy

  1. /*

  2. ****************************************************************************

  3. File: FindMax2.cpp

  4. Author: birthis

  5. Email:

  6. Date: 09/01/2011

  7. Description: Chuong trinh tim so lon thu 2 trong mang nhap vao

  8. ****************************************************************************

  9. */

  10. #include <stdio.h>

  11. #include <conio.h>

  12.  

  13. int

    getMax2

    (

    int

    a

    [

    ]

    ,

    int

    n

    )

    ;

  14.  

  15. int

    main

    (

    )

  16. {

  17.    

    int

    a

    [

    100

    ]

    ,

    n

    ;

  18.  

  19. printf

    (

    \n

    Chuong trinh tim so lon thu 2 trong mang.”

    )

    ;

  20.    

    //Nhap du lieu

  21. printf

    (

    \n

    Nhap vao n: “

    )

    ;

  22. fflush

    (

    stdin

    )

    ;

    stdin

  23. scanf

    (

    “%d”

    ,&

    n

    )

    ;

  24.  

  25. printf

    (

    \n

    Nhap mang:”

    )

    ;

  26.    

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    n

    ;

    i

    ++

    )

  27.    

    {

  28. printf

    (

    \n

    a[%d]= “

    ,

    i

    )

    ;

  29. fflush

    (

    stdin

    )

    ;

    stdin

  30. scanf

    (

    “%d”

    ,

    a

    +

    i

    )

    ;

  31.    

    }

  32.  

  33.    

    //In ket qua

  34. printf

    (

    \n

    Mang vua nhap: “

    )

    ;

  35.    

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    n

    ;

    i

    ++

    )

  36.    

    {

  37. printf

    (

    “%d   “

    ,

    a

    [

    i

    ]

    )

    ;

  38.    

    }

  39.  

  40.    

    //Gia tri lon thu 2

  41. printf

    (

    \n

    Gia tri lon thu 2: %d”

    ,

    getMax2

    (

    a

    ,

    n

    )

    )

    ;

    getMax2

  42.  

  43. fflush

    (

    stdin

    )

    ;

    stdin

  44.     getch

    (

    )

    ;

  45.  

  46. }

  47. /*

  48. Ten ham : getMax2

  49. Muc dich: Tim phan tu lon thu 2 cua mang

  50. Dau vao : – Mang so nguyen a

  51.           – So luong phan tu n cua mang a

  52. Dau ra  : – Tra ve max2

  53. */

  54. int

    getMax2

    (

    int

    a

    [

    ]

    ,

    int

    n

    )

  55. {

  56.    

    int

    max1

    ,

    max2

    ;

  57.    

    if

    (

    n

    <=

    0

    )

  58.    

    {

  59. printf

    (

    \n

    Lam gi co phan tu nao dau ma tim ^^”

    )

    ;

  60.        

    return

    0

    ;

  61.    

    }

  62.    

    else

    if

    (

    n

    ==

    1

    )

  63.    

    {

  64. printf

    (

    \n

    Khong co max2 chi co max1 ^^”

    )

    ;

  65.        

    return

    0

    ;

  66.    

    }

  67.    

    else

  68.    

    {

  69.         max1

    =

    max2

    =

    0x80000000

    ;

  70.        

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    n

    ;

    i

    ++

    )

  71.        

    {

  72.            

    if

    (

    max1

    <

    a

    [

    i

    ]

    )

  73.            

    {

  74.                 max2

    =

    max1

    ;

  75.                 max1

    =

    a

    [

    i

    ]

    ;

  76.            

    }

  77.            

    else

    if

    (

    max2

    <

    a

    [

    i

    ]

    &&

    a

    [

    i

    ]

    <

    max1

    )

  78.            

    {

  79.                 max2

    =

    a

    [

    i

    ]

    ;

  80.            

    }

  81.        

    }

  82.        

    return

    max2

    ;

  83.    

    }

  84.    

  85. }