Kỹ thuật lập trình - Ngôn ngữ lập trình C - Các kiểu dữ liệu Nâng cao và Sắp xếp

18 4 0
Kỹ thuật lập trình - Ngôn ngữ lập trình C - Các kiểu dữ liệu Nâng cao và Sắp xếp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Các chương trình ứng dụng trong thực tế đòi hỏi lưu trữ các kiểu dữ liệu khác nhau. Tuy nhiên, các kiểu dữ liệu của C mà chúng ta đã được học có thể không đủ trong các trường hợp đó. Vì vậy, C cho phép tạo ra các kiểu dữ liệu do người dùng định nghĩa. Một trong n hững kiểu như vậy là cấu trúc (structure)

Bài 19 Các Kiểu liệu Nâng cao Sắp xếp Mục tiêu: Kết thúc học này, bạn có thể:  Tìm hiểu cấu trúc (structure) cơng dụng chúng  Định nghĩa cấu trúc  Khai báo biến kiểu cấu trúc  Tìm hiểu cách truy cập vào phần tử cấu trúc  Tìm hiểu cách khởi tạo cấu trúc  Tìm hiểu cách sử dụng cấu trúc với câu lệnh gán  Tìm hiểu cách truyền tham số kiểu cấu trúc  Sử dụng mảng cấu trúc  Tìm hiểu cách khởi tạo mảng cấu trúc  Tìm hiểu trỏ đến cấu trúc  Tìm hiểu cách truyền đối số kiểu trỏ cấu trúc vào hàm  Tìm hiểu từ khóa typedef  Tìm hiểu hai thuật tốn xếp mảng Insertion sort Bubble sort Giới thiệu Các chương trình ứng dụng thực tế địi hỏi lưu trữ kiểu liệu khác Tuy nhiên, kiểu liệu C mà học khơng đủ trường hợp Vì vậy, C cho phép tạo kiểu liệu người dùng định nghĩa Một kiểu cấu trúc (structure) Một cấu trúc tập biến nhóm lại với có tên Một kiểu liệu đặt tên cách sử dụng từ khóa typedef Các ứng dụng thường lưu trữ số lượng liệu lớn Trong trường hợp này, việc định vị mục liệu tốn nhiều thời gian Sắp xếp giá trị theo trật tự làm cho cơng việc tìm kiếm nhanh chóng dễ dàng Trong chương này, xem số giải thuật dùng để xếp mảng 19.1 Cấu trúc Biến sử dụng để lưu giữ mẫu liệu thời điểm mảng sử dụng để lưu giữ số mẫudữ liệu có kiểu Tuy nhiên, chương trình u cầu xử lý mục liệu có kiểu khác đơn vị chung Ở trường hợp này, biến mảng khơng thích hợp để sử dụng Ví dụ, chương trình viết để lưu trữ liệu danh mục sách Chương trình địi hỏi phải nhập lưu trữ tên sách (một mảng chuỗi), tên tác giả (một mảng chuỗi khác), lần xuất (một số nguyên), giá sách (một số thực) Một mảng đa chiều sử dụng để làm điều này, phần tử mảng phải có kiểu Trong trường hợp này, việc sử dụng cấu trúc làm cho việc trở nên đơn giản Các Kiểu liệu Nâng cao Sắp xếp Một cấu trúc bao gồm số mẫu liệu, không cần phải kiểu, nhóm lại với Trong ví dụ trên, cấu trúc bao gồm tên sách, tên tác giả, lần xuất bản, giá sách Cấu trúc lưu giữ mẫu liệu Hình 19.1 Minh họa khác biệt biến, mảng cấu trúc Biến I L L U S I O N S Mản g I L L U S I O N S B A C H Tên sách Tên tác giả Lần xuất Cấu trúc Hình 19.1 Sự khác biến, mảng cấu trúc 19.1.1 Định nghĩa cấu trúc Việc định nghĩa cấu trúc tạo kiểu liệu cho phép người dùng sử dụng chúng để khai báo biến kiểu cấu trúc Các biến cấu trúc gọi phần tử hay thành phần cấu trúc Một cách tổng quát, phần tử cấu trúc quan hệ với cách logic chúng liên quan đến thực thể Ví dụ, danh mục sách biễu diễn sau: struct cat { char bk_name [25]; char author [20]; int edn; float price; }; Câu lệnh định nghĩa kiểu liệu có tên struct cat Mỗi biến kiểu bao gồm bốn phần tử - bk_name, author, edn, price Câu lệnh không khai báo biến chương trình không để dành vùng nhớ nhớ Nó định nghĩa cấu trúc cat Từ khóa struct báo cho trình biên dịch biết structure định nghĩa Nhãn cat tên biến, khơng phải ta khai báo biến Nó tên kiểu Các phần tử cấu trúc định nghĩa dấu móc, kết thúc tồn câu lệnh dấu chấm phẩy 19.1.2 Khai báo biến kiểu cấu trúc Khi cấu trúc định nghĩa, khai báo nhiều biến kiểu Ví dụ: Lập trình C struct cat books1; Câu lệnh dành đủ vùng nhớ để lưu giữ tất mục cấu trúc Khai báo thực chức tương tự khai báo biến: int xyz float ans Nó báo với trình biên dịch dành vùng lưu trữ cho biến với kiểu gán tên cho biến Cũng với int, float kiểu liệu khác, ta có số biến có kiểu cấu trúc cho Trong chương trình, khai báo hai biến books1 books2 có kiểu cấu trúc cat Điều thực theo nhiều cách struct cat { char bk_name[25]; char author[20]; int edn; float price; } books1, books2; struct cat books1, books2; struct cat books1; struct cat books2; Các khai báo dành vùng nhớ cho hai biến books1 books2 Các phần tử cấu trúc truy cập thơng qua việc sử dụng tốn tử chấm (.), tốn tử cịn gọi tốn tử thành viên membership Cú pháp tổng quát dùng để truy cập phần tử cấu trúc là: structure_name.element_name Ví dụ mã lệnh sau truy cập đến trường bk_name biến kiểu cấu trúc books1 khai báo books1.bk_name Để đọc vào tên sách, câu lệnh là: scanf(“%s”, books1.bk_name); Để in tên sách, câu lệnh là: printf(“The name of the book is %s”, books1.bk_name); 19.1.3 Khởi tạo biến cấu trúc Giống biến mảng, biến kiểu cấu trúc khởi tạo thời điểm khai báo Hình thức tương tự cách khởi tạo mảng Xét cấu trúc sau dùng để lưu số thứ tự tên nhân viên: Các Kiểu liệu Nâng cao Sắp xếp struct employee { int no; char name[20]; }; Các biến emp1 emp2 có kiểu employee khai báo khởi tạo sau: struct employee emp1 = {346, “Abraham”}; struct employee emp2 = {347, “John”}; Ở đây, sau khai báo kiểu cấu trúc, hai biến cấu trúc emp1 emp2 khai báo khởi tạo Việc khai báo khởi tạo chúng thực lúc câu lệnh Việc khởi tạo cấu trúc tương tự khởi tạo mảng – kiểu biến, tên biến, toán tử gán, cuối danh sách giá trị đặt cặp móc phân cách dấu phẩy 19.1.4 Thực câu lệnh gán với biến cấu trúc Có thể gán giá trị biến cấu trúc cho biến khác kiểu cách sử dụng câu lệnh gán đơn giản Chẳng hạn, books1 books2 biến cấu trúc có kiểu, câu lệnh sau hợp lệ books2 = books1; Cũng có trường hợp khơng thể dùng câu lệnh gán trực tiếp, sử dụng hàm tạo sẵn memcpy() Nguyên mẫu hàm là: memcpy (char * destn, char &source, int nbytes); Hàm thực chép nbytes lưu trữ địa source đến vùng nhớ khác có địa destn Hàm địi hỏi người sử dụng phải kích cỡ cấu trúc (nbytes), kích cỡ đạt cách sử dụng toán tử sizeof() Sử dụng hàm memcpy(), chép nội dung books1 sang books2 sau: memcpy (&books2, &books1, sizeof(struct cat)); 19.1.5 Cấu trúc lồng cấu trúc Một cấu trúc lồng cấu trúc khác Tuy nhiên, cấu trúc khơng thể lồng Rất nhiều trường hợp thực tế địi hỏi có cấu trúc nằm cấu trúc khác Xét ví dụ, để lưu trữ thông tin người mượn sách chi tiết sách mượn ta sử dụng cấu trúc sau: struct issue { char borrower [20]; char dt_of_issue[8]; struct cat books; }issl; Câu lệnh khai báo books thành phần cấu trúc issue Bản thân thành phần cấu trúc kiểu struct cat Biến cấu trúc khởi tạo sau: struct issue issl = {“Jane”, “04/22/03”, {“Illusions”, “Richard Bach”, 2, 150.00}}; Lập trình C Các dấu ngoặc lồng sử dụng để khởi tạo cấu trúc nằm cấu trúc Đối với biến cấu trúc có thành phần cấu trúc khác, việc truy cập thành phần biến hoàn toàn tương tự biến cấu trúc thông thường Chẳng hạn, để truy cập vào tên người mượn ta dùng lệnh là: issl.borrower Tuy nhiên, để truy cập thành phần author biến cấu trúc cat mà biến cấu trúc lại thành phần biến cấu trúc issl ta sử dụng lệnh sau: issl.books.author Mức độ lồng cấu trúc bị giới hạn dung lượng thời nhớ Có thể có cấu trúc lồng cấu trúc lồng cấu trúc khác v.v… Tên biến thường đặt theo cách thức gợi nhớ nội dung thơng tin mà lưu trữ Ví dụ như: company.division.employee.salary Cũng cần nhớ cấu trúc lồng cấu trúc khác, phải khai báo trước cấu trúc khác sử dụng 19.1.6 Truyền tham số kiểu cấu trúc Kiểu tham số hàm cấu trúc Đây phương tiện hữu dụng ta muốn truyền nhóm thành phần liệu có quan hệ logic với thơng qua biến thay phải truyền thành phần Tuy nhiên, cấu trúc sử dụng tham số, cần phải lưu ý kiểu tham số thực phải trùng với kiểu tham số hình thức Chẳng hạn như, cấu trúc khai báo để lưu trữ tên, mã số khách hàng số tiền gửi gốc vào tài khoản khách hàng Dữ liệu nhập hàm main(), việc toán số tiền lãi phải trả thực cách gọi hàm intcal() có tham số kiểu cấu trúc Đoạn lệnh sau: Ví dụ 1: #include struct strucintcal /* Defines the structure */ { char name[20]; int numb; float amt; }; void main() { struct strucintcal xyz; /* Declares a variable */ void intcal(struct strucintcal); Các Kiểu liệu Nâng cao Sắp xếp clrscr(); /* Accepts data into the structure */ printf("\nEnter Customer name: "); gets(xyz.name); printf("\nEnter Customer number: "); scanf("%d", &xyz.numb); printf("\nEnter Principal amount: "); scanf("%f", &xyz.amt); } intcal(xyz); /* Passes the structure to a function */ getch(); void intcal(struct strucintcal abc) { float si, rate = 5.5, yrs = 2.5; /* Computes the interest */ si = (abc.amt * rate * yrs) / 100; printf ("\nThe customer name is %s", abc.name); printf("\nThe customer number is %d", abc.numb); printf("\nThe amount is %f", abc.amt); printf("\nThe interest is %f", si); return; } Kết chương trình minh họa sau: Enter Customer name: Jane Enter Customer number: 6001 Enter Principal Amount: 30000 The customer name is Jane The customer number is 6001 The amount is 30000.000000 The interest is 4125.000000 Có thể định nghĩa cấu trúc mà khơng có nhãn Điều hữu dụng biến khai báo lúc với định nghĩa cấu trúc Nhãn khơng cần thiết trường hợp 19.1.7 Mảng cấu trúc Một cách sử dụng thông thường cấu trúc mảng cấu trúc Để khai báo mảng cấu trúc, cấu trúc định nghĩa trước, sau biến mảng có kiểu khai báo Ví dụ như, để khai báo mảng cấu trúc có kiểu cat, câu lệnh là: struct cat books[50]; Giống tất biến, mảng cấu trúc bắt đầu số Tên mảng số nằm cặp dấu ngoặc vuông theo sau tên mảng đại diện cho phần tử mảng Sau lệnh khai báo trên, Lập trình C phần tử cấu trúc theo định nghĩa Vì tất qui tắc dùng để truy xuất đến phần tử cấu trúc áp dụng phần tử mảng Sau mảng cấu trúc books khai báo, books[4].author tương ứng thành phần author phần tử thứ tư mảng books Các Kiểu liệu Nâng cao Sắp xếp 19.1.8 Khởi tạo mảng cấu trúc Một mảng kiểu khởi tạo cách liệt kê danh sách giá trị phần tử cặp dấu móc Luật phần tử mảng cấu trúc Vì phần tử mảng cấu trúc, mà giá trị khởi tạo cấu trúc đặt cặp dấu móc, nên ta phải sử dụng cặp dấu móc lồng khởi tạo mảng cấu trúc Xét ví dụ sau: struct unit { char ch; int i; }; struct unit series[3] = { {‘a’, 100}, {‘b’, 200}, {‘c’, 300}, }; Đoạn lệnh khai báo series mảng cấu trúc gồm phần tử, phần tử có kiểu unit Khi khởi tạo, phần tử cấu trúc nên giá trị đặt cặp dấu móc, tồn giá trị phần tử đóng dấu móc biết khởi tạo mảng 10 Lập trình C 19.1.9 Con trỏ cấu trúc C hỗ trợ trỏ cấu trúc, có số khía cạnh đặc biệt trỏ cấu trúc Giống kiểu trỏ khác, trỏ cấu trúc khai báo cách đặt dấu * trước tên biến cấu trúc Ví dụ, câu lệnh sau khai báo trỏ ptr_bk kiểu cấu trúc cat struct cat *ptr_bk; Bây để gán địa biến cấu trúc books kiểu cat cho ptr_bk, câu lệnh sau: ptr_bk = &books; Toán tử -> dùng để truy cập đến phần tử trỏ cấu trúc Toán tử tổ hợp dấu trừ (-) dấu lớn (>) biết đến tốn tử tổ hợp Ví dụ như, trường author truy cập theo cách sau đây: ptr_bk->author books.author (*ptr_bk).author Trong biểu thức cuối cùng, dấu ngoặc bắt buộc tốn tử chấm (.) có độ ưu tiên cao tốn tử vơ hướng (*) Khơng có dấu ngoặc, trình biên dịch sinh lỗi, tốn tử chấm khơng áp dụng biến trỏ ptr_bk Cũng tất khai báo trỏ khác, việc khai báo trỏ cấp phát không gian cho trỏ mà khơng cấp phát cho nơi trỏ đến Vì vậy, trỏ cấu trúc khai báo, không gian cấp phát dành cho địa cấu trúc thân cấu trúc 19.1.10 Truyền trỏ cấu trúc tham số Có thể sử dụng trỏ cấu trúc tham số hàm Tại thời điểm gọi hàm, trỏ cấu trúc địa biến cấu trúc truyền vào hàm Điều cho phép hàm sửa đổi phần tử cấu trúc cách trực tiếp 19.2 Từ khóa typedef Một kiểu liệu định nghĩa cách sử dụng từ khóa typedef Từ khóa khơng tạo kiểu liệu mới, mà định nghĩa tên cho kiểu có Cú pháp tổng quát câu lệnh typedef là: typedef type name; type kiểu liệu cho phép name tên cho kiểu liệu Tên định nghĩa, tên thêm vào, tên thay thế, cho kiểu liệu có Ví dụ như, tên cho float định nghĩa theo cách sau: typedef float deci; Các Kiểu liệu Nâng cao Sắp xếp 11 Câu lệnh báo cho trình biên dịch biết để nhận dạng deci tên khác float Một biến float định nghĩa sử dụng deci sau: deci amt; Ở đây, amt biến số thực kiểu deci, tên khác float Sau định nghĩa, deci sử dụng kiểu liệu câu lệnh typedef để gán tên khác cho kiểu float Chẳng hạn, typedef deci point; Câu lệnh báo cho trình biên dịch biết để nhận dạng point tên khác deci, tên khác float Đặc tính typedef đặc biệt tiện lợi định nghĩa cấu trúc, ta khơng cần nhắc lại nhãn struct sử dụng cấu trúc Khi việc sử dụng cấu trúc thuận tiện Thêm vào đó, tên kiểu cấu trúc người dùng định nghĩa thường gợi nhớ đến mục đích cấu trúc chương trình Một cách tổng quát, cấu trúc người dùng định nghĩa viết sau: typedef struct new_type { type var1; type var2; } Ở đây, new_type kiểu cấu trúc người dùng định nghĩa khơng phải biến cấu trúc Bây giờ, biến kiểu cấu trúc định nghĩa theo kiểu liệu mới.Ví dụ: typedef { int int int } date; struct day; month; year; date due_date; Ở đây, date kiểu liệu due_date biến kiểu date Cần nhớ typedef sử dụng với storage classes 19.3 Sắp xếp mảng (Sorting Arrays) Sắp xếp có nghĩa xếp mảng liệu theo thứ tự xác định tăng dần hay giảm dần Khi mảng xếp, việc tìm kiếm mảng trở nên dễ dàng Có số phương pháp để xếp mảng Chúng ta xem xét hai phương pháp sau đây:  Bubble Sort  Insertion Sort Các phương pháp trình bày sau áp dụng mảng xếp theo thứ tự tăng dần 19.3.1 Bubble Sort 12 Lập trình C Bản thân tên q trình xếp mơ tả cách thức làm việc Ở đây, việc so sánh phần tử phần tử có giá trị nhỏ bọt dần lên đỉnh Quá trình xếp mảng 5-phần tử theo thứ tự tăng dần cho sau:  So sánh giá trị phần tử thứ với giá trị phần tử thứ  Nếu giá trị phần tử thứ nhỏ giá trị phần tử thứ 4, giá trị hai phần tử hoán đổi  Kế tiếp, so sánh giá trị phần tử thứ với giá trị phần tử thứ 3, theo cách tương tự, giá trị hoán đổi giá trị phần tử sau nhỏ giá trị phần tử trước  So sánh giá trị phần tử thứ với giá trị phần tử thứ 2, q trình so sánh hốn đổi tiếp tục  Sau lượt, giá trị nhỏ đặt vào phần tử Một cách nơm na, phát biểu giá trị nhỏ ‘nổi lên’  Trong lượt kế tiếp, việc so sánh lại bắt đầu với phần tử cuối cùng, so sánh dần lên đến phần tử thứ Vì phần tử thứ chứa giá trị nhỏ nhất, không cần thiết phải so sánh Với cách vậy, cuối trình xếp, phần tử nhỏ ‘nổi bọt’ dần lên trên, giá trị lớn ‘chìm xuống’ Hình 19.2 minh họa cho phương pháp buble sort 23 23 23 23 90 90 90 23 9 90 90 25 16 16 16 16 16 25 25 25 25 9 9 23 23 23 16 90 90 16 23 16 16 90 90 25 25 25 25 9 16 16 16 23 23 23 90 25 25 25 90 90 9 16 16 23 23 25 25 90 90 Các Kiểu liệu Nâng cao Sắp xếp 13 16 23 25 90 Figure 19.2: Bubble Sort Chương trình thực xếp mảng theo phương pháp bubble sort: Ví dụ 2: #include void main() { int i, j, temp, arr_num[5] = { 23, 90, 9, 25, 16}; clrscr(); for(i = 3; i >= 0; i ) /* Tracks every pass */ for(j = 4; j >= - i; j ) /* Compares elements */ { if(arr_num[j] < arr_num[j - 1]) { temp = arr_num[j]; arr_num[j] = arr_num[j - 1]; arr_num[j - 1] = temp; } } printf("\nThe sorted array"); for(i = 0; i < 5; i++) printf("\n%d", arr_num[i]); getch(); } 14 Lập trình C 19.3.2 Insertion Sort Trong phương pháp Insertion sort, ta xét phần tử mảng đặt vào vị trí phần tử xếp Khi phần tử cuối đặt vào vị trí nó, mảng xếp Ví dụ, xét mảng có phần tử,  Giá trị phần tử thứ xem thứ tự  So sánh giá trị phần tử thứ hai với phần mảng xếp, mà có phần tử thứ  Nếu giá trị phần tử thứ hai nhỏ hơn, xen trước phần tử thứ Bây giờ, hai phần tử tạo thành phần danh sách xếp phần lại danh sách chưa xếp  Phần tử danh sách chưa xếp, phần tử thứ 3, so sánh với danh sách xếp  Nếu giá trị phần tử thứ nhỏ phần tử thứ 1, giá trị phần tử thứ xen trước phần tử thứ  Ngược lại, giá trị phần tử thứ nhỏ phần tử thứ 2, giá trị phần tử thứ xen trước phần tử thứ Bây giờ, phần xếp mảng gồm phần tử, phần chưa xếp gồm phần tử cịn lại  Q trình so sánh phần tử danh sách chưa xếp với phần tử danh sách xếp tiếp tục phần tử cuối mảng so sánh đặt vào vị trí Ở cuối q trình xếp, phần tử xen vào vị trí Hình 19.3 minh họa cách làm việc insertion sort Các Kiểu liệu Nâng cao Sắp xếp 23 23 90 90 9 25 25 16 16 23 90 23 90 25 25 16 16 9 9 23 23 23 23 90 90 90 25 25 25 25 90 16 16 16 16 9 23 23 16 25 25 23 90 90 25 15 16 16 90 Figure 19.3: Insertion Sort Chương trình thực xếp mảng theo phương pháp insertion sort : Ví dụ 3: #include void main() { int i, j, arr[5] = { 23, 90, 9, 25, 16 }; char flag; clrscr(); /*Loop to compare each element of the unsorted part of the array*/ for(i = 1; i < 5; i++) /*Loop for each element in the sorted part of the array*/ for(j = 0, flag = 'n'; j < i && flag == 'n'; j++) { if(arr[j] > arr[i]) { /*Invoke the function to insert the number*/ insertnum(arr, i, j); flag = 'y'; } } printf("\n\nThe sorted array\n"); for(i = 0; i < 5; i++) printf("%d\t", arr[i]); getch(); } insertnum(int arrnum[], int x, int y) { int temp; /*Store the number to be inserted*/ temp = arrnum[x]; /*Loop to push the sorted part of the array down from the position where the number has to inserted*/ for(; x > y; x ) arrnum[x] = arrnum[x - 1]; /*Insert the number*/ arrnum[x] = temp; 16 Lập trình C } Các Kiểu liệu Nâng cao Sắp xếp 17 Tóm tắt  Một cấu trúc tập biến có kiểu liệu khác nhóm lại với tên  Việc định nghĩa cấu trúc tạo kiểu liệu cho phép người dùng sử dụng chúng để khai báo biến kiểu cấu trúc  Các phần tử độc lập cấu trúc truy cập cách sử dụng tốn tử chấm (.), hay cịn gọi toán tử thành viên  Các giá trị biến cấu trúc gán cho biến khác có kiểu cách sử dụng câu lệnh gán đơn giản  Có thể có cấu trúc nằm cấu trúc khác Tuy nhiên cấu trúc khơng thể lồng  Một biến cấu trúc truyền vào hàm tham số  Cách sử dụng thông dụng cấu trúc hình thức mảng cấu trúc  Toán tử -> sử dụng để truy cập vào phần tử cấu trúc thơng qua trỏ trỏ đến cấu trúc  Một kiểu liệu định nghĩa từ khóa typedef  Hai phương pháp dùng để xếp mảng bubble sort insertion sort  Trong bubble sort, giá trị phần tử so sánh với giá trị phần tử Trong phương pháp này, phần tử nhỏ lên dần, cuối mảng xếp  Trong insertion sort, ta xét phần tử mảng chèn vào vị trí phần tử xếp 18 Lập trình C Kiểm tra tiến độ học tập Một nhóm số mẫu liệu lại với nhau, mẫu liệu khơng thiết phải có kiểu Các phần tử cấu trúc truy cập đến thông qua việc sử dụng _ Các giá trị biến cấu trúc gán cho biến khác có kiểu cách sử dụng câu lệnh gán đơn giản (Đúng / Sai) Khơng thể có cấu trúc nằm cấu trúc khác (Đúng / Sai) Một kiểu liệu định nghĩa sử dụng từ khóa _ Trong bubble sort, phần tử so sánh Trong insertion sort, phần tử chưa xếp phải đặt vào vị trí xếp đó, giá trị trao đổi với (Đúng / Sai) Các Kiểu liệu Nâng cao Sắp xếp 19 Bài tập tự làm Viết chương trình C để cài đặt hệ thống quản lý kho Hãy lưu trữ mã số, tên hàng, giá số lượng có hàng cấu trúc Nhập chi tiết hàng vào mảng cấu trúc hiển thị tên hàng tổng giá trị Ở cuối chương trình , hiển thị tổng giá trị kho hàng Viết chương trình C để lưu trữ tên điểm số sinh viên mảng cấu trúc Hãy xếp mảng cấu trúc theo thứ tự điểm số giảm dần Hiển thị điểm số cao 20 Lập trình C ... biến c? ??u tr? ?c gán cho biến kh? ?c có kiểu c? ?ch sử dụng c? ?u lệnh gán đơn giản  C? ? thể c? ? c? ??u tr? ?c nằm c? ??u tr? ?c kh? ?c Tuy nhiên c? ??u tr? ?c lồng  Một biến c? ??u tr? ?c truyền vào hàm tham số  C? ?ch sử... main() { struct strucintcal xyz; /* Declares a variable */ void intcal(struct strucintcal); C? ?c Kiểu liệu Nâng cao Sắp xếp clrscr(); /* Accepts data into the structure */ printf(" Enter Customer... phải c? ? kiểu C? ?c phần tử c? ??u tr? ?c truy c? ??p đến thông qua vi? ?c sử dụng _ C? ?c giá trị biến c? ??u tr? ?c gán cho biến kh? ?c có kiểu c? ?ch sử dụng c? ?u lệnh gán đơn giản (Đúng / Sai) Không thể c? ? c? ??u

Ngày đăng: 11/05/2021, 04:49

Tài liệu cùng người dùng

Tài liệu liên quan