CHƯƠNG 3: LẬP TRÌNH MODULE 3.1 Phương pháp lập trình module
3.3.9 Tìm bội số chung nhỏnhất của hai sốnguyên dương
#include …
int tinh_uscln (int x, int y); // tính ước số chung lớn nhất của x và y int tinh_bscnn (int x, int y); // tính bội số chung nhỏ nhất của x và y int main(int argc, char* argv[])
{
int so_1, so_2;
// Nhap hai so nguyen can tim boi so chung nho nhat ???
bscnn = tinh_bscnn (so_1, so_2); // Xuất bscnn ???
getch (); return 0; }
int tinh_uscln (int x, int y) // tính ước số chung lớn nhất của x và y {
int uscln; // ???
return uscln; }
int tinh_bscnn (int x, int y) // tính bội số chung nhỏ nhất của x và y { int bscnn; // ??? return bscnn; } 3.3.10 Đổi số từ hệ 10 sang hệ b #include …
void xuat_ky_so (int ky_so); // xuất ký số trong hệ he void doi_so (int so, int he); // đổi số so sang hệ he int main(int argc, char* argv[])
{ int so, b; // Nhập số ở hệ 10 so và hệ cần đổi b ??? doi_so (so, b); getch (); return 0; }
void xuat_ky_so (int ky_so) // xuất ký số trong hệ he {
}
void doi_so (int so, int he) // đổi số so sang hệ he { // ??? } 3.3.11 Tính tổng Hình 3.7: Sơ đồ CT tính tổng #include …
void cong_hai_PS (int& tu, int& mau, int tu_moi, int mau_moi);
int tinh_uscln (int x, int y); // tính ước số chung lớn nhất của x và y void gian_uoc (int& tu, int& mau); // giản ước phân số tu/mau
void xuat_phan_so (int tu, int mau); // xuất phân số tu/mau int main(int argc, char* argv[])
{
int N, tu_cua_tong, mau_cua_tong, i; // Nhập N ???
tu_cua_tong = mau_cua_tong = 1; for (i = 2; i<=N; i++)
n1 1 2 1 1+ + + Đúng i 2 Tổng 1/1 i <= N i i + 1 Cộng phân sốCộng phân số Tổng 1/i Sai
Giản ước phân sốGiản ước phân số
Xuất phân sốXuất phân số
n
12 2
11+ ++ 1+ ++
cong_hai_PS (tu_cua_tong, mau_cua_tong, 1, i);
gian_uoc (tu_cua_tong, mau_cua_tong);
xuat_phan_so (tu_cua_tong, mau_cua_tong); getch (); return 0;
}
void cong_hai_PS (int& tu, int& mau, int tu_moi, int mau_moi) // Cộng hai phân số: tu/mau + tu_moi/mau_moi gán vào tu/mau {
// ???
}
int tinh_uscln (int x, int y) // tính ước số chung lớn nhất của x và y {
int uscln, du; // ???
return uscln; }
void gian_uoc (int& tu, int& mau) // giản ước phân số tu/mau {
// ???
}
void xuat_phan_so (int tu, int mau) // xuất phân số tu/mau {
// ???
}
BÀI TẬP
1. Một hàm có thể trả về bao nhiêu giá trị? Nếu ta muốn một hàm trả về nhiều giá trị thì sao? Nếu một hàm không trả về giá trị, ta phải khai báo kiểu của nó như thế nào?
2. Dòng đầu tiên của định nghĩa hàm là gì, và nó chứa những thông tin gì? Cách đặt tên hàm như thế nào là tốt ?
3. Biến cục bộ là gì? Biến toàn cục là gì? Biến cục bộ và biến toàn cục khác nhau như thế nào? Tại sao không sử dụng tất cả các biến toàn cục?
4. Tìm điểm sai trong đoạn chương trình sau: #include <iostream.h>
void in_thong_diep () {
printf (“Day la mot thong diep.”); return 0;
}
void main () {
in_thong_diep (“Day la mot thong diep.”); }
int nhan_doi (int y); {
return (2 * y); }
6. Viết một hàm nhận hai số nguyên int làm đối số, và trả về tích của hai đối số đó. 7. Viết một hàm nhận hai số nguyên int làm đối số, xuất tỷ số của đối số thứ nhất
với đối số thứ hai. Nếu trường hợp không chia được (đối số thứ hai bằng 0) thì cho một câu thông báo “Không chia cho 0 được.”.
8. Viết các CT giải các bài tốn tính giai thừa, tính số fibonacci thứ n, tháp hà nội, tính số tổ hợp chập k của n phần tử. Yêu cầu: dùng hàm đệ quy.