Tài liệu học tập môn Thực tập lập trình cơ bản - Phùng Thị Thu Hiền

pdf 79 trang Gia Huy 17/05/2022 2240
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu học tập môn Thực tập lập trình cơ bản - Phùng Thị Thu Hiền", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftai_lieu_hoc_tap_mon_thuc_tap_lap_trinh_co_ban_phung_thi_thu.pdf

Nội dung text: Tài liệu học tập môn Thực tập lập trình cơ bản - Phùng Thị Thu Hiền

  1. BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC KINH TẾ - KỸ THUẬT CÔNG NGHIỆP KHOA CÔNG NGHỆ THÔNG TIN Chủ biên PHÙNG THỊ THU HIỀN BÙI VĂN TÂN TÀI LIỆU HỌC TẬP MÔN THỰC TẬP LẬP TRÌNH CƠ BẢN Đối tượng: Sinh viên trình độ Đại học Ngành đào tạo: Công nghệ thông tin Năm 2019 ii
  2. DANH MỤC CÁC THUẬT NGŨ TIẾNG ANH Từ Nghĩa của từ Assign Gán Allocate Cấp phát Comment Ghi chú, chú thích Code block Khối lệnh Condition Điều kiện Interation Cấu trúc lặp Dynamic Variable Biến động Expression Biểu thức Operand Toán hạng Operator Toán tử Function Hàm Parameter Tham số Pointer Con trỏ Syntax Cú pháp Syntax Error Lỗi cú pháp Selection Cấu trúc Source code Mã nguồn Source file File nguồn iii
  3. MỤC LỤC DANH MỤC CÁC THUẬT NGŨ TIẾNG ANH iii MỤC LỤC iv LỜI NÓI ĐẦU v LAB 1: CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH if 1 LAB 2: CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH switch 13 LAB 3: CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH for 26 LAB 4: CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH while, do while 37 LAB 5: BÀI TẬP BẰNG XÂY DỰNG HÀM 49 LAB 6: LẬP TRÌNH ĐỆ QUY 64 LAB 7: BÀI TẬP MẢNG MỘT CHIỀU 76 LAB 8: BÀI TẬP MẢNG HAI CHIỀU 100 LAB 9: BÀI TẬP XÂU KÝ TỰ 121 LAB 10: LẬP TRÌNH VỚI CON TRỎ (1,2) 131 LAB 11: LẬP TRÌNH VỚI BIẾN CẤU TRÚC (1,2) 143 LAB 11: LẬP TRÌNH VỚI BIẾN TỆP (1,2) 143 TÀI LIỆU THAM KHẢO 16981 iv
  4. LỜI NÓI ĐẦU Thực tập lập trình cơ bản là môn thực hành chuyên ngành trong chương trình đào tạo ngành công nghệ thông tin. Mục đích của môn học này là trang bị cho sinh viên những kiến thức cơ bản nhất về kỹ năng lập trình trong việc giải quyết bài toán bằng ngôn ngữ lập trình C++. Trên cơ sở các kiến thức tiếp thu được sinh viên có thể đi sâu tìm hiểu các ngôn ngữ lập trình bậc cao khác nhau và bước đầu thể hiện tính chuyên nghiệp trong lập trình. Để đáp ứng với yêu cầu học tập của sinh viên chuyên ngành Công nghệ thông tin, Trường Đại học Kinh tế - Kỹ thuật Công nghiệp tổ chức biên soạn tài liệu học tập “Thực tập lập trình cơ bản”. Đây là một học phần thực hành cơ bản của sinh viên chuyên ngành Công nghệ thông tin. Tài liệu này được soạn theo đề cương chi tiết môn Thực tập lập trình cơ bảncủa Khoa Công nghệ thông tin. Mục tiêu của nó nhằm giúp các bạn sinh viên chuyên ngành có một tài liệu cô đọng dùng làm tài liệu học tập. Tài liệu học tập được biên soạn theo đúng chương trình đào tạo và các quy định về cách trình bày của Nhà trường. Nội dung của tài liệu học tập bao gồm các chương, trong mỗi chương bao gồm các phần nội dung chủ yếu như sau: - Mục tiêu của chương. - Nội dung cô đọng lý thuyết của chương. - Hướng dẫn chi tiết giải bài tập mẫu. - Bài tập vận dụng. Do thời gian và trình độ có hạn nên tài liệu học tập khó có thể tránh khỏi những thiếu sót nhất định. Chúng tôi luôn mong nhận được sự góp ý của bạn đọc để giáo trình được tái bản hoàn thiện hơn trong những lần sau. Xin chân thành cám ơn! Biên soạn Phùng Thị Thu Hiền Bùi Văn Tân v
  5. LAB 1:CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH if A. MỤC TIÊU Trang bị cho sinh viên ky ̃ năng lập trình cơ bản trong C++: + Cấu trúc cơ bản của chương trình + Cú pháp câu lệnh if dạng đầy đủ + Cú pháp câu lệnh if dạng không đầy đủ + Viết chương trình sử dụng câu lệnh if + Phát hiện và sửa lỗi B. NỘI DUNG 1. Cú pháp câu lệnh if dạng đầy đủ Cú pháp câu lệnh if dạng (if else) if ( ) { khối lệnh 1; } else { khối lệnh 2; } Trong đó - thường là biểu thức logic. - Phần else là không bắt buộc phải có. Câu lệnh if không có phần else được gọi là câu lệnh “if thiếu”. - , là câu lệnh hợp lệ bất kỳ: câu lệnh đơn, hoặc câu lệnh ghép, hoặc câu lệnh điều khiển. 2. Cú pháp câu lệnh if dạng không đầy đủ if ( ) { khối lệnh 1; } Trong đó: - là một biểu thức logic tức nó có giá trị đúng (khác 0) hoặc sai (bằng 0). - có thể là một câu lệnh đơn, một khối lệnh hay một câu lệnh phức. C. YÊU CẦ U PHẦ N CỨNG, PHẦ N MỀM Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB. Phần mềm C FREE 5.0. D. KẾT QUẢ SAU KHI HOÀN THÀNH Sinh viên thành thạo các câu lệnh IF áp dụng giải các bài tập từ đơn giản đến phức tạp. E. HƯỚNG DẪN CHI TIẾT 1
  6. 1.Viết chương trình nhập vào 2 số nguyên, in ra kết quả của các phép toán: cộng, trừ, nhân, chia của 2 số nguyên đó. Hướng dẫn: #include #include using namespace std; int main() { int a, b; cout >a>>b; cout #include #include 2
  7. using namespace std; int main() { int nam, year; cout > nam ; if (nam%4 == 0 && year%100 !=0 || nam%400 == 0) cout #include using namespace std; int main() { int tuoi; cout >tuoi; if(tuoi==16) { cout << "Tuoi cua hoc sinh la: " << tuoi << " tuoi." << endl; cout << "Hoc sinh du tuoi vao lop 10!" << endl; } else { cout << "Tuoi cua hoc sinh la: " << tuoi << " tuoi." << endl; 3
  8. cout #include using namespace std; int main() { int a; cout >a; if(a>100) { cout << a << " lon hon 100." << endl; } else { cout << a << " nho hon 100." << endl; } return 0; } Kết quả chạy chương trình: 4
  9. 5. Viết chương trình nhập vào 3 số nguyên và tìm số lớn nhất trong 3 số đó. Hướng dẫn: #include #include using namespace std; int main() { cout >a1>>a2>>a3; max=a1; //Giả sử số đầu tiên lớn nhất if(max #include using namespace std; int main() 5
  10. { int a, b, c, CV, S; float P; cout >a; cout >b; cout >c; P = (a+b+c)/2; CV = a+b+c; S = sqrt(P*(P-a)*(P-b)*(P-c)); cout<<"Chu vi tam giac la:"<<CV; cout<<"\nDien tich tam giac la:"<<S; if(a!=0&&b!=0&&c!=0&&a==b||b==c||c==a) { cout<<endl<<"la tam giac can"; } else if(a!=0&&b!=0&&c!=0&&a==b==c) { cout<<endl<<"la tam giac deu"; } else if(a!=0&&b!=0&&c!=0&&a!=b||b!=c||c!=a) { cout<<endl<<"la tam giac thuong"; } return 0; } Kết quả chạy chương trình: 7. Viết chương trình xếp hạng học lực của học sinh dựa trên các điểm bài kiểm tra, điểm thi giữa kỳ, điểm thi cuối kỳ, điểm trung bình = (điểm bài kiểm tra + điểm thi giữa kỳ + điểm thi cuối kỳ)/3. Nếu: 6
  11. Điểm trung bình >= 9.0 là hạng A. Điểm trung bình >=7.0 và =5.0 và #include using namespace std; int main() { float a, b, c; float dtb; cout >a>>b>>c; dtb=(a+b+c)/3; cout =9.0) cout =7.0) && (dtb =5.0) && (dtb<7.0)) cout<<"Hang C"; else if(dtb<5.0) cout<<"Hang F"; else cout<<"Diem khong hop le"; cout<<"\n"; return 0; } Kết quả chạy chương trình: 8. Cửa hàng A nhận gửi bán sản phẩm cho một công ty B và hưởng hoa hồng, với mức hoa hồng theo doanh số bán như sau: 5% nếu tổng doanh số nhỏ hơn hoặc bằng 100 triệu. 10% nếu tổng doanh số nhỏ hơn hoặc bằng 300 triệu. 20 % nếu tổng doanh số là lớn hơn 300 triệu. 7
  12. Hướng dẫn: #include #include using namespace std; int main() { long int doanhso; float hoahong; cout >doanhso; if(doanhso 300) { hoahong=doanhso*20/100; cout << " Voi tong doanh so la " << doanhso << ", "; cout << " thi hoa hong nhan duoc la " << hoahong; } cout <<"\n"; return 0; } Kết quả chạy chương trình: 8
  13. 9. Viết chương trình tính cước điện thoại bàn cho một hộ gia đình với các thông số như sau: Phí thuê bao bắt buộc là 30 nghìn. 600 đồng cho mỗi phút gọi của 50 phút đầu tiên. 400 đồng cho mỗi phút gọi của 150 phút tiếp theo. 200 đồng cho bất kỳ phút gọi nào sau 200 phút đầu tiên. Hướng dẫn: #include #include using namespace std; int main() { long int sophut, phi = 0; float tong; const int phicodinh = 30000; cout >sophut; if(sophut>200) phi=(sophut-200)*200+150*400+50*600; else if(sophut>50) phi=(sophut-50)*400+50*600; else phi = sophut*600; tong = phi + phicodinh; cout << "Ban da goi " << sophut << " phut." << endl; cout << "So tien dien thoai phai nop la " << tong << endl; return 0; } Kết quả chạy chương trình: 10. Viết chương trình nhập lương nhân viên, tính thuế thu nhập và lương ròng (số tiền lương thực sự mà nhân viên đó nhận được). Với các thông số giả sử như sau 9
  14. 30% thuế thu nhập nếu lương là 15 triệu. 20% thuế thu nhập nếu lương từ 7 đến 15 triệu. 10% thuế thu nhập nếu lương dưới 7 triệu. Hướng dẫn: #include #include using namespace std; int main() { int thuesuat; float luong,sothue,luongrong=0; cout >luong; if(luong>15000000) { sothue=luong*0.3; thuesuat=30; } else if(luong>=7000000) { sothue=luong*0.2; thuesuat=20; } else { sothue=luong*0.1; thuesuat=10; } luongrong=luong-sothue; cout << "Luong = " << luong << endl; cout << "Thue thu nhap " << thuesuat << "% = " << sothue << endl; cout << "Tien luong thuc nhan = " << luongrong << endl; return 0; } 11. Viết chương trình giải phương trình ax + b = 0 Hướng dẫn: 10
  15. #include using namespace std; int main() { int a,b; cout >a; cout >b; if(a==0) cout<<"Phuong trinh vo nghiem "; if(a!=0) { cout<<"Nghiem cua phuong trinh la :"; cout<<-b/a; } return 0; } Kết quả chạy chương trình: F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 1. Viết chương trình nhập vào thông tin của một sinh viên bao gồm: mã số sinh viên, họ tên, quê quán, năm sinh, điểm trung bình các năm học; xuất ra thông tin của sinh viên vừa nhập. 2. Viết chương trình nhập vào ba cạnh a, b, c của một tam giác, tính và xuất ra diện tích của tam giác theo công thức S = p( p - a)( p - b)( p - c) với p là nữa chu vi. 3. Viết chương trình nhập vào các hệ số a, b, c và in ra nghiệm của phương trình bậc hai ax2+ bx + c = 0 (giải và biện luận đầy đủ các trường hợp). 11
  16. 4. Viết chương trình cho phép nhập vào thứ (1->7) trong tuần, nếu thứ không hợp lệ thì cho nhập lại. Sau đó cho biết thứ đã nhập có tên là gì và xuất kết quả ra màn hình. (1: Sunday, 2: Monday, ) 5. Nhập vào 1 số nguyên, yêu cầu xuất ra chữ số hàng trăm của số đó, nếu không có thì xuất ra 0. 6. Viết chương trình cho phép nhập vào tháng (1->12) trong năm, nếu tháng không hợp lệ thì cho nhập lại. Sau đó cho biết tháng đó có tên là gì và xuất kết quả ra màn hình. (1: January, 2: February, ). 7. Viết chương trình nhập vào một số. Xuất ra màn hình chuỗi “số chẵn” nếu số đó là số chẵn. Xuất ra màn hình chuỗi “số lẻ” nếu số đó là số lẻ. 8. Viết chương trình tính lương của nhân viên dựa theo thâm niên công tác (TNCT) như sau: Lương = hệ số * lương căn bản, trong đó lương căn bản là 1350000 đồng. - Nếu TNCT = 60 tháng: hệ số = 3.99. 9. Viết chương trình cho phép nhập số KW điện tiêu thụ từ bàn phím. Sau đó tính tiền điện và xuất kết quả ra màn hình. - Nếu số KW: 0 -> 100: đơn giá 2000 đồng/KW. - Nếu số KW: 101 -> 200: đơn giá 2500 đồng/KW. - Nếu số KW: 201 -> 300: đơn giá 3000 đồng/KW. - Nếu số KW: > 300: đơn giá 5000 đồng/KW. 10. Một điểm Karaoke tính tiền khách hàng theo công thức sau: - Mỗi giờ trong 3 giờ đầu tiên tính 30000đ/giờ - Mỗi giờ tiếp theo có đơn giá giảm 30% so với đơn giá trong 3 giờ đầu tiên - Ngoài ra, nếu thời gian thuê phòng từ 8 giờ đến 17 giờ thì được giảm giá 10%. Viết chương trình nhập vào giờ bắt đầu, giờ kết thúc và in ra số tiền khách phải trả, biết rằng 8 giờ ≤ giờ bắt đầu ≤ giờ kết thúc ≤ 24 giờ. 12
  17. LAB 2: CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH switch A. MỤC TIÊU Trang bị cho sinh viên ky ̃ năng lập trình cơ bản trong C++: + Cú pháp câu lệnh switch dạng đầy đủ + Cú pháp câu lệnh switch dạng không đầy đủ + Viết chương trình sử dụng câu lệnh switch + Phát hiện và sửa lỗi B. NỘI DUNG 1.Cú pháp câu lệnh switch dạng đầy đủ switch (biểu thức điều khiển) { case biểu_thức_1: dãy lệnh 1 ; break; case biểu_thức_2: dãy lệnh 2 ; break; ; case biểu_thức_n: dãy lệnh n ; break; default: dãy lệnh; break; } 2.Cú pháp câu lệnh switch dạng không đầy đủ switch (biểu thức điều khiển) { case biểu_thức_1: dãy lệnh 1 ; break; case biểu_thức_2: dãy lệnh 2 ; break; ; case biểu_thức_n: dãy lệnh n ; break; } C. YÊU CẦ U PHẦ N CỨNG, PHẦ N MỀM Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB. Phần mềm C FREE 5.0. D. KẾT QUẢ SAU KHI HOÀN THÀNH Sinh viên thành thạo các câu lệnh switch áp dụng giải các bài tập từ đơn giản đến phức tạp. 13
  18. E. HƯỚNG DẪN CHI TIẾT 1. Nhập tháng và cho biết tháng đó có bao nhiêu ngày. Hướng dẫn: #include #include using namespace std; int main() { int thang; cout >thang; switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout<<"31 ngay"; break; case 2: cout<<"28 hoac 29 ngay"; break; case 4: case 6: case 9: case 11: cout<<"30 ngay"; break; } return 0; } Kết quả chạy chương trình: 14
  19. 2. Nhập vào số và in ra thứ tương tự với số đó. Hướng dẫn: #include #include using namespace std; int main() { int thu ; cout >thu; switch(thu) { case 2: cout<<"Thu hai"; break; case 3: cout<<"Thu ba"; break; case 4: cout<<"Thu tu"; break; case 5: cout<<"Thu nam"; break; case 6: cout<<"Thu sau"; break; case 7: cout<<"Thu bay"; break; case 8: cout<<"Chu nhat"; break; default: cout<<"Thu ban nhap khong hop le!"; } return 0; 15
  20. } Kết quả chạy chương trình: 3. Viết chương trình thể hiện menu lựa chọn gồm các thể loại phim hiện đang có trong rạp chiếu phim ABC. Yêu cầu người dùng nhập lựa chọn thể loại phim muốn xem. Hướng dẫn: #include using namespace std; int main() { int luachon; cout 4): "; cin >> luachon; // cấu trúc switch switch(luachon) { case 1: { cout << "\nBan da chon the loai phim 'Tinh cam' "; }break; case 2: { cout << "\nBan da chon the loai phim 'Kinh di' "; 16
  21. }break; case 3: { cout #include using namespace std; 17
  22. int main() { int luachon; cout >luachon; switch(luachon) { case 1 : cout << "Ban da chon talk." << endl; break; case 2 : cout << "Ban da chon eat" << endl; break; case 3 : cout << "Ban da chon play" << endl; break; case 4 : cout << "Ban da chon sleep" << endl; break; default : cout << "Ban da khong chon lua chon nao" << endl; } return 0; } Kết quả chạy chương trình: 18
  23. 5. Viết chương trình phân loại sinh viên dựa vào kết quả điểm học tập. Nếu điểm A thì phân loại là sinh viên xuất sắc, điểm B là sinh viên loại giỏi, điểm C là sinh viên loại khá, điểm D là sinh viên loại trung bình, điểm F là sinh viên loại yếu. Hướng dẫn: #include using namespace std; int main() { char diem = 'A'; switch(diem) { case 'A': cout << "Xuat xac" << endl; break; case 'B': cout << "Gioi" << endl; break; case 'C': cout << "Kha" << endl; break; case 'D': cout << "Trung Binh" << endl; break; case 'F': cout << "Yeu" << endl; break; default: cout << "Diem khong hop le" << endl; } cout << "Diem cua ban la: " << diem << endl; return 0; } Kết quả chạy chương trình: 19
  24. 6. Viết chương trình kiểm tra một số nguyên bất kỳ được nhập từ bàn phím là số chẵn hay số lẻ. Hướng dẫn: #include using namespace std; int main() { char so; cout > so; switch(so % 2) { case 0: cout << so << " la so chan" << endl; break; case 1: cout << so << " la so le" << endl; break; } return 0; } Kết quả chạy chương trình: 7. Viết chương trình kiểm tra một ký tự trong bảng chữ cái tiếng anh là nguyên âm hay phụ âm. Ký tự là bất kỳ được nhập từ bàn phím. 20
  25. Hướng dẫn: #include using namespace std; int main() { char kyTu; cout > kyTu; switch(kyTu) { case 'o': case 'O': case 'u': case 'U': case 'i': case 'I': case 'a': case 'A': case 'e': case 'E': cout << "Ky tu " << kyTu << " la nguyen am" << endl; break; default: cout << "Ky tu " << kyTu << " la phu am" << endl; } } Kết quả chạy chương trình: 21
  26. 8. Viết một chương trình tạo một máy tính đơn giản có các phép tính như cộng, trừ, nhân, chia. Hướng dẫn: #include using namespace std; int main() { char toantu; float so1, so2, ketQua; bool kt = true; cout > so1; cout > toanTu; cout > so2; switch(toantu) { case '+': ketQua = so1 + so2; break; case '-': ketQua = so1 - so2; break; case '*': ketQua = so1 * so2; break; case '/': if (so2 != 0) { ketQua = so1 / so2; } else { kt = false; 22
  27. } break; default: cout<<("Toan tu khong hop le"); } cout << " " << endl; if (kt) { cout << so1 << " " << toantu << " " << so2 << " = " << ketQua << endl; } else { cout << "Khong the thuc hien phep chia cho 0" << endl; } return 0; } Kết quả chạy chương trình: 9. Viết chương trình sử dụng lệnh switch xuất ra chữ các số tự nhiên nhỏ hơn 3. Hướng dẫn: switch (so_tu_nhien) { case 0: cout << "Khong" << endl; break; case 1: cout << "Mot" << endl; break; case 2: cout << "Hai" << endl; break; 23
  28. default: cout 3,0: Loại Kém 24
  29. Điểm TK 4,0: Loại Yếu. Điểm TK từ 5,0 ->6,0: Loại Trung bình. Điểm TK từ 7,0 ->8,0: Loại Khá. Điểm TK từ 9,0 ->10,0: Loại Giỏi. 11. Viết chương trình tính điểm cho sinh viên. Nhập vào điểm: điểm toán rời rạc (3 tín chỉ); điểm lập trình (4 tín chỉ); điểm cơ sở dữ liệu (3 tín chỉ). - Tính điểm tổng kết. - In kết quả điểm chữ (A, B, C, D, F) của sinh viên. 25
  30. LAB 3: CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH for A. MỤC TIÊU Trang bị cho sinh viên ky ̃ năng lập trình cơ bản trong C++: + Cú pháp câu lệnh for + Các tham số trong câu lệnh for + Viết chương trình sử dụng câu lệnh for + Phát hiện và sửa lỗi B. NỘI DUNG Cú pháp câu lệnh for Cú pháp for ([ ] ; [ ] ; [ ]) ; B1: Thực hiện (nếu có). B2: Kiểm tra . B3: Nếu đúng thì thực hiện , sau đó thực hiện (nếu có) và quay về B2. Còn ngược lại nếu sai thì chuyển sang B4. B4: Thoát khỏi vòng lặp, và chuyển quyền điều khiển sang câu lệnh kế tiếp sau lệnh for. C. YÊU CẦ U PHẦ N CỨNG, PHẦ N MỀM Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB. Phần mềm C FREE 5.0. D. KẾT QUẢ SAU KHI HOÀN THÀNH Sinh viên thành thạo các câu lệnh for áp dụng giải các bài tập từ đơn giản đến phức tạp. E. HƯỚNG DẪN CHI TIẾT 1. Viết chương trình tính tổng của dãy các số từ 1 đến 200. Chương trình dùng một biến đếm i được khởi tạo từ 1, và một biến kq để chứa tổng. Mỗi bước lặp chương trình cộng i vào kq và sau đó tăng i lên 1 đơn vị. 26
  31. Chương trình còn lặp khi nào i còn chưa vượt qua 200. Khi i lớn hơn 200 chương trình dừng. Hướng dẫn: #include #include using namespace std; int main() { int i, kq = 0; for (i = 1 ; i #include using namespace std; int main() { int n, i ; cout > n ; for (i = 1 ; i < n ; i += 2) cout << i << '\n' ; return 0; 27
  32. } Kết quả chạy chương trình: 3. Viết chương trình tính tổng từ 1 đến n (n nguyên, dương). Hướng dẫn: #include using namespace std; int main() { int n; int s=0; cout >n; for(int i=1;i using namespace std ; 28
  33. int main() { int s=0; int n; cout >n; for(int i=0;i using namespace std ; int main() { int n; cout >n; int s=1; for(int i=1;i<=n;i++) { s=s*i; 29
  34. } cout #include using namespace std; int main() { int x; cout >x; cout << "Boi so cua no voi " << x << " so dau tien la : "; for(int y=1;y<16;y++) cout << "\n" << x << "x" << y << "=" << x*y; return 0; } Kết quả chạy chương trình: 30
  35. 7. Viết chương trình vẽ tam giác sao như sau: * Hướng dẫn: #include #include #include #include using namespace std; int main() { int i=7; int j=7; for(i=1;i =1; j) cout<<"*"; cout<<"\n"; } cout<<"\n"; system("PAUSE"); return 0; 31
  36. } Kết quả chạy chương trình: 8. Viết chương trình đảo ngược một số nguyên bất kỳ được nhập từ bàn phím. Ví dụ: 34567, đảo ngược lại thành 76543. Hướng dẫn: #include #include using namespace std; int main() { int so; cout > so; cout 32
  37. #include using namespace std; int main() { int so; cout > so; cout #include #include using namespace std; int main() { int i, so1, so2, min, ucln = 1; cout > so1; cout > so2; if(so1 == 0 && so2 == 0) { cout << "Hai so 0 khong co uoc chung lon nhat" << endl; } else if (so1 != 0 && so2 == 0) { 33
  38. cout #include using namespace std; int main() 34
  39. { int n; cout > n; cout << "Bang cuu chuong cua " << n << ":" << endl; for(int i = 1; i <= 10; i++) { cout << " " << n << " x " << i << " = " << n*i << endl; } return 0; } Kết quả chạy chương trình: F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 1. Viết chương trình tính kết quả của phép toán sau (làm tròn 3 chữ số thập phân): 224246 2468 2(1)n 1 335357 3579 (23)n 2. Viết chương trình tìm các số hoàn chỉnh nhỏ hơn n (với n được nhập từ bàn phím). 3. Viết chương trình xét xem một số n có phải là số nguyên tố không. 4. Viết chương trình in ra tất cả các số nguyên tố bé hơn hoặc bằng n. 5. Viết chương trình vẽ hình chữ nhật và điền dấu * như hình sau: * * * * * * * * * * * * * * * 6. Viết chương trình tính tổng bậc 3 của n số nguyên đầu tiên. In kết quả ra màn hình. 7. Viết chương trình tính tổng nghịch đảo của n số nguyên đầu tiên. 8. Viết chương trình nhập n là số nguyên dương. Nếu n<=0 thì yêu cầu nhập lại. Sau đó tính các tổng sau: a) S1 = 1 + 2 + 3 + + n = n(n+1)/2. 35
  40. b) S2 = 1 + 3 + 5 + + (2n+1) = (n+1)2. c) S3 = 2 + 4 + 6 + + 2n = n(n+1). 9. Viết chương trình nhập n là số nguyên dương. Nếu n<=0 thì yêu cầu nhập lại. Sau đó tính các tổng sau bằng vòng lặp for: a) S4 = 12 + 22 + 32 + + n2. b) S5 = 13 + 33 + 53 + + (2n+1)3. c) S6 = 24 + 44 + 64 + + (2n)4. 10. Viết chương trình nhập vào một số nguyên dương rồi xuất ra dạng phân tích thừa số nguyên tố của số đó. 11. Viết chương trình nhập một số làm số hàng (hay độ rộng theo chiều ngang) của tam giác rồi sau đó vẽ tam giác sao với độ rộng đó. Ví dụ nếu nhập số hàng là 5 thì vẽ tam giác sao có dạng: * 36
  41. LAB 4: CẤU TRÚC LỆNH CƠ BẢN - CÂU LỆNH while, do while A. MỤC TIÊU Trang bị cho sinh viên ky ̃ năng lập trình cơ bản trong C++: + Cú pháp câu lệnh while + Cú pháp câu lệnh do while + Viết chương trình sử dụng câu lệnh + Phát hiện và sửa lỗi B. NỘI DUNG 1. Cú pháp câu lệnh while Cú pháp while ( ) ; Lệnh while thực hiện như sau: B1: Kiểm tra . B2: Nếu đúng thì thực hiện , sau đó quay về B1. Còn ngược lại sai thì chuyển sang B3. B3: Thoát khỏi vòng lặp, và chuyển quyền điều khiển sang câu lệnh kế tiếp sau lệnh while. 2. Cú pháp câu lệnh do while Cú pháp do { ; }while ( ); Lệnh do while thực hiện như sau: B1: Thực hiện . B2: Kiểm tra . B3: Nếu đúng thì quay về B1. Còn ngược lại nếu sai thì chuyển sang B4. B4: Thoát khỏi vòng lặp, và chuyển quyền điều khiển sang câu lệnh kế tiếp sau 37
  42. lệnh do while. C. YÊU CẦ U PHẦ N CỨNG, PHẦ N MỀM Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB. Phần mềm C FREE 5.0. D. KẾT QUẢ SAU KHI HOÀN THÀNH Sinh viên thành thạo các câu lệnh while, do while áp dụng giải các bài tập từ đơn giản đến phức tạp. E. HƯỚNG DẪN CHI TIẾT 1. Viết chương trình để in các số từ 1 đến 20. Hướng dẫn: #include #include using namespace std; int main() { int i=1; while (i<=20) { cout << i << endl; i++; } return 0; } Kết quả chạy chương trình: 38
  43. 2. Viết chương trình tìm ước chung lớn nhất (UCLN) của 2 số nguyên m và n. Áp dụng thuật toán Euclide bằng cách liên tiếp lấy số lớn trừ đi số nhỏ khi nào 2 số bằng nhau thì đó là UCLN. Trong chương trình ta qui ước m là số lớn và n là số nhỏ. Thêm biến phụ r để tính hiệu của 2 số. Sau đó đặt lại m hoặc n bằng r sao cho m > n và lặp lại. Vòng lặp dừng khi m = n. Hướng dẫn: #include #include using namespace std; int main() { int m, n, r; cout > m >> n ; if (m n) m = r; else { m = n ; n = r ; } } cout << "UCLN = " << m ; } Kết quả chạy chương trình: 39
  44. 3. Viết chương trình nhân 2 số nguyên theo phương pháp Ấn độ. Hướng dẫn: #include #include using namespace std; int main() { long m, n, kq; cout > m >> n ; kq = 0 ; while (m) { if (m%2) kq += n ; m >>= 1; n #include using namespace std; 40
  45. int main() { int x; do{ cout >x; cout 0); return 0; } Kết quả chạy chương trình: 5. Viết chương trình một số nguyên và in kết quả ra màn hình dưới dạng số đảo ngược (về thứ tự) của số nguyên vừa nhập đó. Hướng dẫn: #include #include using namespace std; int main() { long int so1, so2, sodaonguoc=0; cout >so1; so2=so1; do { sodaonguoc = sodaonguoc*10; int digit=so1%10; sodaonguoc+=digit; so1/=10; } 41
  46. while(so1); cout #include using namespace std; int main() { int i, n ; // n: số cần kiểm tra cout > n ; i = 2 ; do { if (n%i == 0) { cout << n << "la hop so" ; return 0; // dừng chương trình } i++; } while (i <= n/2); cout << n << "la so nguyen to" ; } 42
  47. Kết quả chạy chương trình: 7. Viết chương trình hiển thị một menu các chức năng của phép toán (cộng, trừ, nhân, chia) cho người dùng chọn. Hướng dẫn: #include #include using namespace std; int main() { int selection; do { system("cls"); // clear screen cout > selection; if (cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); //skip bad input } } while (selection 4); cout << "You selected option #" << selection << "\n"; return 0; } Kết quả chạy chương trình: 43
  48. 8. Viết chương trình yêu cầu xuất ra các số từ 1 đến 1000. Hướng dẫn: #include using namespace std; int main() { int count(1); while (count <= 1000) { cout << count << " "; ++count; } cout << "done!" << endl; return 0; } Kết quả chạy chương trình: 9. Viết chương trình sử dụng vòng lặp while hiển thị mô hình dưới đây: 44
  49. 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 Hướng dẫn: #include using namespace std; int main() { // Vong lap int outer(1); while (outer <= 5) { int inner(1); while (inner <= outer) { cout << inner << " "; ++inner; } // print a newline at the end of each row cout << "\n"; ++outer; } return 0; } 10. Viết chương trình nhập ID và password. 45
  50. Chương trình sẽ lặp lại việc nhập ID và password cho đến khi user nhập đúng. Thao tác nhập được thực hiện ít nhất 1 lần. Hướng dẫn: #include #include using namespace std; const string ID("kkkkkk"); const string PASSWORD("hhkkkkkk.com"); int main() { string id; string password; do { system("cls"); cout #include using namespace std; int main() { int i = 2, j, so, kt; 46
  51. cout > so; cout << "Tat ca cac so nguyen to tu 1 den " << so << " la: "; while (i <= so) { kt = 1; if (i != 0 && i != 1) { j = 2; while(j <= i/2) { if(i%j == 0) { kt = 0; break; } j++; } } else { kt = 0; } if(kt == 1) { cout << i << " "; } i++; } return 0; } Kết quả chạy chương trình: F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 1. Viết chương trình nhập n là số nguyên dương. Nếu n<=0 thì yêu cầu nhập lại. Sau đó tính các tổng sau bằng vòng lặp (while và do while): a) S4 = 12 + 22 + 32 + + n2. 47
  52. b) S5 = 13 + 33 + 53 + + (2n+1)3. c) S6 = 24 + 44 + 64 + + (2n)4. 2. Viết chương trình nhập vào tử số và mẫu số của một phân số, kiểm tra mẫu số nhập là số 0 thì nhập lại. 3. Viết chương trình nhập vào số bất kỳ đến khi nhập số âm thì dừng lại. 4. Viết chương trình nhập một số từ bàn phím và in ra màn hình bằng chữ. Ví dụ 1234, kết quả in ra màn hình là một hai ba bốn. 5. Viết chương trình tìm bội chung nhỏ nhất của hai số nguyên được nhập từ bàn phím. 6. Viết chương trình tìm giá trị ASCII của một ký tự bất kỳ được nhập từ bàn phím. 7. Viết chương trình nhập một số và tính tổng các chữ số của số vừa nhập rồi hiển thị kết quả. 8. Viết chương trình nhập một số thập phân và sau đó chuyển đổi số đó thành dạng ký tự. Ví dụ: 324 là ba hai bon. 9. Viết chương trình gọi đồ uống. Giả sử menu của chúng ta có các loại thức uống như sau: 1. Cafe 2. Cam vắt 3. Nước ép cà rốt 4. Nước lọc 5. Nước dừa 48
  53. LAB 5: BÀI TẬP BẰNG XÂY DỰNG HÀM A. MỤC TIÊU Trang bị cho sinh viên ky ̃ năng lập trình cơ bản trong C++: + Khai báo và định nghĩa hàm + Viết chương trình sử dụng hàm + Phát hiện và sửa lỗi B. NỘI DUNG 1. Khai báo hàm (danh_sách_tham_số_hình_thức); 2. Định nghĩa hàm a. Hàm có trả về giá trị (danh_sách_tham_số_hình_thức) { khai báo cục bộ của hàm ; dãy lệnh của hàm ; return (biểu thức trả về); } Câu lệnh return có thể nằm ở vị trí bất kỳ trong phần câu lệnh, tuỳ thuộc mục đích. 3. Tham số trong lời gọi hàm Lời gọi hàm được phép xuất hiện trong bất kỳ biểu thức, câu lệnh của hàm khác. Nếu lời gọi hàm lại nằm trong chính bản thân hàm đó thì ta gọi là đệ quy. Lời gọi hàm có dạng: Tên_hàm(danh_sách_tham_số_thực_sự); 4. Cấp phát và phạm vi hoạt động của các biến Cú pháp khai báo & = ; C. YÊU CẦ U PHẦ N CỨNG, PHẦ N MỀM Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB. Phần mềm C FREE 5.0. D. KẾT QUẢ SAU KHI HOÀN THÀNH 49
  54. Sinh viên thành thạo cách khai báo và định nghĩa hàm, viết chương trình sử dụng hàm áp dụng giải các bài tập từ đơn giản đến phức tạp. E. HƯỚNG DẪN CHI TIẾT 1. Xây dựng hàm viết chương trình nhập số nguyên dương n. Kiểm tra n có phải là số nguyên tố không? Hướng dẫn: #include using namespace std; bool KTSNT(int x) { if(x >n; if(KTSNT(n)==true) cout<< n << " la so nguyen to!"; else cout<< n <<" khong la so nguyen to!"; cout<<endl; } Kết quả chạy chương trình: 50
  55. 2. Xây dựng hàm viết chương trình nhập số nguyên dương n. Kiểm tra n có phải là số hoàn hảo không (Số hoàn hảo là một số có tổng các ước của nó (không kể nó) bằng chính nó). Ví dụ: Số 6 là số hoàn hảo vì tổng các ước = 1+2+3=6. Hướng dẫn: #include using namespace std; bool KTSHH(int x) { int tong=0; if(x >n; if(KTSHH(n)==true) cout<< n << " la so hoan hao!"; else cout<< n <<" khong phai so hoan hao!"; cout<<endl; } Kết quả chạy chương trình: 51
  56. 3. Xây dựng hàm viết chương trình tính n! (n>=0) Hướng dẫn: #include using namespace std; int Nhap() { int x; do { cin>>x; if(x<0) cout<<"Nhap sai, yeu cau nhap lai!"; }while(x<0); return x; } long Tinh(int n) { long gt=1; for(int i=1; i<=n; i++) gt=gt*i; return gt; } int main() { int n; cout<<"Nhap so nguyen n: "; n=Nhap(); cout<<"Ket qua la: "<< Tinh(n); cout<<endl; } Kết quả chạy chương trình: 52
  57. 4. Xây dựng hàm viết chương trình tính P(n)=1x3x5 x(2n+1) (n>=0). Hướng dẫn: #include using namespace std; int Nhap() { int x; do { cin>>x; if(x<0) cout<<"Nhap sai, yeu cau nhap lai!"; }while(x<0); return x; } long Tinh(int n) { long p=1; for(int i=0; i<=n; i++) p=p*(2*i+1); return p; } int main() { int n; cout<<"Nhap so nguyen n: "; n=Nhap(); cout<<"Ket qua la: "<< Tinh(n); cout<<endl; } 53
  58. Kết quả chạy chương trình: 5. Xây dựng hàm viết chương trình tính S(n)= 1+3+5+n +(2n+1) (n>=0). Hướng dẫn: #include using namespace std; int Nhap() { int x; do { cin>>x; if(x<0) cout<<"Nhap sai, yeu cau nhap lai!"; }while(x<0); return x; } int Tinh(int n) { int s=0; for(int i=0; i<=n; i++) s=s+(2*i+1); return s; } int main() { int n; cout<<"Nhap so nguyen n: "; n=Nhap(); cout<<"Ket qua la: "<< Tinh(n); 54
  59. cout =0). Hướng dẫn: #include using namespace std; int Nhap() { int x; do { cin>>x; if(x<1) cout<<"Nhap sai, yeu cau nhap lai!"; }while(x<1); return x; } int Tinh(int n) { int s=0; for(int i=1; i<=n; i++) { if(i%2==0) s=s-i; else s=s+i; } 55
  60. return s; } int main() { int n; cout using namespace std; int main() { char kyTu; cout > kyTu; if (int(kyTu) != 27) { cout << " Ma ASCII cua ky tu " << kyTu << " la " << int(kyTu) << endl; } else { break; } 56
  61. } while (kyTu != 27); return 0; } Kết quả chạy chương trình: 8. Xây dựng hàm viết chương trình xuất ra dãy số Fabonica 1 1 2 3 5 8 13 21 34 55 89 Hướng dẫn: #include using namespace std; void FBNC(int n) { int f0=1, f1=1, t; cout >n; FBNC(n); 57
  62. cout using namespace std; int Nhap() { int x; do { cin>>x; if(x<1) cout<<"Nhap sai, yeu cau nhap lai!"; }while(x<1); return x; } int Tinh(int n) { int s=0, t=0; for(int i=1; i<=n; i++) { t=t+i; s=s+t; } return s; } 58
  63. int main() { int n; cout using namespace std; int Nhap() { int x; do { cin>>x; if(x<1) cout<<"Nhap sai, yeu cau nhap lai!"; }while(x<1); return x; } long Tinh(int x, int y) { float p=1; for(int i=1; i<=y; i++) p=p*x; return p; 59
  64. } int main() { int x, y; cout >x; cout >y; cout #include using namespace std; int giaiPT(float a, float b, float c,float &x1, float &x2){ float delta = b*b - 4*a*c; if(delta<0){ x1=x2=0.0; return 0; } else if(delta==0){ x1 = x2 = -b/(2*a); return 1; } else{ 60
  65. delta = sqrt(delta); x1 = (-b + delta) / (2*a); x2 = (-b - delta) / (2*a); return 2; } } int main() { float a,b,c; float x1,x2; do{ cout >a; cout >b; cout >c; } while(!a); if(giaiPT(a,b,c,x1,x2)==0 ) { cout<<"Phuong trinh vo nghiem"; } else if(giaiPT(a,b,c,x1,x2)==1){ cout<<"Phuong trinh co nghiem kep x=%.4f" << x1; } else{ cout<<"Phuong trinh co hai nghiem phan biet"<<endl; cout<< "x1=" << x1<<endl; cout<< "x2=" << x2<<endl; } } Kết quả chạy chương trình: 61
  66. F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 1. Xây dựng hàm viết chương trình in ra màn hình số kế tiếp của số nguyên bạn vừa nhập. Hướng dẫn: Định nghĩa một hàm value(int x) để tính số kế tiếp của số bạn vừa nhập và sử dụng lệnh cout để in ra màn hình kết quả. 2. Xây dựng hàm viết chương trình cho phép thực hiện rút gọn phân số. (Hướng dẫn: - Tìm UCLN của tử số và mẫu số. - Chia tử và mẫu của phân số cho UCLN vừa tìm được). 3. Viết chương trình in ra các số nguyên tố nhỏ hơn n với yêu cầu dùng hàm để kiểm tra một số có phải là số nguyên tố hay không. 4. Xây dựng hàm viết chương trình để nhập một số nguyên và tìm lập phương của số đó. 5. Xây dựng hàm tìm ước chung lớn nhất của 2 số a, b. 6. Xây dựng hàm tìm bội chung nhỏ nhất của 2 số a, b. 7. Viết chương trình nhập 3 số nguyên và sau đó in các số nhỏ nhất và lớn nhất bởi sử dụng hàm. 8. Viết hàm tính chu vi và diện tích hình tròn. 9. Xây dựng hàm viết chương trình thực hiện các phép tính gồm cộng, trừ, nhân và chia hai số a,b. (Yêu cầu xây dựng các hàm: hàm tính tổng, hàm tính trừ, hàm tính nhân, hàm tính chia). 10. Xây dựng hàm viết chương trình nhập số nguyên dương n và in ra màn hình các ước số của n. 11. Viết chương trình nhập Họ tên, điểm Toán, điểm Lý, điểm Hóa của một sinh viên. Tính điểm trung bình và xuất ra kết quả. (Yêu cầu: Viết hàm nhập, xuất, tính trung bình). 12. Chương trình tính lương của nhân viên - Viết hàm nhập họ tên, quê quán, thâm niên công tác của một nhân viên. - Viết hàm tính lương dựa vào thâm niên công tác. - Viết hàm xuất họ tên, quê quán, thâm niên công tác và lương của nhân viên. 62
  67. - Viết chương trình nhập thông tin của nhân viên, tính lương và xuất thông tin của nhân viên (kể cả lương) ra màn hình bằng cách sử dụng ba hàm trên. 13. Viết chương trình bao gồm các hàm sau: - Hàm kiểm tra năm y cho trước có nhuận hay không. - Hàm xác định số ngày tối đa của tháng m trong năm y cho trước. 63
  68. LAB 6: LẬP TRÌNH ĐỆ QUY A. MỤC TIÊU Trang bị cho sinh viên ky ̃ năng lập trình cơ bản trong C++: + Hàm đệ quy + Viết chương trình sử dụng hàm đệ quy + Phát hiện và sửa lỗi B. NỘI DUNG Cấu trúc chung của hàm đệ qui Dạng thức chung của một chương trình đệ qui như sau: if (trường hợp suy biến) { trình bày cách giải // giả định đã có cách giải } else // trường hợp tổng quát { gọi lại hàm với tham số "bé" hơn } C. YÊU CẦ U PHẦ N CỨNG, PHẦ N MỀM Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB. Phần mềm C FREE 5.0. D. KẾT QUẢ SAU KHI HOÀN THÀNH Sinh viên thành thạo cách khai báo và định nghĩa hàm đệ quy, viết chương trình sử dụng hàm đệ quy áp dụng giải các bài tập từ đơn giản đến phức tạp. E. HƯỚNG DẪN CHI TIẾT 1. Viết chương trình sử dụng hàm đệ quy tính giai thừa của một số nguyên. Theo định nghĩa giai thừa ta có: 0! = 1 n! = 1.2.3 n Nếu n = 0 thì giai thừa bằng 1. Nếu n > 0 thì giai thừa sẽ là tích từ 1 đến n. Và không có giai thừa của số âm. Hướng dẫn: 64
  69. #include using namespace std; int GiaiThua(int n) { if (n == 1) return 1; else return (n * GiaiThua(n - 1)); } int main() { int n; while(true) { cout > n; //Nhap n nho hon 0 de thoat khoi vong lap if(n < 0) { cout << "So am khong co giai thua" << endl; break; } cout << " Giai thua cua " << n << " la: " << GiaiThua(n) << endl; } return 0; } Kết quả chạy chương trình: 2. Viết chương trình sử dụng hàm đệ qui để tính tích sau: 65
  70. 1 2 3 4 n Snn 1 1 1 1 Hướng dẫn: #include #include #include using namespace std; double bieuthuc(int); int main(int argc, char *argv[]) { int n; cout >n; cout #include #include using namespace std; float DeQuy(int n) 66
  71. { if(n==1) { return 1; } else return DeQuy(n-1)+1.0/n; } int main() { int n; cout >n; cout #include #include using namespace std; int KhuDeQuy(int n,int x) { float Tong=1; for(int i=1;i<=n;i++) 67
  72. { Tong*=x; } return Tong; } float DeQuy(int n,int x) { if(n==1) { return 1*x; } else return DeQuy(n-1,x)*x; } int main() { int n, x; cout >n; cout >x; cout<<"\nDe quy: "<<DeQuy(n,x); cout<<"\nKhu De quy:"<<KhuDeQuy(n,x); system("pause"); return 0; } Kết quả chạy chương trình: 5. Viết chương trình sử dụng hàm đệ qui để tính ước số lẻ lớn nhất của số nguyên n. 68
  73. Hướng dẫn: #include using namespace std; int UocSo(int n) { if(n%2!=0) return n; for(int i=n/2;i>=1;i ) { if(n%i==0&&i%2!=0) { return i; } } } int DeQuy(int n) { if(n%2!=0) return n; else return DeQuy(n/2); } int main() { int n; cout >n; cout<<"\nla"<<DeQuy(n); cout<<"\nla"<<UocSo(n); system("pause"); return 0; } Kết quả chạy chương trình: 69
  74. 6. Viết chương trình giải bất phương trình bậc nhất ax+b>0 theo yêu cầu: (Viết 1 hàm nhập các hệ số a, b; một hàm giải bất phương trình. Hàm main sử dụng các hàm đã viết và có thể chạy nhiều lần giải các bất phương trình khác nhau.) Hướng dẫn: #include #include #include void nhap(float &,float &); void giaibpt(float,float); int main() { float a,b; char c; do { nhap(a,b); giaibpt(a,b); fflush(stdin); cout >c; } while ((c=='c')||(c=='C')); } void nhap(float &a, float &b) { cout >a>>b; } void giaibpt(float a, float b) { 70
  75. if(a>0)cout " 0) cout #include using namespace std; void Tam_Giac(float a, float b,float c) { if((a*a==(b*b+c*c))||(b*b==(a*a+c*c))||(c*c==(a*a+b*b))) { if(a==b||a==c||b==c) cout<<"La tam giac vuong can.\n"; else cout<<"La tam giac vuong.\n"; } else { if(a==b||b==c||c==a) { if(a==b&&a==c&&c==a) cout<<"La tam giac deu.\n"; else 71
  76. cout >a; cout >b; cout >c; if(a+b<=c||a+c<=b||b+c<=a||a<=0||b<=0||c<=0) { system("cls"); cout<<"Tam giac khong hop le moi ban nhap lai.\n"; } } while(a+b<=c||a+c<=b||b+c<=a||a<=0||b<=0||c<=0); Tam_Giac(a,b,c); system("pause"); return 0; } Kết quả chạy chương trình: 72
  77. 8. Cho số n, viết chương trình sử dụng hàm tìm m nhỏ nhất sao cho (n using namespace std; int main() { double n,m; double S=0; cout >n; for(m=1;;m++) { S+=1.0/m; if(n #include 73
  78. using namespace std; void Name(int a,int b) { for(int i=a;i >a; cout >b; Name(a,b); system("pause"); return 0; } Kết quả chạy chương trình: F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 1. Sử dụng hàm đệ quy tìm chữ số có giá trị lớn nhất của số nguyên dương n. 2. Sử dụng đệ quy tìm chữ số đầu tiên của số nguyên dương n. 3. Sử dụng hàm đệ quy tìm dãy nhị phân dài nhất sao cho trên dãy này không có hai bộ k bất kỳ trùng nhau. Bộ k là dãy con có k số liên tiếp nhau trên dãy tìm được. Ví dụ: k = 3, kết quả: 000 101 110 0 4. Sử dụng hàm đệ quy tính P(x,y)=xy 5. Sử dụng hàm đệ quy tính tổng n số tự nhiên đầu tiên TONG(n) = 1 + 2 + + n. 6. Sử dụng hàm đệ quy tính tổng chẵn lẻ n số tự nhiên đầu tiên TONGCHANLE(n) nếu n chẵn thì TONGCHANLE(n)= 2+4+ +n, còn nếu n lẻ thì 74
  79. TONGCHANLE(n)= 1+3+ +n. 7. Sử dụng hàm đệ quy tính tích chẵn lẻ n số tự nhiên đầu tiên TICHCHANLE(n) nếu n chẵn thì TICHCHANLE(n)= 2 x 4 x x n, còn nếu n lẻ thì TICHCHANLE(n)= 1x3x xn. 8. Viết hàm tính tổng n phần tử đầu tiên của cấp số cộng bằng cách gọi đệ quy. 9. Viết hàm đệ quy giải bài toán tháp Hà Nội: cần chuyển n tầng tháp từ vị trí A sang vị trí B dùng vị trí C làm trung gian. Yêu cầu: Mỗi lần chỉ chuyển 1 tầng, chỉ được dùng các vị trí A, B, C để đặt các tầng tháp, không được đặt tầng lớn lên trên tầng nhỏ. 10. Nhập vào số nguyên n viết hàm trả về tổng của các chữ số đó. 75