Khoa công nghệ thông tin bài giảng LẬp trình cơ BẢn biên soạn


V. Tóm tắt nội dung bài học



tải về 1.56 Mb.
trang19/29
Chuyển đổi dữ liệu30.08.2016
Kích1.56 Mb.
#28834
1   ...   15   16   17   18   19   20   21   22   ...   29

V. Tóm tắt nội dung bài học


I. Tổ chức chương trình

1. Ví dụ

2. Cấu trúc chương trình

3. Hàm xây dựng sẵn

II. Hàm do người dùng định nghĩa

1. Khai báo và định nghĩa Hàm

2. Lời gọi Hàm

3. Hàm với đối mặc định

4. Khai báo hàm trùng tên

5. Truyền tham số

6. Hàm và mảng

III. Con trỏ hàm

1. Khai báo

2. Sử dụng con trỏ hàm

3. Mảng con trỏ hàm

IV. Đệ qui

1. Khái niệm

2. Lớp các bài toán giải được bằng đệ qui

3. Các ví dụ

V. Tóm tắt nội dung bài học

VI. Bài tập

VI. Bài tập


Xem Bài 11 - Bài tập thực hành HÀM

Bài 9 - Bài thực hành: HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH

I. Thực hiện các ví dụ sau

1. Xác định vị trí tương đối của 1 điểm với tam giác ABC


Yêu cầu: Viết chương trình cho phép nhập vào tọa độ trên mặt phẳng XOY ba đỉnh của tam giác ABC, và tọa độ của điểm M; đưa ra kết luận về vị trí tương đối của M so với ABC : M nằm trong, trên cạnh hay nằm ngoài ABC.

Soạn thảo văn bản chương trình như sau

#include

#include

#include

double KC(int x1, int y1, int x2, int y2);

double DT(double a, double b, double c);

int main()

{

int xa,ya, xb,yb, xc,yc, xm,ym;



double ab, bc, ac, am, bm, cm;

double abc, amb, bmc, amc;

printf("Nhap toa do diem A(x,y):");

scanf("%d%d", &xa, &ya);

printf("Nhap toa do diem B(x,y):");

scanf("%d%d", &xb, &yb);

printf("Nhap toa do diem C(x,y):");

scanf("%d%d", &xc, &yc);

printf("Nhap toa do diem M(x,y):");

scanf("%d%d", &xm, &ym);

ab=KC(xa,ya,xb,yb);

bc=KC(xb,yb,xc,yc);

ac=KC(xa,ya,xc,yc);

am=KC(xa,ya,xm,ym);

bm=KC(xb,yb,xm,ym);

cm=KC(xc,yc,xm,ym);

abc=DT(ab, bc, ac);

amb=DT(am, bm, ab);

bmc=DT(bm, cm, bc);

amc=DT(am, cm, ac);

if ((amb==0)||(bmc==0)||(amc==0))

{

printf("M nam tren canh cua ABC");



}

else


{

if ((amb+bmc+amc)==abc)

{

printf("M nam trong tam giac ABC");



}

else


{

printf("M nam ngoai tam giac ABC");

}

}

getch();



return 0;

}

double KC(int x1, int y1, int x2, int y2)



{

double kq;

kq=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

return kq;

}

double DT(double a, double b, double c)



{

double kq, p;

p=(double)(a+b+c)/2;

kq=sqrt(p*(p-a)*(p-b)*(p-c));

return kq;

}

Thử nghiệm 1: Nhấn F9 để chạy chương trình, sau đó nhập vào tọa độ cho các đỉnh của tam giác ABC lần lượt là A(x,y): 0,0 ; B(x,y): 10,0; C(x,y): 0, 10; và tọa độ của điểm M là M(x,y): 1,1. Nhận xét về kết quả đạt được.



Thử nghiệm 2: Với dữ liệu vào A(x,y): 0,0 ; B(x,y): 10,0; C(x,y): 0, 10; M(x,y): 1,1 sử dụng chức năng debug của công cụ lập trình (Dev-C++) và ghi lại giá trị của các biến abc, amb, bmc và amc. Xem lại kết luận của chương trình và đưa ra giải pháp để khắc phục.

Thử nghiệm 3: Xây dựng hàm tính bình phương của 1 số và sử dụng vào chương trình thay cho hàm sqrt() sẵn có.

2. Viết hàm đếm số từ của một xâu ký tự


Yêu cầu: Viết chương trình cho phép nhập vào một xâu ký tự, đếm số từ có trong xâu. Từ được hiểu là một đoạn ký tự nằm giữa hai dấu trống và khác trống.

Soạn thảo văn bản chương trình như sau

#include

#include

#include

#include

int wordCount(char *s);

int main()

{

char s[100];



printf("Nhap vao mot xau:");

gets(s);


printf("So tu: %d", wordCount(s));

getch();


return 0;

}

int wordCount(char *s)



{

int kq,i;

kq=0;

i=0;


while (s[i]!='\0')

{

if (s[i]==32)



{

kq=kq+1;

}

i++;


}

kq++;


return kq;

}

Thử nghiệm 1: Nhấn F9 để chạy chương trình, nhập vào xâu ký tự “ky thuat lap trinh” nhận xét về kết quả đạt được.



Thử nghiệm 2: Nhập vào xâu ký tự “ky thuat lap trinh ” (có một ký tự trống ở cuối) nhận xét về kết quả đạt được.

Thử nghiệm 3: Nhập vào xâu ký tự “ ky thuat lap trinh ” (có 1 ký tự trống ở đầu, 3 ký tự trống giữa ky và thuat, 1 ký tự trống ở cuối) nhận xét về kết quả đạt được.

II. Bài tập tự làm


  1. Viết chương trình cho phép nhập vào tọa độ trên mặt phẳng XOY ba đỉnh của tam giác ABC, và tọa độ của điểm M; đưa ra kết luận về vị trí tương đối của M so với ABC : M nằm trong, trên cạnh hay nằm ngoài ABC.

  2. Cho tam giác ABC và một điểm M không nằm trên cạnh của tam giác. Hãy viết chương trình tính số lớn nhất R sao cho vòng tròn tâm M, bán kính R, không cắt bất cứ cạnh nào và không chứa tam giác.

  3. Viết hàm chuẩn hóa chuỗi họ tên người Việt theo yêu cầu sau: Không có ký tự trống phía đầu và cuối, giữa 2 từ có một ký tự trống, ký tự đầu tiên của mỗi từ được viết HOA và ký tự khác được viết thường.

  4. Giả sử hovaten là xâu họ tên người việt, viết các hàm TEN cho phép lấy ra phần tên, hàm HODEM cho phép lấy ra phần họ và đệm của hovaten.

  5. Viết hàm đếm số từ của một xâu ký tự. Mỗi từ được hiểu là đoạn ký tự giữa hai dấu trống và không phải là khoảng trống.

  6. Viết hàm chuyển số nguyên thành xâu ký tự biểu diễn cách đọc số đó. Ví dụ nhập vào số: 235 -> in ra “Hai tram ba muoi lam”, 807 -> in ra “Tam tram linh bay”, 55 -> in ra “Nam muoi lam”.

  7. Xâu ký tự biểu diễn ngày tháng là xâu dạng “DD/MM/YYY”, trong đó DD là hai chữ số biểu diễn ngày, MM là hai chữ số biểu diễn tháng và YYYY là bốn chữ số biểu diễn năm. Viết hàm kiểm tra một xâu ký tự nhập vào có phải là xâu biểu diễn ngày tháng hay không? Nếu là xâu biểu diễn ngày tháng thì ngày tháng đó có hợp lệ hay không. Ví dụ xâu ‘30/02/2010’ là xâu biểu diễn ngày tháng nhưng ngày tháng đó là không hợp lệ (vì không có ngày 30 tháng 2).

  8. Cho hai xâu biểu diễn ngày tháng sd1 và sd2, viết hàm tính số ngày tính từ sd1 đến sd2 nếu sd1 và sd2 là hai xâu biểu diễn ngày tháng hợp lệ (tham khảo bài 6).

  9. Cho sd1 là xâu biểu diễn ngày tháng, n là một số nguyên. Viết hàm NgaySauN(sd1,n) cho phép trả về xâu ký tự dạng ngày tháng là ngày thứ n sau ngày sd1, ví dụ sd1 = “27/01/2010” và n= 15 thì hàm trả về “11/02/2010”. Viết hàm NgayTruocN(sd1,n) cho phép trả về xâu ký tự dạng ngày tháng là ngày thứ n trước ngày sd1, ví dụ sd1 = “27/01/2010” và n= 46 thì hàm trả về “12/12/2009”.

  10. Viết hàm cho phép đổi năm dương lịch thành năm âm lịch. Ví dụ nếu năm dương lịch là 2010 thì năm âm lịch là “Canh Dần”.

  11. Ta gọi tổng triệt để các chữ số của số tự nhiên n là tổng các chữ số của n nếu tổng này chỉ có một chữ số; trong trường hợp ngược lại tổng triệt để là kết quả của việc cộng dồn liên tiếp cho đến khi chỉ còn một chữ số. Ví dụ số n=1186 có tổng các chữ số là 16, số này có hai chữ số và tổng các chữ số của nó là 7. Vậy tổng triệt để của n=1186 là 7. Nhập từ bàn phím một số k, 1  k  9, viết ra màn hình tất cả các số có 4 chữ số mà tổng triệt để của nó bằng k (không kể các hoán vị).

  12. Một sân hình chữ nhật được chia thành mn ô vuông có kích thước bằng nhau, với m n 50. Mỗi ô có thể được chôn một quả mìn. Nếu nổ một quả mìn ở ô (i,j), tức là ở hàng i và cột j, thì nó sẽ gây nổ cho các ô xung quanh (i+1,j), (i-1,j), (i,j+1), (i,j-1) nếu các ô này có mìn. Hãy nhập vào vị trí các ô có mìn và vị trí ô đầu tiên bị nổ và in ra tối đa các ô bị nổ trên sân chữ nhật.

  13. Cho một dãy có n+1 ô được đánh số từ 0 đến n. Một quân cờ đứng ở ô số 0. Mỗi một nước đi quân cờ được đi lên phía trước không quá k ô. Một cách đi của quân cờ là xuất phát từ ô số 0 quân cờ phải đi đến ô thứ n. Với hai số nguyên dương n và k, hãy tính số cách đi của quân cờ. Ví dụ, với n=3 và k=2 sẽ có 3 cách đi quân cờ với các nước 1+1+1, 1+2 và 2+1. (Bài 1, Đề thi Olympic Tin học Sinh viên Đại học Tổng hợp Hà nội mở rộng, Khối không chuyên, Hà nội 4-1996).

  14. Viết ra tất cả các hoán vị của dãy Xn={1,2,...,n} có n phần tử là các số 1,2 ,..., n.

  15. Tổ hợp chặp k từ n, kí hiệu là Cnk. Viết chương trình tính Cnk biết rằng:

    Cnk= Cn-1k-1+ Cn-1k

    Cn0 = Cnn = Ckk= 1.



Каталог: files -> FileMonHoc
FileMonHoc -> NGÂn hàng câu hỏi lập trình cơ BẢn nhóm câu hỏI 2 ĐIỂM
FileMonHoc -> CHƯƠng 2 giới thiệu về LÝ thuyết số
FileMonHoc -> CÁc hệ MẬt khoá CÔng khai kháC
FileMonHoc -> BỘ MÔn duyệt chủ nhiệm Bộ môn
FileMonHoc -> Khoa công nghệ thông tin cộng hòa xã HỘi chủ nghĩa việt nam
FileMonHoc -> Chủ nhiệm Bộ môn Ngô Thành Long ĐỀ CƯƠng chi tiết bài giảNG
FileMonHoc -> Chủ nhiệm Bộ môn Phan Nguyên Hải ĐỀ CƯƠng chi tiết bài giảNG
FileMonHoc -> Khoa: CÔng nghệ thông tin cộng hòa xã HỘi chủ nghĩa việt nam
FileMonHoc -> MẬt mã khóA ĐỐi xứng lý thuyết cơ bản của Shannon
FileMonHoc -> Khoa cntt cộng hòa xã HỘi chủ nghĩa việt nam

tải về 1.56 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   15   16   17   18   19   20   21   22   ...   29




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương