Home » » Cấu trúc trong C

Cấu trúc trong C

Written By 1 on Thứ Hai, 16 tháng 12, 2013 | 11:59

I. Lý thuyết :
1. Định nghĩa :
Trong lập trình, đôi khi các kiểu dữ liệu cơ sở chưa đủ mềm dẻo để cho cái bài toán thực tế. Các sự vật, hiện tượng trong thực tế rất phức tạp và có nhiều tình nhất khác nhau. Người lập trình có thể định nghĩa các kiểu dữ liệu mới có cấu trúc phù hợp với từng bài toán cụ thể  - Struct (1 loại kiểu dữ liệu có cấu trúc) trong ngôn ngữ lập trình C.
2. Cách khai báo :
Các cách khai báo "struct" :
C1:
struct TênCấuTrúc
{
    KiểuDữLiệu1  ThànhPhần1;
    KiểuDữLiệu2  ThànhPhần2;
    ...
    KiểuDữLiệun  ThànhPhầnn;
};
C2:
typedef struct
{
    KiểuDữLiệu1  ThànhPhần1;
    KiểuDữLiệu2  ThànhPhần2;
    ...
    KiểuDữLiệun  ThànhPhầnn;
}TênCấuTrúc;
C3:
struct TênCấuTrúc
{
    KiểuDữLiệu1  ThànhPhần1;
    KiểuDữLiệu2  ThànhPhần2;
    ...
    KiểuDữLiệun  ThànhPhầnn;
};
typedef struct TênCấuTrúc TênCấuTrúcMới;
3. Ví dụ :

struct hocsinh
{
    char *HoTen;
    int NamSinh;
    float DiemTB;
};

struc phanso
{
    int Tu;
    int Mau;
};
typedef struct phanso PhanSo;

Ví dụ minh họa :
// cau_truc_voi_phan_so.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
struct PhanSo
{
int tu;
int mau;
} a;
void Nhap(PhanSo &ps)
{
printf("\t Nhap vao phan tu so: ");
scanf_s("%d", &a.tu);
printf("\t Nhap vao phan mau so: ");
scanf_s("%d", &a.mau);
ps = a;
}
void Xuat(PhanSo a);
void Xuat(PhanSo a)
{
printf("%d/%d", a.tu, a.mau);
}
int UCLN(int a, int b)
{
a = abs(a);
b = abs(b);
if (a == b) return a;
while (a != b)
if (a > b)
a -= b;
else
b -= a;
return a;
}
void ToiGian(PhanSo &ps)
{
ps.tu = a.tu / UCLN(a.tu, a.mau);
ps.mau = a.mau / UCLN(a.tu, a.mau);
}
void TinhTong(PhanSo a, PhanSo b)
{
PhanSo c;
if (a.mau==b.mau)
{
c.tu = a.tu + b.tu;
c.mau = a.mau;
}
else
{
c.tu = a.tu * b.mau + b.tu * a.mau;
c.mau = a.mau * b.mau;
}
printf("\n \n Tong hai phan so la : ");
Xuat(c);
}
void TinhHieu(PhanSo a, PhanSo b)
{
PhanSo c;
if (a.mau == b.mau)
{
c.tu = a.tu - b.tu;
c.mau = a.mau;
}
else
{ c.tu = a.tu * b.mau - b.tu * a.mau;
c.mau = a.mau * b.mau;
} printf("\n \n Hieu cua hai phan so la :");
Xuat(c);
}
int _tmain(int argc, _TCHAR* argv[])
{
PhanSo ps, ps2;
// Nhap vao phan so thu nhat va toi gian no
printf("\n------------------------------------------");
printf("\n Nhap vao phan so thu 1: \n");
Nhap(ps);
ToiGian(ps);
printf("\n Phan so toi gian la: ");
Xuat(ps);
printf("\n------------------------------------------");
printf("\n------------------------------------------");
// Nhap vao phan so thu hai va toi gian no
printf("\n  Nhap vao phan so thu 2: \n");
Nhap(ps2);
ToiGian(ps2);
printf("\n Phan so toi gian la: ");
Xuat(ps2);
printf("\n------------------------------------------");
// Tinh Tong
TinhTong(ps, ps2); TinhHieu(ps, ps2); _getch();
return 0;
}



II. Bài tập :


0 nhận xét:

Đăng nhận xét