Bài tập về struct C++ – Báo Sài Gòn Tiếp Thị

Đáp án chi tiết, giải thích dễ hiểu nhất cho câu hỏi Bài tập về struct C++” cùng với kiến thức tham khảo là tài liệu cực hay và bổ ích giúp các bạn học sinh ôn tập và tích luỹ thêm kiến thức bộ môn Tin học. 

Bài tập về struct C++

Bài 1: Viết chương trình C++ để cộng hai phân số và hiển thị kết quả. Chương trình của bạn sẽ nhắc người dùng nhập phân số 1 và phân số 2. Tử số và mẫu số được nhập một cách riêng rẽ bởi khoảng trống, như dưới đây:

Bạn đang xem: Bài tập về struct C++

Nhap phan so 1 (tuso mauso): 1 2

Nhap phan so 1 (tuso mauso): 2 5

Ket qua: 9/10

#include 

#include 

using namespace std; 

struct Phanso 

     { 

        int tuso; 

        int mauso;      

      }; 

Phanso sum(Phanso,Phanso); 

   int main()

    { 

     int tuso1,mauso1,tuso2,mauso2; 

    cout<<“Nhap phan so thu nhat: tu so va mau so la: “; 

    cin>>tuso1>>mauso1; 

    cout<<“Nhap phan so thu hai : tu so va mau so la: “; 

    cin>>tuso2>>mauso2;    

     Phanso f1={tuso1, mauso1};/* 1/2 */ 

     Phanso f2 ={tuso2, mauso2};/* 2/5 */ 

     Phanso ketqua = sum(f1, f2);//phep cong phan so 

    cout<

     return 0; 

    } 

   Phanso sum(Phanso f1, Phanso f2) 

    { 

     Phanso ketqua={(f1.tuso * f2.mauso) + (f2.tuso * f1.mauso), f1.mauso * f2.mauso}; 

     return ketqua; 

   } 

Bài 2: Định nghĩa kiểu cấu trúc phân số gồm tử số và mẫu số. Thực hiện cài đặt các chức năng sau:

+ Cài đặt các phép toán cộng, trừ, nhân, chia 2 phân số.

+ In ra kết quả các phép toán kể trên dưới dạng phân số tối giả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

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

 

#include

#include

#include

 

int UCLN(int a, int b)

{

    a = abs(a);

    b = abs(b);

    while (a * b != 0)

    {

        if (a > b)

            a %= b;

        else

            b %= a;

    }

    return a + b;

}

 

int BSCNN(int a, int b)

{

    return a * b / UCLN(a, b);

}

 

typedef struct PhanSo

{

    int tuso, mauso;

} PS;

 

PS rutGon(PS a)

{

    PS c;

    c.tuso = a.tuso / UCLN(a.tuso, a.mauso);

    c.mauso = a.mauso / UCLN(a.tuso, a.mauso);

    return c;

}

 

PS cong(PS a, PS b)

{

    PS c;

    c.tuso = a.tuso * b.mauso + a.mauso * b.tuso;

    c.mauso = a.mauso * b.mauso;

    c = rutGon(c);

    return c;

}

 

PS tru(PS a, PS b)

{

    PS c;

    c.tuso = a.tuso * b.mauso – a.mauso * b.tuso;

    c.mauso = a.mauso * b.mauso;

    c = rutGon(c);

    return c;

}

 

PS nhan(PS a, PS b)

{

    PS c;

    c.tuso = a.tuso * b.tuso;

    c.mauso = a.mauso * b.mauso;

    c = rutGon(c);

    return c;

}

 

PS chia(PS a, PS b)

{

    PS c;

    c.tuso = a.tuso * b.mauso;

    c.mauso = a.mauso * b.tuso;

    c = rutGon(c);

    return c;

}

void print(PS a)

{

    printf(“%d/%d”, a.tuso, a.mauso);

}

int main()

{

    PS a, b, c;

    printf(“nNhap phan so a : “);

    scanf(“%d%d”, &a.tuso, &a.mauso);

    printf(“nNhap phan so b : “);

    scanf(“%d%d”, &b.tuso, &b.mauso);

    printf(“nToi gian a ta duoc : “);

    a = rutGon(a);

    print(a);

    printf(“nToi gian b ta duoc : “);

    b = rutGon(b);

    print(b);

    printf(“nTong cua hai phan so = “);

    c = cong(a, b);

    print(c);

    printf(“nHieu cua hai phan so = “);

    c = tru(a, b);

    print(c);

    printf(“nTich cua hai phan so = “);

    c = nhan(a, b);

    print(c);

    printf(“nThuong cua hai phan so = “);

    c = chia(a, b);

    print(c);

}

Bài 3: Viết chương trình định nghĩa kiểu cấu trúc NGAYTHANG bao gồm 3 thuộc tính (ngày, tháng, năm). Dựa trên kiểu cấu trúc NGAYTHANG đã có, tiếp tục định nghĩa kiểu câu trúc SinhVien bao gồm các thông tin (mã sinh viên, họ đệm, tên, ngày tháng năm sinh, giới tính, hộ khẩu thường trú, điểm thi đại học). Viết các hàm con thực hiện các chức năng sau đây:

+ Nhập danh sách sinh viên từ bàn phím.

+ Hiển thị danh sách sinh viên đã nhập.

+ Sắp xếp danh sách sinh viên theo điểm tăng dần.

+ Hiển thị danh sách sau khi sắp xếp.

Viết hàm main thực hiện các chức năng kể trê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

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

 

#include

#include

#include

#include

#include

 

using namespace std;

 

struct NGAYTHANG {

    int ngay;

    int thang;

    int nam;

};

struct SV {

    char masv[12];

    char hodem[30];

    char ten[10];

    NGAYTHANG ngsinh;

    char gioitinh[4];

    char hokhau[20];

    float diem;

};

void Nhapsv(SV *sv) {

    cin.ignore(256, ‘n’);

    cout << “tMa sv: “;

    scanf(” %[^n]s”, sv->masv);

    cout << “tHo dem: “;

    scanf(” %[^n]s”, sv->hodem);

    cout << “tTen: “;

    scanf(” %[^n]s”, sv->ten);

    cout << “tNgay sinh: “;

    cin >> sv->ngsinh.ngay;

    cout << “tThang sinh: “;

    cin >> sv->ngsinh.thang;

    cout << “tNam sinh: “;

    cin >> sv->ngsinh.nam;

    cout << “tGioi tinh: “;

    scanf(” %[^n]s”, sv->gioitinh);

    cout << “tHo khau: “;

    scanf(” %[^n]s”, sv->hokhau);

    cout << “tDiem: “;

    cin >> sv->diem;

}

void Hienthisv(SV *sv) {

    cout << sv->masv;

    cout << “t” << sv->hodem;

    cout << ” ” << sv->ten;

    cout << “t” << sv->ngsinh.ngay;

    cout << “-” << sv->ngsinh.thang;

    cout << “-” << sv->ngsinh.nam;

    cout << “t” << sv->gioitinh;

    cout << “t” << sv->hokhau;

    cout << “t” << sv->diem;

}

void Nhapds(SV *p, int n) {

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

        cout << “Nhap thong tin cua sv thu ” << i + 1 << ” :” << endl;

        Nhapsv(p + i);

    }

}

void Hienthids(SV *p, int n) {

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

        Hienthisv(p + i);

        cout << “n”;

    }

}

void Sapxep(SV *p, int n) {

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

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

            if ((p + i)->diem > (p + j)->diem) {

                SV tmp = * (p + j);

                *(p + j) = * (p + i);

                *(p + i) = tmp;

            }

    }

}

int main() {

    SV *p;

    int n;

    do {

        cout << “Nhap vao so sv: “;

        cin >> n;

    }

    while (n < 0 || n > 10);

    p = new SV[n];

    cout << “Nhap vao thong tin ” << n << ” sv: ” << endl;

    Nhapds(p, n);

    cout << “Hien thi thong tin vua nhap: ” << endl;

    Hienthids(p, n);

    cout << “nDanh sach sau khi sap xep la: ” << endl;

    Sapxep(p, n);

    Hienthids(p, n);

    delete p;

    return 0;

}

Đăng bởi: Sài Gòn Tiếp Thị

Chuyên mục: Lớp 12, Tin Học 12