Sidebar

Nội dung loạt bài

  • Bài 1. Giới thiệu C/C++
  • Bài 2. Kiểu dữ liệu, toán tử, hàm số
  • Bài 3. Câu lệnh Vào/Ra
  • Bài 4. Cấu trúc rẽ nhánh (IF)
  • Bài 5. Cấu trúc lựa chọn (SWITCH)
  • Bài 6. Cấu trúc lặp FOR
  • Bài 7. Cấu trúc lặp WHILE
  • Bài 8. Cấu trúc lặp DO-WHILE
  • Bài 9. Dữ liệu kiểu mảng (ARRAY)
  • Bài 10. Dữ liệu có cấu trúc (STRUCT)
  • Bài 11. Hàm (FUNCTION)
  • Bài 12. Con trỏ (POINTER)
  • Bài 13. Tệp tin (FILE)
  • Bài 14. Lập trình hướng đối tượng (OOP)
Tự Học Tin - Dự án vì cộng đồng của TBit Tự Học Tin - Dự án vì cộng đồng của TBit
  • Văn phòng
    • Microsoft 365
      • Word 365Soạn thảo văn bản
      • Excel 365Bảng tính, hàm, biểu đồ
      • PowerPoint 365Bài trình chiếu
    • Google và nguồn mở
      • Google Workspace Docs, Sheets, Drive, Meet
      • LibreOffice Bộ văn phòng miễn phí
      • AI trong văn phòngCopilot, Gemini, ChatGPT
    Tin học văn phòng

    Làm chủ văn phòng

    Văn bản, bảng tính, trình chiếu và AI cho công việc.

    Bắt đầu học
  • Lập trình
    • Ngôn ngữ hiện đại
      • Python Dữ liệu và tự động hóa
      • JavaScript Ngôn ngữ của web
      • TypeScript JavaScript có kiểu
      • Flutter Ứng dụng đa nền tảng
    • Nền tảng và AI
      • C/C++Nền tảng lập trình
      • C#Ứng dụng .NET
      • PascalLập trình cơ bản
      • AI hỗ trợ lập trìnhViết mã cùng AI
    Lập trình

    Bắt đầu với Python

    Ngôn ngữ hiện đại, từ dòng lệnh đầu tiên đến ứng dụng.

    Bắt đầu học
  • Phát triển web
    • Giao diện web
      • HTMLCấu trúc trang web
      • CSS Bộ chọn, Flexbox, Grid
      • Bootstrap 5 Thành phần, lưới 12 cột
      • Tailwind CSS Lớp tiện ích utility-first
      • JavaScript Tương tác, DOM, fetch
      • TypeScript Front-end an toàn kiểu
    • Ứng dụng web
      • PHP Lập trình máy chủ
      • SQL Truy vấn dữ liệu
      • PHP và MySQL Ứng dụng có CSDL
      • Node.js JavaScript phía máy chủ
      • Next.js React full-stack
      • Framework web React, Vue, Angular
    Phát triển web

    Từ HTML, CSS đến Next.js

    Giao diện với Bootstrap, Tailwind; máy chủ với PHP, Node.js; ứng dụng full-stack hoàn chỉnh.

    Bắt đầu học
  • AI ứng dụng
    • Học và làm cùng AI
      • Kỹ thuật viết prompt Cấu trúc, kỹ thuật, prompt mẫu
      • Agentic AI và trợ lý AI Claude, ChatGPT, Gemini làm trợ lý
      • AI trong văn phòng Copilot, Gemini, ChatGPT
      • AI hỗ trợ lập trình Viết mã cùng AI
    AI ứng dụng

    Từ viết prompt đến trợ lý AI

    Viết prompt chuẩn, giao việc cho Claude, ChatGPT, Gemini; dùng AI an toàn trong văn phòng và lập trình.

    Bắt đầu học
  • Công cụ số
    • Phát triển và kiểm thử
      • Git và GitHub Quản lý mã nguồn
      • Kiểm thử phần mềmĐảm bảo chất lượng
    • Đồ họa và SEO
      • PhotoshopThiết kế đồ họa
      • Kỹ thuật SEOTối ưu tìm kiếm
    Công cụ số

    Kỹ năng số bổ trợ

    Mã nguồn, kiểm thử, đồ họa và tối ưu tìm kiếm.

    Bắt đầu học

Bài 10. Dữ liệu có cấu trúc (STRUCT)

1. Khái niệm về dữ liệu cấu trúc (struct)

Một cấu trúc dữ liệu là một tập hợp của những kiểu dữ liệu khác nhau được gộp lại với một cái tên duy nhất.    

Ví dụ: Nếu coi sinh viên là một biến thì biến sinh viên chứa nhiều kiểu dữ liệu khác nhau như:

    - Họ tên: char

    - Tuổi: int

    - Địa chỉ: char

    - Điểm thi: float,...

Như vậy, sinh viên có thể coi như một biến cấu trúc.


2. Khai báo struct

// Định nghĩa cấu trúc

struct <Tên cấu trúc> {  
     Các trường (các biến thành phần);
     ...
   };

// Khai báo biến cấu trúc

<Tên cấu trúc> <các biến cấu trúc>,...;

Ví dụ:

// Định nghĩa cấu trúc SV
   struct SV{
     char hoTen[30];
     char diaChi[50];
     int tuoi;
     float diem; 
   };

// Khai báo các biến VS
SV a,b; //a,b là biến cấu trúc SV
SV dhTin[4]; //dhTin là biến mảng cấu trúc SV

3. Sử dụng struct

- Mỗi trường trong cấu trúc như một biến thông thường.

- Khi sử dụng các trường ta dùng toán tử "."

Ví dụ:

// sử dụng biến điểm của sinh viên a

a.diem;


Ví dụ 1:

+ Yêu cầu: Viết chương trình thực hiện

  - Nhập vào tạo độ 3 điểm A,B,C trong không gian.

  - Tính độ dài 3 đoạn thẳng AB,AC,BC.

  - Kiểm tra xem A,B,C có thẳng hàng không?

+ Code:

#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

int main() {
  // truc TaoDo
   struct ToaDo{
     float x, y, z;
   };
  // khai bao bien ToaDo
   ToaDo A, B, C;
   // Nhap toa do 3 diem
   cout<<"\n Nhap toa do 3 diem: ";
   cout<<"\n A: ";
   cin>>A.x>>A.y>>A.z;
   cout<<"\n B: ";
   cin>>B.x>>B.y>>B.z;
   cout<<"\n C: ";
   cin>>C.x>>C.y>>C.z;       
  // Tinh do dai doan thang
   float d1; // AB
   float d2; // AC
   float d3; // BC
   d1=sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)+(A.z-B.z)*(A.z-B.z));
   d2=sqrt((A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y)+(A.z-C.z)*(A.z-C.z));
   d3=sqrt((C.x-B.x)*(C.x-B.x)+(C.y-B.y)*(C.y-B.y)+(C.z-B.z)*(C.z-B.z));

  // In do dai 3 doan thang
  cout<<"\n Do dai 3 doan thang: \n";
  cout<<"\n AB : "<<d1;
  cout<<"\n AC : "<<d2;
  cout<<"\n BC : "<<d3;

  // Kiem tra tinh thang hang
   if(d1+d2==d3||d1+d3==d2||d2+d3==d1)  
      cout<<"\n 3 diem A,B,C thang hang";
   else  
       cout<<"\n 3 diem A,B,C khong thang hang";      

return 0;
}

Ví dụ 2:

+ Yêu cầu: Viết các hàm thực hiện

  - Nhập thông tin SV gồm: họ tên, địa chỉ, tuổi, điểm toán, lý, hóa.

  - Tính điểm tổng kết.

  - In thông tin sinh viên.

+ Code:

/* Chương trình này sử dụng hàm (phần hàm sẽ được trình bày ở bài sau) */

#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<string.h>

using namespace std;

// Dinh nghia cau truc SV
struct SV{
char ht[30],dc[50];
int tuoi;
float dT,dL, dH;
};

// Khai bao bien cau truc
SV a;

// Ham nhap thong tin
void NhapTT(){
  // xu ly bo dem cho viec nhap mot xau
  fflush(stdin);
  cout<<"\n Nhap Sinh vien: ";
  cout<<"\n - Ho ten: ";
  gets(a.ht); // nhap mot xau
  cout<<"\n - Dia chi: ";
  gets(a.dc);
  cout<<"\n - Tuoi: ";
  cin>>a.tuoi;
  cout<<"\n - Diem toan: ";
  cin>>a.dT;
  cout<<"\n - Diem ly: ";
  cin>>a.dL;
  cout<<"\n - Diem hoa: "; cin>>a.dH;
}

// Ham Tinh diem
float TinhDiem(){
return (a.dT+a.dL+a.dH)/3;
}

// Ham In thong tin
void InTT(){
// tim xep loai
char xepLoai[10];
float dtk=TinhDiem();
// Xep loai sinh vien
if (dtk<5)
   strcpy(xepLoai,"Truot"); // copy xau
else
   if (dtk<6) 
     strcpy(xepLoai,"TB");
     else  
       if (dtk<7)    
         strcpy(xepLoai,"TBK");
     else
       if (dtk<8)    
         strcpy(xepLoai,"Kha");  
       else    
         if (dtk<9)      
           strcpy(xepLoai,"Gioi");    
         else if (dtk<=10)      
           strcpy(xepLoai,"XS");  
       else    
         strcpy(xepLoai,"");
// in thong tin sinh vien
cout<<"\n In sinh vien: ";
cout<<"\n - Ho ten: "<<a.ht;
cout<<"\n - Dia chi: "<<a.dc;
cout<<"\n - Tuoi: "<<a.tuoi;
cout<<"\n - Diem tong ket: "<<dtk;
cout<<"\n - Xep loai: "<<xepLoai;
}

// Ham main
int main(){
  NhapTT();
  InTT();
  getch() ;

return 0;
}

Ví dụ 3:

+ Yêu cầu: Viết chương trình thực hiện

1. Nhập vào thông tin của một nhân viên IT:

  - Ho ten

  - Tuoi

  - Vi tri lam viec

  - He so luong

  - So nam cong tac

2. In thông tin của nhân viên vừa nhập.

3. Tính lương cho nhân viên:

  luong = he so luong * luong co ban + phu cap.

Trong đó: 

  - Phụ cấp = 1.2 lương cơ bản nếu số năm công tác > 3,

  - Ngược lại phụ cấp băng 1 lương cơ bản.

4. Tính thuế thu nhập mà nhân viên phải trả.

Nếu lương > 5.000.000 thì thuế = 10% lương, ngược lại thuế = 0.

+ Code:

/* Lưu ý:

  Chương trình được viết bằng ngôn ngữ C

  Các bạn hoàn toàn có thể chuyển đổi sang C++

  Đổi printf -> cout; scanf -> cin.

*/

#include<stdio.h>
#include<conio.h>
#include<string.h>

// khai bao hang LCB
#define LCB 1050000

using namespace std;

// Dinh nghia struc NV
struct NV{
  char hoTen[30], viTriLV[30];
  int tuoi, soNamCT;
  float heSoLuong;
};

// khai bao bien
NV t;

// Nhap thong tin nhan vien
void NhapTT(){
printf("\n Nhap nhan vien: \n");
printf("\n Ho ten: ");
fflush(stdin);
gets(t.hoTen);
printf("\n Vi tri lam viec: ");
fflush(stdin);
gets(t.viTriLV);
do{
   printf("\n Tuoi nhan vien: ");
   scanf("%d",&t.tuoi);
   if (t.tuoi<18||t.tuoi>65)
       printf("\n Tuoi khong hop le, nhap lai tuoi");
  } while(t.tuoi<18||t.tuoi>65);
do{
   printf("\n So nam cong tac: ");
   scanf("%d",&t.soNamCT);
   if (t.soNamCT<0|| t.soNamCT>t.tuoi-18)
       printf("\n So nam cong tac khong hop le, nhap lai nam cong tac");
  } while (t.soNamCT<0|| t.soNamCT>t.tuoi-18);
do{
   printf("\n He so luong: ");
   scanf("%f",&t.heSoLuong);
   if (t.heSoLuong<=0||t.heSoLuong>15)
       printf("\n He so luong khong hop le, nhap lai he so luong.");
  } while (t.heSoLuong<=0||t.heSoLuong>15);
}

// In thong tin nhan vien
void InTT(){
   printf("\n IN THONG TIN NHAN VIEN: \n");
   printf("\n - Ho ten: %s",t.hoTen);
   printf("\n - Vi tri lam viec: %s",t.viTriLV);
   printf("\n - Tuoi: %d",t.tuoi);
   printf("\n - So nam cong tac: %d",t.soNamCT);
   printf("\n - He so luong: %f",t.heSoLuong);
}

// Tinh luong
float TinhLuong(){
   float phuCap;
   if(t.soNamCT>=3)
     phuCap=1.2*LCB;
   else
     phuCap=LCB;
   return (t.heSoLuong*LCB+phuCap);
}

// Tinh thue thu nhap
float ThueTN(){
   float thue=0;
   if (TinhLuong()>=5000000)
     thue=0.1*TinhLuong();
   return thue;
}

// ham main
int main(){
   NhapTT();
   InTT();
   printf("\n Luong nhan vien: %f",TinhLuong() );
   printf("\n Thue thu nhap: %f",ThueTN() );
     getch();

return 0;
}

Các bài khác …

  1. Bài 11. Hàm (FUNCTION)
  2. Bài 12. Con trỏ (POINTER)
  3. Bài 13. Tệp tin (FILE)
  4. Bài 14. Lập trình hướng đối tượng (OOP)
Trang 10 / 14
  • Đầu tiên
  • Trước
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • Tiếp tục
  • Cuối cùng

Nội dung loạt bài

  • Bài 1. Giới thiệu C/C++
  • Bài 2. Kiểu dữ liệu, toán tử, hàm số
  • Bài 3. Câu lệnh Vào/Ra
  • Bài 4. Cấu trúc rẽ nhánh (IF)
  • Bài 5. Cấu trúc lựa chọn (SWITCH)
  • Bài 6. Cấu trúc lặp FOR
  • Bài 7. Cấu trúc lặp WHILE
  • Bài 8. Cấu trúc lặp DO-WHILE
  • Bài 9. Dữ liệu kiểu mảng (ARRAY)
  • Bài 10. Dữ liệu có cấu trúc (STRUCT)
  • Bài 11. Hàm (FUNCTION)
  • Bài 12. Con trỏ (POINTER)
  • Bài 13. Tệp tin (FILE)
  • Bài 14. Lập trình hướng đối tượng (OOP)
  1. Trang chủ
  2. Lập trình
  3. Lập trình cơ bản
  4. C/C++

© 2015 Tự Học Tin DMCA.com Protection Status

Chuyên trang hướng dẫn tự học công nghệ thông tin. Vui lòng ghi rõ "Nguồn: TuHocTin.Net" khi bạn sao chép nội dung tại đây.

TRANG CHỦ  |  GIỚI THIỆU  |  QUY ĐỊNH  |  LIÊN HỆ  |  TBIT  |  FACEBOOK  |  TWITTER