Bài giảng Lập trình tính toán khoa học kỹ thuật - Buổi 6: Kiểu dữ liệu mới và xâu - Lê Hoàng Sơn

Lập trình tính toán khoa học kỹ thuật 1

Buổi 6: Kiểu dữ liệu mới và xâu

Nội dung chính

1 Kiểu Dữ Liệu Mới

2 Xâu

3 Bài tập

pdf 19 trang phuongnguyen 4420
Bạn đang xem tài liệu "Bài giảng Lập trình tính toán khoa học kỹ thuật - Buổi 6: Kiểu dữ liệu mới và xâu - Lê Hoàng Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình tính toán khoa học kỹ thuật - Buổi 6: Kiểu dữ liệu mới và xâu - Lê Hoàng Sơn

Bài giảng Lập trình tính toán khoa học kỹ thuật - Buổi 6: Kiểu dữ liệu mới và xâu - Lê Hoàng Sơn
 Buổi 6: Kiểu dữ liệu mới và xâu 
 Giảng viên: TS. Lê Hoàng Sơn 
 lehoangson@hus.edu.vn 
Lập trình tính toán khoa học kỹ thuật 1 
Nội dung chính 
 1 Kiểu Dữ Liệu Mới 
 2 Xâu 
 3 Bài tập 
 2/19 Lê Hoàng Sơn 
 1. Kiểu dữ liệu mới 
 Sử dụng khi ta muốn định nghĩa một loại dữ liệu mới mà 
 trong cú pháp của C chuẩn không cung cấp 
 Ví dụ: danh sách học sinh 
 Đặt lại tên kiểu dữ liệu đã có bằng câu lệnh: 
 typedef kiểu_đã_có tên_kiểu_mới; 
 Ví dụ: typedef int songuyen; 
 Có thể định nghĩa thêm kiểu dữ liệu mới thông qua cú 
 pháp enum và struct. 
 3/19 Lê Hoàng Sơn 
 Cú pháp enum (tập hợp) 
 enum tên_kiểu_dữ_liệu_mới 
 { 
 phần tử 1, 
 . 
 phần tử k 
 }; 
 Sau khi khai báo, ta có thể sử dụng kiểu dữ liệu mới này 
 trong chương trình như sau: 
 tên_kiểu_dữ_liệu_mới biến; 
 tên_kiểu_dữ_liệu_mới hàm (đối số) { 
 . 
 } 
 4/19 Lê Hoàng Sơn 
 Ví dụ: Chọn hướng đi 
#include 
#include 
enum huong { Định nghĩa các hướng 
 dong=0, tay=1, nam=2, bac=3 
}; 
int main () { 
 huong huongdi; Sử dụng kiểu dữ liệu mới 
 puts ("Ban muon di dau: "); 
 scanf("%d",&huongdi); 
 switch (huongdi) { 
 case bac: puts("Ban di ve huong bac"); break; 
 case nam: puts("Ban di ve huong nam"); break; 
 case tay: puts("Ban di ve huong tay"); break; 
 case dong: puts("Ban di ve huong dong"); break; 
 Gọi hàm 
 } 
 getch(); 
 return 0; 
} 
 5/19 Lê Hoàng Sơn 
 Cú pháp struct 
 struct tên_cấu_trúc_mới 
 { 
 KiểuDL_1 thành_phần_1; 
 . 
 KiểuDL_k thành_phần_k; 
 }; 
 Sau khi khai báo, ta có thể sử dụng kiểu dữ liệu mới này 
 trong chương trình như sau: 
 tên_cấu_trúc_mới biến; 
 tên_cấu_trúc_mới hàm (đối số) { 
 . 
 } 
 6/19 Lê Hoàng Sơn 
 Truy cập struct 
 Sau khi khai báo biến, ta có thể truy cập các thành phần 
 của cấu trúc như sau: 
 biến. thành_phần_i 
 Nếu biến sử dụng cấu trúc là con trỏ, ta truy cập các thành 
 phần thông qua phép toán -> 
 Ví dụ: tên_cấu_trúc_mới *biến; 
 biến-> thành_phần_i 
 Ta có thể khai báo một mảng cấu trúc như sau 
 Ví dụ: tên_cấu_trúc_mới biến[100]; 
 7/19 Lê Hoàng Sơn 
 Ví dụ: danh sách sinh viên 
#include 
#include 
#include 
struct sinhvien { Khai báo một cấu trúc 
 int id; char *ten; float diem; 
}; 
int main() { 
 sinhvien sv1, *sv2; Sử dụng cấu trúc 
 sv1.id=1; sv1.ten = "Nam"; sv1.diem = 9.5; 
 sv2 = (sinhvien *) calloc(1,sizeof(sinhvien)); 
 sv2 -> ten = "Huy"; sv2 -> diem = 4.0; Gán giá trị 
 printf("\n Ten = %s Diem = %f ", sv1.ten,sv1.diem); 
 printf("\n Ten = %s Diem = %f ", sv2->ten,sv2->diem); 
 getch(); 
 return 0; 
} 
 8/19 Lê Hoàng Sơn 
Nội dung chính 
 1 Kiểu Dữ Liệu Mới 
 2 Xâu 
 3 Bài tập 
 9/19 Lê Hoàng Sơn 
 2. Xâu – Chuỗi ký tự 
 Chuỗi ký tự là một dãy các ký tự đặt trong cặp dấu nháy 
 kép. 
 . Ví dụ: str = “hello”; 
 Chuỗi rỗng được ký hiệu bằng hai dấu nháy kép đi liền 
 nhau. 
 . Ví dụ: str = “”; 
 Một chuỗi ký tự được cấp phát một khoảng nhớ cho một 
 mảng kiểu char chứa các ký tự của chuỗi và chứa thêm 
 ký tự '\0' là ký tự kết thúc chuỗi. 
 Khai báo chuỗi ký tự: 
 . char ten_chuoi[] ; 
 . char *ten_chuoi; 
 10/19 Lê Hoàng Sơn 
 Một số hàm trong 
 Lấy độ dài chuỗi 
 . int strlen(char s[]) 
 Sao chép chuỗi source vào chuỗi dest: 
 . strcpy(char dest[], char source[]) 
 Sao chép n ký tự trong chuỗi source vào chuỗi dest 
 . strncpy(char dest[], char source[], int n) 
 Nối chuỗi ch2 vào cuối chuỗi ch1 
 . strcat(char ch1[], char ch2[]) 
 Nối n ký tự đầu tiên của ch2 vào ch1 
 . strncat(char ch1[], char ch2[],int n) 
 Tìm lần xuất hiện đầu tiên của ký tự c trong chuỗi s, trả về địa chỉ 
 của ký tự này 
 . char *strchr(char s[], char c) 
 11/19 Lê Hoàng Sơn 
 Một số hàm trong (tiếp) 
 Tìm kiếm chuỗi s2 trong chuỗi s1, Trả về địa chỉ của lần 
 xuất hiện đầu tiên của s2 trong s1 hoặc NULL khi không 
 tìm thấy 
 . char *strstr(char s1[], char s2[]) 
 So sánh hai chuỗi ch1 và ch2. Nguyên tắc so sánh theo 
 kiểu từ điển. Giá trị trả về: 
 . = 0 nếu chuỗi ch1 bằng chuỗi ch2 
 . > 0 nếu chuỗi ch1 lớn hơn chuỗi ch2 
 . < 0 nếu chuỗi ch1 nhỏ hơn chuỗi ch2 
 . int strcmp(char ch1[], char ch2[]) 
 12/19 Lê Hoàng Sơn 
 Đếm số lần xuất hiện của một ký tự trong một xâu 
#include 
#include 
#include 
int main() 
{ 
 char ch, xau[128]; int i = 0,so = 0; 
 system("cls"); Xóa màn hình 
 printf("\nNhap mot xau ky tu: ");gets(xau); 
 printf("\nNhap mot ky tu: ");scanf("%c",&ch); 
 while(xau[i]) Kiểm tra từng ký tự trong xâu 
 if (xau[i++]==ch) so++; 
 printf("\nXau nay co %d chu %c",so,ch); 
 getch(); 
 return 0; 
} 
 13/19 Lê Hoàng Sơn 
 Ví dụ: minh họa các hàm trong 
#include 
#include 
#include 
int main () { 
 char str1[]="Xin chao“, str2[40]; 
 char str3[40] = " lop tin hoc"; 
 strcpy (str2,str1); puts(str2); 
 strcat (str2,str3); puts(str2); 
 puts(strchr(str2, 'a')); 
 puts(strstr(str2, "lop")); 
 if(strcmp(str2,str1) >0) puts("Chuoi 2 lon hon 
 chuoi 1"); 
 else puts("Chuoi 2 nho hon hoac bang 
 chuoi 1"); 
 getch(); return 0; 
} 
 14/19 Lê Hoàng Sơn 
 Tóm tắt bài học 
Kiểu dữ liệu mới 
 . enum 
 . struct 
Chuỗi ký tự 
 . Khai báo 
 . Một số hàm quan trọng 
 15/19 Lê Hoàng Sơn 
Câu hỏi thảo luận 
 16/19 Lê Hoàng Sơn 
Nội dung chính 
 1 Kiểu Dữ Liệu Mới 
 2 Xâu 
 3 Bài tập 
 17/19 Lê Hoàng Sơn 
 Bài tập 
1. Viết chương trình nhập vào 1 chuỗi, in ra kết quả của 
 10 ký tự đầu tiên. Nếu chuỗi nhập không đủ 10 ký tự, 
 thì có thông báo “ chuỗi có độ dài nhỏ hơn 10” 
2. Nhập vào một chuỗi và đếm số lần xuất hiện của các 
 ký tự trong chuỗi đó 
3. Nhập vào một chuỗi và loại bỏ khoảng trắng trong 
 chuỗi. In ra độ dài của chuỗi cũ và mới. 
4. Nhập vào danh sách N sinh viên gồm các thông tin 
 sau: mã sinh viên, họ tên, ngày tháng năm sinh, điểm 
 phẩy, quê quán, nam/nữ. In ra sinh viên có điểm lớn 
 nhất 
5. Sắp xếp danh sách sinh viên trên theo họ tên và in ra 
 màn hình 
 18/19 Lê Hoàng Sơn 
 Lê Hoàng Sơn 
 C l i c k to e d i t c o m p a n y s l o g a n . 
Lập trình tính toán khoa học kỹ thuật 

File đính kèm:

  • pdfbai_giang_lap_trinh_tinh_toan_khoa_hoc_ky_thuat_buoi_6_kieu.pdf