Nhập dữ liệu cho xâu
Cách 1: khởi tạo giá trị mặc định:
char *str=”hello world”;
Cách 2: Dùng hàm scanf:
char *s = (char*) malloc (9*sizeof (char));
for( i =0; i< 9; i++)
scanf(“%c”, s+i);
Lưu ý: cơ chế làm việc của vùng nhớ đệm→có thể nhận được kết quả không theo mong muốn
→cần làm sạch vùng đệm
Có thể bạn quan tâm!
- Cơ sở lập trình - Trường ĐH Thương mại - 6
- Cơ sở lập trình - Trường ĐH Thương mại - 7
- Cơ sở lập trình - Trường ĐH Thương mại - 8
- Cơ sở lập trình - Trường ĐH Thương mại - 10
- Cơ sở lập trình - Trường ĐH Thương mại - 11
- Cơ sở lập trình - Trường ĐH Thương mại - 12
Xem toàn bộ 113 trang tài liệu này.
7/2020 Cơ sở lập trình 129
char *s = (char*) malloc (9*sizeof (char)); for( i =0; i< 9; i++)
{
fflush(stdin) ;
scanf(“%c”, s+i);
}
Nhận xét
Dài dòng và phức tạp →hạn chế sử dụng hàm scanf
để nhập dữ liệu cho xâu
7/2020 Cơ sở lập trình 130
Cách 3: dùng hàm gets
Cú pháp
char * gets(char *str);
Hoạt động
cho phép nhập vào một dãy kí tự cho đến khi gặp kí hiệu ‘n’(Enter). Kí tự ‘n’ sẽ không được đặt vào chuỗi str, trình biên dịch sẽ thêm vào cuối str là kí tự ‘ ’
Lưu ý: sau khi nhập xâu sẽ để lại kí tự ‘n’ trên dòng nhập
→làm sạch vùng đệm trước khi gọi hàm: fflush(stdin);
7/2020 Cơ sở lập trình 131
Xuất xâu ra màn hình
Dùng hàm printf hoặc puts
int puts(const char *);
Sự khác nhau: puts in xong thì con trỏ tự động nhảy
xuống dòng
Ví dụ
char hello[] = "Hello World"; printf("nChuoi in ra = %s", hello);
puts(hello);
7/2020 Cơ sở lập trình 132
Ví dụ: Viết chương trình tìm độ dài của xâu.
7/2020 Cơ sở lập trình 133
Một số hàm xử lý xâu
strlen
strchr
strstr
toupper
tolower
Yêu cầu: viết chương trình để thể hiện các
hàm trên
7/2020 Cơ sở lập trình 134
4.1 Hàm
4.2 Truyền tham số cho hàm
7/2020 Cơ sở lập trình 135
4.1.1 Giới thiệu
4.1.2 Cấu trúc tổng quát của hàm
4.1.3 Nguyên tắc hoạt động của hàm
4.1.4 Sử dụng giá trị trả về của hàm
7/2020 Cơ sở lập trình 136
Mục đích:Phân rã bài toán thành các bài toán con →Chương trình được tổ chức thành các chương trình con.
Ưu điểm
Có thể sử dụng lại hàm, tiết kiệm dòng lệnh
Chương trình logic, gọn gàng
Linh động sử dụng hàm qua lời gọi hàm
Phân chia công việc và ghép kết quả lại →tăng tốc giải bài toán.
7/2020 Cơ sở lập trình 137
Khái niệm: Hàm là một đơn vị chương trình độc lập dùng để thực hiện một phần việc nào đó
Ví dụ: hàm để nhập số liệu, in kết quả hay
thực hiện một số tính toán.
7/2020 Cơ sở lập trình 138
Đặc điểm của hàm trong C
Cho phép một chương trình có thể có nhiều hàm.
Không cho phép trong một hàm định nghĩa một hàm khác nhưng cho phép trong một hàm có thể có nhiều lời gọi hàm đến các hàm khác đã được định nghĩa.
Các yếu tố của hàm
Khai báo nguyên mẫu hàm (prototype)
Định nghĩa hàm (declaration)
Lời gọi hàm (call).
7/2020 Cơ sở lập trình 139
Khai báo nguyên mẫu hàm(prototype)
Ý nghĩa: Khai báo sự tồn tại của hàm
Cú pháp:
<type> <name>([<type1> [p1], <type2> [p2],…]);
Trong đó:
type: kiểu giá trị trả về của hàm
name: tên của hàm
type1, type2, …: là các kiểu của các đối số/tham số.
p1,p2, … là tên các đối số
7/2020 Cơ sở lập trình 140
Ví dụ
Ví dụ1: Xây dựng hàm tính n!
long gthua(int n);
Ví dụ 2: Xây dựng hàm tính tổ hợp chập k của n
dựa vào công thức tính
int tohop(int n, int k);
7/2020 Cơ sở lập trình 141
Vị trí nguyên mẫu hàm: được đặt ở đầu
chương trình, sau chỉ dẫn tiền xử lý
Lưu ý: khi khai báo nguyên mẫu hàm, trình biên dịch chỉ quan tâm đến kiểu hàm, tên hàm, kiểu và thứ tự kiểu của đối số →không cần đặt tên của các đối số.
7/2020 Cơ sở lập trình 142
Định nghĩa hàm
Ý nghĩa: Khai báo các thao tác theo trình tự
cần thực hiện của hàm
Cú pháp:
<type> <name>([<type1> [p1], <type2> [p2],…])
{
// thân hàm return (giá trị);
}
7/2020 Cơ sở lập trình 143
Vị trí định nghĩa hàm: sau thân chương trình chính
Lưu ý:
Phải viết đúng kiểu, đúng tên, đúng thứ tự và tên các kiểu các đối số ở trong cặp ( ) tương ứng với trong khai báo nguyên mẫu.
Bắt buộc phải có tên đối số trong danh sách các đối số của hàm.
Ngôn ngữ C cho phép một cách viết khác gộp chung khai báo nguyên mẫu hàm và định nghĩa hàm
7/2020 Cơ sở lập trình 144