1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Module E – Thư viện chuẩn pptx

22 380 1
Tài liệu đã được kiểm tra trùng lặ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

Thông tin cơ bản

Tiêu đề Module E – Thư viện chuẩn
Trường học Unknown University
Chuyên ngành Computer Science
Thể loại Tài liệu
Năm xuất bản 2023
Thành phố Hanoi
Định dạng
Số trang 22
Dung lượng 217,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chúng ta sử dụng timeNULL để phát ra số khởi đầu dựa trên thời gian của mỗi lần chạy Viết hàm có khai báo như sau double getDoubledouble min, double max;... Hàm này cho phép nhập số dou

Trang 1

5 Module E – Thư viện chuẩn 3

5.1 Ví dụ 3

5.1.1 Ví dụ 1 - Nhập 2 số nguyên và float 3

5.1.2 Ví dụ 2 - Nhập 2 số nguyên và ký tự 3

5.1.3 Ví dụ 3 – Kiểm tra dữ liệu nhập vào 4

5.1.5 Ví dụ 5 - Tạo số ngẫu nhiên trong miền giới hạn 6

5.2 Bài tập thực hành 7

5.2.1 Bài tập thực hành 1 7

5.2.2 Bài tập thực hành 2 7

5.2.3 Bài tập thực hành 3 7

5.2.4 Bài tập thực hành 4 8

6 Module E - Mảng 8 6.1 Ví dụ 8

6.1.1 Ví dụ 1 – Khai báo mảng, thiết lập giá trị ban đầu 8

6.1.2 Ví dụ 2 - Truyền tham số mảng cho hàm 9

6.1.3 Ví dụ 3 - Mảng song song và nhập thông tin một bảng 10

6.1.4 Ví dụ 4 – Tìm kiếm trong mảng 11

6.1.5 Ví dụ 5 – Mặt nạ để Tính tổng con 11

6.1.6 Ví dụ 6 - Sắp xếp mảng 13

6.2 Bài tập thực hành 13

6.2.1 Bài tập thực hành 1 14

6.2.2 Bài tập thực hành 2 14

6.2.3 Bài tập thực hành 3 14

6.2.3 Bài tập thực hành 3 15

6.2.4 Bài tập thực hành 4 15

7 Module G – Xâu 15 7.1 Ví dụ 15

7.1.1 Ví dụ 1 – Khai báo xâu, đặt giá trị ban đầu và in xâu 15

7.1.2 Ví dụ 2 - Nhập xâu 16

7.1.3 Ví dụ 3 – Hàm xâu 16

7.1.4 Ví dụ 4 – Mảng xâu, khai báo và đặt giá trị ban đầu 17

7.1.5 Ví dụ 5 – Mảng xâu, nhập và xắp xếp danh sách tên 17

7.2 Bài tập thực hành 18

7.2.1.Bài tập thực hành 1 18

7.2.2 Bài tập thực hành 2 19

7.2.3 Bài tập thực hành 3 19

8 Module F – File 19 8.1 Ví dụ 19

8.1.1 Ví dụ 1 – Ghi dữ liệu lên tệp 19

8.1.1 Ví dụ 2 – Đọc dữ liệu từ tệp 20

8.2 Bài tập thực hành 21

8.2.1 Bài tập thực hành 1 22

8.2.2 Bài tập thực hành 2 22

Trang 3

5 Module E – Thư viện chuẩn

5.1 Ví dụ

5.1.1 Ví dụ 1 - Nhập 2 số nguyên và float

int items;

float price;

printf("Enter items, price : ");

scanf("%d%f", &items, &price);

Đầu ra của chương trình

Enter items, price : 4 39.99

Hàm scanf coi ký tự trắng giữa các giá trị nhập vào như là dấu phân cách, không cần đặt

dấu cách giữa các đặc tả chuyển đổi Hàm scanf tự động loại bỏ các ký tự trắng khi

scanf("%c", &tax); /* ERROR reads \n */

printf("%d items (tax status %c)\n", items, tax);

return 0;

}

Chỉ lấy dữ liệu số nguyên theo đặc tả chuyển đổi %d

và bỏ lại ký tự xuống dòng \n trong bộ đệm

Trang 4

Number of items : 25

Tax status : 25 items (taxable status)

Nguyên nhân để không nhập được ký tự sau khi nhập số là ký tự xống dòng còn trong bộ đệm, mà %c thì không tự động bỏ đi các ký tự trắng như %d

Có một số cách để xử lý các ký tự xuống dòng \n còn bị bỏ lại trong bộ đệm như sau

scanf(" %c", &tax); /* skip all whitespace first */

scanf("%d%*c", &items); /* swallow newline */

scanf("%c", &tax);

scanf("%d", &items);

clear(); /* clear the buffer */

scanf("%c", &tax);

5.1.3 Ví dụ 3 – Kiểm tra dữ liệu nhập vào

/* Kiểm tra dữ liệu nhập vào

input = getInt(MIN, MAX);

printf("\nProgram accepted %d\n", input);

return 0;

}

Trang 5

/* getInt nhận dữ liệu nhập vào trong khoảng từ

* min đến max,

* trả lại giá trị số nguyên đã được nhập

*/

int getInt(int min, int max) {

int value, keeptrying = 1, rc;

char after;

do

{

printf("Enter a number\n in the range [%d,%d]:",min, max);

rc = scanf("%d%c", &value, &after);

Đầu ra của chương trình như sau

Enter a whole number

in the range [3,15] : we34 // rc = 0

**No input accepted!**

Enter a whole number

in the range [3,15] : 34.4 // after != ‘n’

**Trailing characters!**

Enter a whole number

in the range [3,15] : 345 // 345 > MAX

Trang 6

* ints * 00000000011 12345678901 - 4321|< %d

4321|< %10d 0000004321|< %010d

4321 |< %-10d

* floats * 00000000011 12345678901 - 4321.987655|< %f

* doubles * 00000000011 12345678901 - 4321.987655|< %lf

4321.988|< %10.3lf 004321.988|< %010.3lf 4321.988 |< %-10.3lf

* chars * 00000000011 12345678901 - d|< %c

100|< %d 144|< %o 64|<

5.1.5 Ví dụ 5 - Tạo số ngẫu nhiên trong miền giới hạn

Trang 7

/* tạo ra 10 số ngẫu nhiên trong khoảng từ 6 đến 10

Hàm srand đặt giá trị khởi đầu cho bộ phát số ngẫu nhiên Chúng ta gọi hàm srand

trước khi gọi hàm rand , thường tại bắt đầu của chương trình Chúng ta sử dụng

time(NULL) để phát ra số khởi đầu dựa trên thời gian của mỗi lần chạy

Viết hàm có khai báo như sau

double getDouble(double min, double max);

Trang 8

Hàm này cho phép nhập số double trong khoảng từ min đến max, nếu không thì ra thông báo buộc người dùng nhập lại

5.2.4 Bài tập thực hành 4

Viết hàm có khai báo như sau

int getEvenInteger(int min, int max)

Hàm này cho phép nhập một số chẵn trong khoảng min va max Nếu không thì ra thông báo bắt người dùng nhập lại.

Sau đó viết chương trình để thử hàm này như sau

Trang 9

void binary(int, int []);

void display(int digit[]);

#define BITS 16

int main ( ) {

int decimal, digit[BITS];

printf("Enter a positive integer value : ");

/* binary đặt biểu diễn nhị phân của

* decimal trong mảng digit[BITS] với phần tử

* đầu tiên chứa bit có nghĩa cao nhất

Trang 10

for (i = 0; i < BITS; i++) {

Đầu ra cua chương trình như sau

Enter a positive integer value : 92

} while ( keepgoing == 1 && nItems < MAX_ITEMS );

printf("SKU Unit Price\n");

for (i = 0; i < nItems; i++)

Trang 11

Lưu ý là hàng 1 lưu tương ứng tại chỉ số 0 của mảng là sku[0] và unitprice[0]

Chương trình kết thúc nhập khi đã đủ MAX_ITEMS hàng hoặc khi người dùng gõ mã 0

int i, code, sku[MAX_ITEMS] = SKU;

double unitPrice[MAX_ITEMS] = PRICE;

printf("SKU : ");

scanf("%d", &code);

i = find(code, sku, MAX_ITEMS);

if (i != -1)

printf("The unit price of item %d "

"is $%.2lf\n", sku[i], unitPrice[i]);

else

printf("%06d not found\n", code);

return 0;

}

/* find trả lại chỉ số đầu tiên mà tại đó

* search == key[index] trong mảng key[size],

* hoặc -1 nếu không tìm thấy

Trang 12

*/

#include <stdio.h>

#define MAX_SOLD 200

int main ( ) {

int sku[MAX_SOLD], code;

int units[MAX_SOLD], accountedFor[MAX_SOLD] ;

int i, j, nItems, total, keepreading;

printf("Enter skus and units sold\n");

printf("SKU Units Sold\n");

for ( i = 0; i < nItems; i++ ) {

/* Chỉ xem xét các phần tử chưa được tính tổng */

Trang 13

Chương trình này cho phép nhập một bảng gồm hai cột là mã hàng và số lượng hàng bán được (kết thúc nhập khi đã đủ MAX_SOLD hàng hoặc người dùng nhập mã 0) Cùng một mặt hàng có thể xuất hiện ở nhiều hàng trong bảng Rồi chương trính dùng kỹ thuật mặt nạ

để tính tổng con, số lượng các phần tử bán được cho cùng một loại mặt hàng

int i, sku[MAX_ITEMS] = SKU;

bubbleSort( sku, MAX_ITEMS );

for (i = 0; i < MAX_ITEMS; i++ )

Trang 14

6.2.1 Bài tập thực hành 1

Viết hàm có khai báo như sau

void histogram(int array[], int count);

Hàm này được truyền một mảng các số và số các phần tử của mảng, rồi hiện biểu đồ của mảng này sử dụng các dấu sao Ví dụ, nếu một mảng có tên x được chứa sáu giá trị

{ 5, 1, 2, 4, 3, 4 }, thì

histogram(x, 6) sẽ hiện ra:

*****

*

**

****

***

****

(Nếu giá trị là 0 hay nhỏ hơn, in ra một dòng trống cho giá trị này) 6.2.2 Bài tập thực hành 2 Viết một hàm có khai báo như sau

void firstword(char word[], char sentence[])

Hàm này copy từ đầu tiên của một xâu kết thức bởi null ”sentence” vào xâu kết thúc null "word" Nếu không có từ nào trong "sentence" (bởi vì nó là trống hoặc tất cả là khoảng trắng) thì "word" sẽ được đặt là trống Giả thiết rằng một từ là một dãy lên tiếp các ký tự không trống, được phân tách với từ khác bởi các ký tự trắng

Ví dụ,

firstword(x, "This is a sentence");

Sẽ copy "This" vào mảng x, và

firstword(x, " and$%^# so is this");

Sẽ copy "and$%^#" vào x.

(Hint: find the position of the first non-blank, then copy things over until you hit a blank

or the end of the string).

6.2.3 Bài tập thực hành 3

Viết một hàm có khai báo như sau

int input_item(int code[], double unit_cost[], int n)

Trang 15

Nhập thông tin 1 bảng chứa danh mục các hàng hoá gồm mã hàng (mảng code[]), đơn giá (unit_cost[]), và hàng cần nhập vào, trả lại lai số hàng đã nhập

Giả thiết:

- Kết thúc nhập khi mã hàng là 0 hoặc số hàng đã đủ 20

- Mã hàng là duy nhất, không trùng nhau Nếu trùng, ra thông báo yêu cầu nhập lại

6.2.3 Bài tập thực hành 3

Viết một hàm có khai báo như sau

void display_item(int code[], double unit_cost[], int n);

Hàm hiên danh mục hàng hoá theo thứ tự đơn giá giảm dần

6.2.4 Bài tập thực hành 4

Viết một hàm có khai báo như sau

void display_sale(int code[], int units_purchased[], int n);

Hàm nhận thông tin danh sách n các giao dịch bán hàng trong hai mảng song song, mã hàng trong mảng code[] và số hàng bán được trong mảng units_purchased[] (Một mặt hàng

có thể xuất hiện trên nhiều hàng)

Hàm hiện bảng tổng kết số hàng bán đựoc theo mã hàng

char name[31] = "My name is Arnold";

/* char name[31] = {'M','y',' ','n','a','m','e','

','i','s',' ', 'A','r','n','o','l','d','\0'}; */

print( name );

Trang 17

Hàm strlen trả lại số ký tự của xâu, không tính ký tự null ‘\0’

7.1.4 Ví dụ 4 – Mảng xâu, khai báo và đặt giá trị ban đầu

// Nếu xâu name[i] trùng với xâu “^” thì keepgoing = 0

Mảng chứa 5 tên, mỗi tên không qua 30 ký tự

Trang 18

Viết hàm có khai báo như sau

int input_names(int stdID[], char name[][31], double GPA[], int classID[], int n)

Hàm này nhập danh sách sinh viên vào bảng danh sách sinh viên bao gồm mã sinh viên

stdID, tên sinh viên name, điểm trung bình GPA, mã lớp classID n là tham số đầu vào chứa số sinh viên đã có trong bảng Hàm trả lại số sinh viên đã được nhập

Trong đó:

Mã SV là số nguyên từ 1 đến 99999 và là duy nhất

Tên SV không quá 30 ký tự

Điểm trung bình từ 0.0 đến 10.0

Trang 19

Hàm này sắp xếp danh sách sinh viên theo điểm trung bình GPA giảm, tức là sinh viên nào

có điểm GPA cao sẽ ở đầu danh sách, điểm thấp sẽ ở cuối

8.1.1 Ví dụ 1 – Ghi dữ liệu lên tệp

/* Save to the file

Trang 20

#define FILE_NAME "list_student.dat"

// Ghi lên tệp, mỗi hàng là thông tin của một sinh viên

for(i = 0; i < MAX_STUDENTS; i++)

fprintf(fp, “%d;%s;%lf;%d\n”, stdID[i], name[i], GPA[i], classID[i]);

fclose(fp);

}

Với chương trình trên thì file có tên là list_student.dat sẽ có nội dung như sau

100;Nguyen Van Anh;6.500000;1

101;Nguyen Van Binh;7.600000;1

200;Tran Thi Tuyet;8.9000000;2

201;Do Van Binh;2.500000;2

300;Ho Lan Huong;4.600000;3

File này gồm MAX_STUDENTS hàng, mỗi hàng ghi lai thông tin của một sinh viên, bao gồm

mã sinh viên stdID, tên sinh viênname, điểm tring bình GPA, và số hiệu lớp classID, mỗi trường được phân cách bằng một dấu; Chú ý là điểm ghi theo khuôn dạng %.1lf, tức chỉ lưu một chữ số sau dấu chấm thập phân

Chú ý: Nếu bạn muốn mở tệp để ghi vào cuối tệp thì phải mở kiểu “a”

Trang 21

while ( fscanf(fp, "%d;%[^;];%lf;%d%*c", &stdID[i],

name[i], &GPA[i], &classID[i]) == 4 ) i++;

Chương trình này đọc tệp có khuôn dạng như ở Ví dụ 1 ở 8.1.1 vào các mảng và hiện

danh sách này như sau

List of students

stdID Name GPA ClassID

-

-00100 Nguyen Van Anh 6.5 01

00101 Nguyen Van Binh 7.6 01

00200 Tran Thi Tuyet 8.9 02

mà không ghi vào đâu cả

Trang 22

8.2.1 Bài tập thực hành 1

Viết hàm có khai báo như sau

int save_file(char file_name[], int stdID[], char name[][31 int

Cho hai têp students.dat marks.dat

Khuôn dạng của tệp students.dat như sau

100;Nguyen Van Binh;1

101;Nguyen Tien Manh;1

200;Nguyen Van Minh;2

Mỗi sinh viên được luu trên 1 hàng, gồm mã, tên, số hiệu lớp, các trường cách nhau bởi dấu ;

Khuôn dạng của tệp marks.dat như sau

00100 Nguyen Van Binh 8.3

00101 Nguyen Tien Manh …

….

Ngày đăng: 13/12/2013, 12:15

HÌNH ẢNH LIÊN QUAN

Viết chương trình cho phép nhập số nhỏ nhất và số lớn nhất, rồi in ra một bảng gồm 4 cột các số ngẫu nhiên nằm trong giới hạn đó - Tài liệu Module E – Thư viện chuẩn pptx
i ết chương trình cho phép nhập số nhỏ nhất và số lớn nhất, rồi in ra một bảng gồm 4 cột các số ngẫu nhiên nằm trong giới hạn đó (Trang 7)
Chương trình này cho phép nhập một bảng gồm hai cột là mã hàng và số lượng hàng bán được (kết thúc nhập khi đã đủ MAX_SOLD hàng hoặc người dùng nhập mã 0) - Tài liệu Module E – Thư viện chuẩn pptx
h ương trình này cho phép nhập một bảng gồm hai cột là mã hàng và số lượng hàng bán được (kết thúc nhập khi đã đủ MAX_SOLD hàng hoặc người dùng nhập mã 0) (Trang 12)
7.2. Bài tập thực hành - Tài liệu Module E – Thư viện chuẩn pptx
7.2. Bài tập thực hành (Trang 17)
Hàm này nhập danh sách sinh viên vào bảng danh sách sinh viên bao gồm mã sinh viên - Tài liệu Module E – Thư viện chuẩn pptx
m này nhập danh sách sinh viên vào bảng danh sách sinh viên bao gồm mã sinh viên (Trang 17)
Hàm này hiện bảng tổng kết tổng số sinh viên, số sinh viên đỗ (có điếm GPA &gt;= 5) và số phần trăm đỗ theo từng lớp, ví dụ như sau - Tài liệu Module E – Thư viện chuẩn pptx
m này hiện bảng tổng kết tổng số sinh viên, số sinh viên đỗ (có điếm GPA &gt;= 5) và số phần trăm đỗ theo từng lớp, ví dụ như sau (Trang 18)

TỪ KHÓA LIÊN QUAN

w