Thực hành lập trình C trên môi trường UNIX.
lượt xem 15
download
Mảng là một khối các biến có cùng kiểu dữ liệu • Mảng có thể được khai báo với mọi kiểu dữ liệu. – Ví dụ: int A[10] là 1 mảng 10 số nguyên. • Các ví dụ : – Danh sách điểm của SV (list of students’ marks) – Dãy các số được nhập vào bởi người sử dụng. – vectors (véc tơ) – Ma trận.(Matrices)
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Thực hành lập trình C trên môi trường UNIX.
- Giới thiệu Thực hành lập trình C trên môi trường • UNIX. • Chủ đề thực hành liên quan đến cấu trúc dữ liệu và giải thuật. • trình biên dịch: gcc • Trình soạn thảo: Emacs, K-Developper.
- Cú pháp gcc Tham số: -Wall : bật tất cả các cảnh báo -c: tạo file đối tượng (object file) -o: name of output file ( tên file đầu ra ) -g: thông tin về gỡ lỗi (muốn sử dụng gdb thì khi dịch phải thêm tham số này). -l: thư viện gcc –Wall hello.c –o runhello ./runhello
- Tuần này: Các cấu trúc dữ liệu cơ sở và giải thuật. Chủ đề: – Array, String, Pointer Review – Các phép toán về File dựa trên kí tự trong UNIX. – Các bài tập lập trình.
- Array • Mảng là một khối các biến có cùng kiểu dữ liệu • Mảng có thể được khai báo với mọi kiểu dữ liệu. – Ví dụ: int A[10] là 1 mảng 10 số nguyên. • Các ví dụ : – Danh sách điểm của SV (list of students’ marks) – Dãy các số được nhập vào bởi người sử dụng. – vectors (véc tơ) – Ma trận.(Matrices)
- Mảng trong bộ nhớ Là dãy các biến có kiểu dữ liệu đã được định • trước. • Bản thân mảng đã lưu giữ địa chỉ đầu tiên của dãy trong bộ nhớ. • Ví dụ: …0 1 2 3 4 5 6 7 8 … double S[10]; s • 1 mảng k phần tử A được khai báo là A [k-1] (0- based)
- Ví dụ - Đảo ngược # include int main(void) { int i, A[10]; printf("please enter 10 numbers:\n"); for(i=0; i=0; i--) printf("%d\n", A[i]); return 0; }
- Bài tập 1.1 Viết 1 chương trình nhận vào 1 dòng kí tự (kết thúc bằng kí tự ‘\n’) từ người sử dụng, và đưa ra màn hình số lần xuất hiện của mỗi chữ cái trong dòng đó. Nhập vào chỉ gồm các chữ cái thường và dấu khoảng trống. Ví dụ:The output for the input line: “hello, world!” The letter 'd' appears 1 time(s). The letter 'e' appears 1 time(s). The letter 'h' appears 1 time(s). The letter 'l' appears 3 time(s). The letter 'o' appears 2 time(s). The letter 'r' appears 1 time(s). The letter 'w' appears 1 time(s).
- Solution (giải pháp) #define ALPHABET_LEN 26 int main(void) { int i = 0; count[ALPHABET_LEN] = {0}; char c = '\0'; printf(“Nhập a line of text: \n"); /* nhập từng kí tự và cập nhật mảng đếm*/ c = getchar(); while (c != '\n' && c >= 0) { if (c = 'a') ++count[c - 'a']; if (c = 'A') ++count[c - 'A']; c = getchar(); }
- Solution for (i = 0; i < ABC_LEN; ++i) { if (count[i] > 0) printf("The letter '%c' appears %d time(s).\n", 'a' + i, count[i]); } return 0; }
- Bài tập 1.2 (20 phút) Thực thi 1 hàm nhận vào 2 mảng số • nguyên, trả về 1 nếu 2 mảng giống nhau, trả về 0 nếu không. • Viết 1 chương trình nhận 2 mảng số nguyên từ người sử dụng và kiểm tra sự = nhau.
- Solution #include #define SIZE 5 int compare_arrays(int arr1[], int arr2[], int size ) { int i = 0; for (i = 0; i < size; ++i) { if (arr1[i] != arr2[i]) return 0; } /* Nếu ta tới được đến đây thì 2 mảng là giống hệt nhau */ return 1;
- Solution int main(void) { int input1[SIZE], input2[SIZE], i; printf("Please enter a list of %d integers:\n",SIZE); for (i = 0; i < SIZE; ++i) scanf("%d", &input1[i]); printf("Please enter another list of %d,integers:\n", SIZE); for (i = 0; i < SIZE; ++i) scanf("%d", &input2[i]); if (compare_arrays(input1, input2, SIZE) == 1) printf("Both lists are identical!\n"); else printf("The lists are not identical...\n"); return 0; }
- Strings mảng các kí tự. 1 Sử dụng để lưu trữ văn bản. 1 cách khác để khởi tạo string: char str[] = "Text"; … ‘a’ ‘t’ ‘e’ … ‘e’ ‘\0’ . ‘s’ ‘8’ … str Kết thúc ở đây
- String Để lưu giữ 1 xâu gồm n kí tự ta cần 1 mảng gồm n+1 phần tử. Cách khai báo trên tương đương với cách khai báo sau: char str[] = {'b', 'l', 'a', 'b', 'l', ’\0’} ;
- Các hàm liên quan đến xâu và kí tự getchar() c = getchar();//đọc 1 kí tự và lưu vào c scanf scanf("%s", str); gets() gets(str);// chú ý trước khi dùng gets thường sử dụng lệnh while(getchar()! =‘\n’); để tránh lỗi.
- Các hàm liên quan đến xâu và kí tự strlen(const char s[]) return độ dài xâu s strcmp(const char s1[],const char s2[]) trả về 0 nếu 2 xâu = nhau; 1 nếu xâu s1 lớn hơn s2; -1 nếu s1 nhỏ hơn s2; strcpy(char s1[],const char s2[]) copy nội dung của xâu s2 vào xâu s1.
- Bài tập 1.3 Viết 1 hàm: Nhận 1 xâu và 2 kí tự. - Hàm quét toàn bộ xâu và thay kí tự thứ nhất mỗi lần nó xuất hiện - trong xâu bởi kí tự thứ 2. Viết 1 chương trình để test hàm trên. Đầu vào do ng sử dụng nhập, xâu ktự không có dấu khoảng trống.In ra xâu kết quả. Example: – input: “papa”, ‘p’, ‘m’ – output: “mama”
- Solution void replace(char str[], char replace_what,char replace_with) { int i; for (i = 0; str[i] != '\0'; ++i) { if (str[i] == replace_what) str[i] = replace_with } }
- Solution #define STRING_LEN 100 int main(void) { char str[STRING_LEN + 1]; char replace_what, replace_with, tmp; printf("Please enter a string (no spaces)\n"); scanf("%100s", str); printf("Letter to replace: "); scanf(" %c", &replace_what);//chữ được thay thế do {tmp=getchar();} while (tmp!='\n'); printf("Letter to replace with: "); scanf(" %c", &replace_with);//chữ thay thế vào replace(str, replace_what, replace_with); printf("The result: %s\n", str); return 0; }
- Con trỏ - Khai báo type *variable_name; Con trỏ được khai báo bằng cách thêm dấu * vào trước tên biến. Con trỏ là 1 biến mà chứa địa chỉ trong bộ nhớ. Địa chỉ nên là địa chỉ của 1 biến hay 1 mảng mà ta định nghĩa.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Hướng dẫn thực hành Lập trình C trên Windows
8 p | 1645 | 304
-
Môn học Lập trình C trên Windows Bài tập thực hành
7 p | 832 | 187
-
Bài tập thực hành Lập trình C trên Windows
7 p | 545 | 112
-
Tài liệu lập trình C++ tiếng Việt
200 p | 295 | 74
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lịch trình - ĐH Công nghệ Tp.HCM
3 p | 470 | 64
-
Đề thi môn lập trình C trên Windows
17 p | 249 | 64
-
CÁC QUI ĐỊNH - Môn học: Lập trình C trên Windows
1 p | 298 | 57
-
BÀI TẬP THỰC HÀNH LẬP TRÌNH C CƠ BẢN_SỐ 1
3 p | 399 | 56
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 8 - ĐH Công nghệ Tp.HCM
17 p | 304 | 52
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 7 - ĐH Công nghệ Tp.HCM
14 p | 234 | 47
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 6 - ĐH Công nghệ Tp.HCM
5 p | 222 | 44
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 5 - ĐH Công nghệ Tp.HCM
6 p | 251 | 40
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 1 - ĐH Công nghệ Tp.HCM
8 p | 300 | 39
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 2 - ĐH Công nghệ Tp.HCM
8 p | 212 | 38
-
Hướng dẫn thực hành lập trình C trên Visual Studio
9 p | 1341 | 31
-
Hệ điều hành Linux - Bài 2: Lập trình C trên Linux
6 p | 133 | 11
-
Bài giảng C Programming introduction: Tuần 1 - Thiết lập môi trường
26 p | 12 | 2
-
Bài giảng Lập trình C cơ bản: Tuần 1
44 p | 9 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn