Bài tập lập trình Cplus

pdf 77 trang ngocly 2230
Bạn đang xem 20 trang mẫu của tài liệu "Bài tập lập trình Cplus", để 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:

  • pdfbai_tap_lap_trinh_cplus.pdf

Nội dung text: Bài tập lập trình Cplus

  1. BÀI TẬP LẬP TRÌNH CPLUS
  2. Bài 1. Viế t ch ươ ng trình nh ậ p t ừ bàn phím n s ố nguyên d ươ ng nh ỏ h ơ n 100, in ra màn hình hai cộ t song song, m ộ t c ộ t là các s ố , còn c ộ t kia là t ổ ng c ủ a các ch ữ s ố t ươ ng ứ ng ở c ộ t th ứ nhấ t. Tìm và in ra s ốổủ có t ng c a các ch ữốớấế s là l n nh t, n u có nhi ềơộốưậ u h n m t s nh v y thì in số đ ầ u tiên. Bài 2. Mộ t ng ườ i g ử i ti ế t ki ệ m a đ ồ ng v ớ i lãi su ấ t s% m ộ t tháng (tính lãi hàng tháng). Vi ệ t mộ t ch ươ ng trình tính và in ra màn hình hai c ộ t song song, c ộ t th ứ nh ấ t là s ố tháng đã g ử i, c ộ t thứổốềảố hai t ng s ti n (c v n và lãi) ứớố ng v i s tháng ởộứấ c t th nh t cho m ộảờ t kho ng th i gian từ 1 đ ế n t tháng, v ớ i a, s, t đ ượ c nh ậ p t ừ bàn phím. Bài 3. Mộ t ng ườ i g ử i ti ế t ki ệ m à đ ồ ng v ớ i lãi su ấ t là s% m ộ t tháng trong kỳ h ạ n 6 tháng (6 tháng tính lãi mộ t l ầ n). Vi ế t ch ươ ng trình tính và in ra màn hình hai c ộ t song song, c ộ t th ứ nhấố t là s tháng đã g ửộứ i, c t th hai là t ổềảố ng ti n (c v n và lãi) ứớố ng v i s tháng ởộứ c t th nhấ t cho m ộ t kho ả ng th ờ i gian t ừ 6 tháng đ ế n t tháng, v ớ i a, s, và t đ ượ c nh ậ p t ừ bàn phím. (Biế t r ằ ng n ế u lĩnh không ch ắ n kỳ nào thì không đ ượ c tính lãi kỳ ấ y). Bài 4. Cho x là mộ t s ố th ự c, hãy xây d ự ng hàm tính và in ra màn hình hai c ộ t song song, c ộ t thứấ nh t là giá tr ịủốốộứ c a đ i s , c t th hai là giá tr ịủ c a hàm f ứớốốởộứấ ng v i đ i s c t th nh t: Sau đó, viế t m ộ t ch ươ ng trình nh ạ p t ừ bán phím m ộ t m ả ng g ồ m n s ố th ự c, và g ọ i hàm đã l ậ p đượ c ở trên v ớ i đ ố i s ố là các s ố v ừ a nh ậ p. Bài 5. Viế t ch ươ ng trình tính và in ra màn hình s ố ti ề n đi ệ n tháng 10/99 c ủ a n khách hàng theo các chỉ s ố trên đ ồ ng h ồ đi ệ n c ủ a tháng 9 và c ủ a tháng 10 đ ượ c nh ậ p vào t ừ bàn phím (ph ả i kiể m tra đ ể đ ả m b ả o r ằ ng ch ỉ s ố c ủ a tháng sau ph ả i l ớ n h ơ n ch ỉ s ố c ủ a các tháng tr ướ c). Biếằ t r ng: 50 s ốầề đ u ti n giá 500 đ ồốốế ng/s , 100 s ti p theo giá 800 đ ồốốế ng/s , 100 s ti p theo nữ a giá 1000 đ ồốốế ng/s , 100 s ti p theo n ữ a giá 1200 đ ồốừốứở ng/s , và t s th 351 tr đi giá 1500 đồ ng/s ố . Bài 6. Viế t m ộ t ch ươ ng trình nh ậ p vào t ừ bàn phím đi ể m ki ể m tra c ủ a m ộ t môn h ọ c c ủ a n họ c sinh và in k ế t qu ả ra màn hình d ướ i d ạ ng hai c ộ t song song, m ộ t c ộ t là đi ể m và c ộ t th ứ hai là xế p lo ạ i theo đi ể m v ớ i các qui đ ị nh sau: Dướ i 5: Y ế u Từ 5 đ ế n d ướ i 7: Trung bình Từ 7 đ ế n d ướ i 9: Khá Từ 9 tr ở lên: Gi ỏ i Bài 7. Viế t ch ươ ng trình gi ả i ph ươ ng trình b ậ c hai ax2+bx+c=0 v ớ i a, b, c b ấ t kỳ đ ượ c nh ậ p vào từ bàn phím. In ra màn hình ph ươ ng trình b ậ c hai v ớ i các h ệ s ố đã nh ậ p, giá tr ị c ủ a delta và các nghiệ m th ứ c c ủ a nó (n ế u c ố ), ng ươ cij l ạ i thì in là không có nghi ệ m th ự c. Bài 8. Năm 1999, dân số n ướ c ta là 76 tri ệ u ng ườ i, t ỷ l ệ tăng t ự nhiên là k% m ộ t năm. L ậ p mộ t ch ươ ng trình in ra màn hình hai c ộ t song song, c ộ t th ứ nh ấ t là năm, c ộ t th ứ hai là dân s ố củ a năm t ươ ng ứ ng ở c ộ t m ộ t cho đ ế n khi dân s ố tăng s l ầ n so v ớ i năm 1999. Các s ố k và s
  3. đượ c nh ậ p vào t ừ bàn phím. Bài 9. Viế t ch ươ ng trình gi ả i b ấ t ph ươ ng trình b ậ n hai v ớ i a, b, c b ấ t kỳ đ ượ c nh ậ p t ừ bàn phím: ax2+bx+c>0 . In ra màn hình bấ t ph ươ ng trình v ớ i các h ệ s ố đã nh ậ p, giá tr ị c ủ a delta và các nghiệ m th ự c c ủ a b ấ t ph ươ ng trình. Bài 10. Xây dự ng m ộ t hàm s ắ p x ế p thep th ứ t ự tăng dầ n mộ t m ả ng g ồ m n s ố th ự c. Vi ế t chươ ng trình đ ể nh ậ p n s ố th ự c t ừ bàn phím, s ử d ụ ng hàm s ắ p x ế p nói trên, và in ra màn hình hai cộ t song song, m ộ t c ộ t là m ả ng ch ư a s ắ p x ế p, m ộ t c ộ t là m ả ng đã đ ượ c s ắ p x ế p. Bài 11. Xây dự ng m ộ t hàm s ắ p x ế p thep th ứ t ự giả m d ầ n mộ t m ả ng g ồ m n s ố th ự c. Vi ế t chươ ng trình đ ể nh ậ p n s ố th ự c t ừ bàn phím, s ử d ụ ng hàm s ắ p x ế p nói trên, và in ra màn hình hai cộ t song song, m ộ t c ộ t là m ả ng ch ư a s ắ p x ế p, m ộ t c ộ t là m ả ng đã đ ượ c s ắ p x ế p. Bài 12. Cho F là mộ t s ố th ự c l ớ n h ơ n 2, và S=1/2+1/3+ +1/n. Hãy xây d ự ng m ộ t hàm đ ể tìm giá trị l ớ n nh ấ t c ủ a n sao cho S<=F. Vi ế t m ộ t ch ươ ng trình đ ể nh ậ p vào t ừ bàn phím m s ố thự c Fi, s ử d ụ ng hàm nói trên đ ố i v ớ i các hàm Fi đã nh ậ p và in ra màn hình thành ba c ộ t song song: các giá trị c ủ a Fi, n, và S t ươ ng ứ ng. Bài 13. Cho F là mộ t s ố th ự c l ớ n h ơ n 2, và S=1/2+1/3+ +1/n. Hãy xây d ự ng m ộ t hàm đ ể tìm giá trị nh ỏ nh ấ t c ủ a n sao cho S<=F. Vi ế t m ộ t ch ươ ng trình đ ể nh ậ p vào t ừ bàn phím m s ố thự c Fi, s ử d ụ ng hàm nói trên đ ố i v ớ i các hàm Fi đã nh ậ p và in ra màn hình thành ba c ộ t song song: các giá trị c ủ a Fi, n, và S t ươ ng ứ ng. Bài 14. Xây dự ng m ộ t hàm tính giá tr ị trung bình c ủ a n s ố th ự c. (Giá tr ị trung bình c ủ a m ộ t dãy số đ ượ c cho b ằ ng công th ứ c: ). Sử d ụ ng hàm nói trên đ ể vi ế t ch ươ ng trình nh ậ p n s ố th ự c t ừ bàn phím và in ra màn hình c ộ t số đã nh ậ p, t ổ ng, giá tr ị trung bình c ủ a chúng. Bài 15. Xây dự ng m ộ t hàm tính giá tr ị trung bình c ủ a n s ố th ự c. (Đ ộ lêcnh chu ẩ n c ủ a dãy s ố đượ c cho b ằ ng công th ứ c: , vớ i ). Sử d ụ ng hàm nói trên đ ể vi ế t ch ươ ng trình nh ậ p n s ố th ự c t ừ bàn phím và in ra màn hình c ộ t số đã nh ậ p, t ổ ng, giá tr ị trung bình và đ ộ l ệ ch chu ẩ n c ủ a chúng. Bài 16. Hãy xây dự ng m ộ t hàm đ ể nh ậ p t ừ bàn phím m ộ t m ả ng s ố th ự c. Vi ế t m ộ t ch ươ ng trình sử d ụ ng hàm đã xây d ự ng đ ượ c ở trên đ ể nh ậ p s ố li ệ u cho hai m ả ng s ố th ự c, m ộ t m ả ng có n phẩ n t ử , và m ộ t m ả ng có m ph ầ n t ử , in ra màn hình hai c ộ t song song, m ỗ i c ộ t là m ộ t mảớố ng v i ô cu i cùng là t ổủ ng c a các ph ầử n t trong m ả ng, và cu ỗ i cùng là t ổủ ng c a hai mả ng. Bài 17. Hãy xây dự ng m ộ t hàm đ ể nh ậ p t ừ bàn phím m ộ t m ả ng s ố th ự c. Vi ế t m ộ t ch ươ ng trình sử d ụ ng hàm đã xây d ự ng đ ượ c ở trên đ ể nh ậ p s ố li ệ u cho hai m ả ng s ố th ự c, m ộ t m ả ng có n phẩ n t ử , và m ộ t m ả ng có m ph ầ n t ử , in ra màn hình ba c ộ t song song, hai c ộ t đ ầ u là hai mả ng đã nh ậộứổủ p, c t th ba t ng c a hai c ộầ t đ u, dòng cu ỗ i cùng c ủảộổủ a c ba c t là t ng c a các phầ n t ử trong c ộ t.
  4. Bài 18. Cho tuổ i và s ố con c ủ a n ph ụ n ữ trong đ ộ tu ổ i 15-49, hãy xây d ự ng m ộ t hàm tính và in bả n phân b ố c ủ a các ph ụ n ữ này theo nhóm 5 tu ổ i. Vi ế t ch ươ ng trình đ ể nh ậ p tu ổ i và s ố con củụữộổ a n ph n trong đ tu i 15-49, sau đó s ửụ d ng hàm đã xây d ựởểả ng trên đ in b ng phân b ố theo tuổ i. Bài 19. Cho tuổ i và s ố con c ủ a n ph ụ n ữ trong đ ộ tu ổ i 15-49, hãy xây d ự ng m ộ t hàm tính và in bả n phân b ố c ủ a các ph ụ n ữ này theo nhóm 5 tu ổ i. Vi ế t ch ươ ng trình đ ể nh ậ p tu ổ i và s ố con củụữộổ a n ph n trogn đ tu i 15-49, sau đó s ửụ d ng hàm đã xây d ựởểả ng trên đ in b ng phân b ố số con c ủ a các ph ụ n ữ này theo tuổ i. Bài 20. Cho mộ t xây b ấ t kỳ, không s ử d ụ ng các hàm th ư vi ệ n v ề xâu, hãy xây d ự ng m ộ t hàm đổ i t ấ t c ả các chữ th ườ ng thành chữ hoa (các ký tự khác gi ữ nguyên) và in c ả hai ra màn hình. Viế t m ộ t ch ươ ng trình nh ậ p m ộ t xây b ấ t kỳ t ừ bàn phím, sau đó s ử d ụ ng hàm đã xây dự ng ở trên đ ể in k ế t qu ả ra màn hình. Bài 21. Cho mộ t xây b ấ t kỳ, không s ử d ụ ng các hàm th ư vi ệ n v ề xâu, hãy xây d ự ng m ộ t hàm đổ i t ấ t c ả các chữ hoa thành chữ th ườ ng (các ký tự khác gi ữ nguyên) và in c ả hai ra màn hình. Viế t m ộ t ch ươ ng trình nh ậ p m ộ t xây b ấ t kỳ t ừ bàn phím, sau đó s ử d ụ ng hàm đã xây dự ng ở trên đ ể in k ế t qu ả ra màn hình. Bài 22. Cho mộ t xây b ấ t kỳ, không s ử d ụ ng cac shamf th ư vi ệ n v ề xâu, hãy xây d ự ng m ộ t hàm đổ i t ấ t c ả các chữ hoa củ a xây thành chữ th ườ ng, và ngượ c l ạ i, đ ổ i các chữ th ườ ng củ a xâu thành chữ hoa (các chữ khác gi ữ nguyên) và in c ả hai ra màn hình. Vi ế t m ộ t ch ươ ng trình nhậ p m ộ t xâu b ấ t kỳ t ừ bàn phím, sau đó s ử d ụ ng hàm đã xây d ự ng ở trên đê in k ế t qu ả ra màn hình. Bài 23. Cho cấ u trúc: Code: struc thisinh{ int sbd; //Số báo danh char hoten[25]; //Họ và tên float m1,m2,m3l //Điể m ba môn thi float tong; //Tổ ng đi ể m ba môn } danhsach[100]; Hãy xây dự ng m ộ t hàm đ ể nh ậ p s ố li ệ u cho n thí sinh. Sau đó vi ế t m ộ t ch ươ ng trình s ử d ụ ng hàm nói trên để nh ậ p s ố li ệ u và in b ả ng đi ể m c ủ a các thí sinh này theo d ạ ng ba c ộ t: S ố báo danh, Họ tên, T ổ ng đi ể m. Bài 24. Cho mộ t xây b ấ t, hãy xây d ự ng m ộ t hàm đ ể s ử a các l ỗ i chính t ả không viế t hoa đ ầ u câu trong xâu này, in ra xâu chư a s ử a và xâu đã s ử a. Sau đó vi ế t m ộ t ch ươ ng trình đ ể nh ậ p mộ t xâu và s ử d ụ ng hàm nói trên đ ể s ử a l ỗ i. Bài 25. Cho cấ u trúc: Code: struc dienthoai{
  5. int sdt; //Số đi ệ n tho ạ i char hoten[25]; //Họ và tên float sotien; //Số ti ề n ph ả i n ộ p } thuebao[100]; Hãy xây dự ng m ộ t hàm đ ể nh ậ p s ố li ệ u cho n thuê bao. Sau đó vi ế t m ộ t ch ươ ng trình s ử dụ ng hàm nói trên đ ểậốệ nh p s li u và in b ảốềảộủ ng s ti n ph i n p c a các thuê bao theo d ạ ng ba cộ t: H ọ tên, s ố đi ệ n tho ạ i, s ố ti ề n ph ả i n ộ p. Bài 26. Hãy xây dự ng m ộ t hàm in ra màn hình n ộ i dung m ộ t t ệ p văn b ả n b ấ t kỳ (có d ự ng l ạ i sau mỗ i trang màn hình). Sau đó, vi ế t m ộ t ch ươ ng trình đ ể nh ậ p vào t ừ bàn phím tên c ủ a m ộ t tệ p văn b ả n và s ử d ụ ng hàm nói trên đ ể in n ộ i dung c ủ a t ệ p này ra màn hình. Bài 27. Cho tuổ i và trình đ ộ văn hóa (0-4) c ủ a n ng ườ i, hãy xây d ự ng m ộ t hàm in b ả n phân b ố củ a s ố ng ườ i này theo nhóm 5 tu ổ i và trình đ ộ văn hóa. Sau đó, vi ế t m ộ t ch ươ ng trình đ ể nhậ p tu ổ i và trình đ ộ văn hóa c ủ a n ng ườ i, s ử d ụ ng hàm nói trên đ ể in k ế t qu ả ra màn hình. Bài 28. Viế t m ộ t ch ươ ng trình đ ể nh ậ p tu ổ i và trình đ ộ văn hóa (0-4) c ủ a n ng ườ i, sau đó ghi các số li ệ u này lên m ộ t t ệ p mode văn b ả n. Bài 29. Cho mộ t xâu b ấ t kỳ, hãy xây d ự ng m ộ t hàm đ ể s ử a các l ỗ i chính t ả không có dấ u cách sau dấ u ph ả y và sau d ấ u ch ấ m, in ra màn hình xâu chư a s ử a và xâu đã s ử a. Sau đó vi ế t chươ ng trình đ ể nh ậ p m ộ t xâu b ấ t kỳ và s ử d ụ ng hàm nói trên đ ể s ử a l ỗ i. Bài 30. Cho mộ t xâu b ấ t kỳ, hãy xây d ự ng m ộ t hàm đ ể s ử a các l ỗ i chính t ả không có dấ u cách giữ a các t ừ, in ra xâu gố c và xâu đã s ử a. Sau đó vi ế t m ộ t ch ươ ng trình đ ể nh ậ p m ộ t xâu ký tự b ấ t kỳ và s ử d ụ ng hàm nói trên đ ể s ử a l ỗ i. Bài 31. Cho mộ t xâu b ấ t kỳ, hãy xây d ự ng m ộ t hàm đ ể viế t hoa ch ữ cái đ ầ u tiên c ủ a t ấ t c ả các từ trong xâu đã cho, in ra xâu gố c và xâu đã s ử a. Sau đó vi ế t m ộ t ch ươ ng trình đ ể nh ậ p mộ t xâu ký t ự b ấ t kỳ và s ử d ụ ng hàm nói trên đ ể s ử a l ỗ i. Bài 32. Cho cấ u trúc: Code: struc tiendien{ char hoten[25]; //Họ và tên float csc,csm; //Chỉ s ố cũ, ch ỉ s ố m ớ i float dg; //Đơ n giá/Kw float tong; //Tổ ng ti ề n ph ả i n ộ p } danhsach[100]; Hãy xây dự ng m ộ t hàm đ ể nh ậ p s ố li ệ u cho n h ộ s ử d ụ ng đi ệ n. Sau đó, vi ế t m ộ t ch ươ ng trình sửụ d ng hàm nói trên đ ểậốệ nh p s li u và in b ả ng tính ti ềửụệạủ n s d ng đi n tho i c a các hộ này theo d ạ ng hai c ộ t: H ọ tên, s ố đi ệ n tiêu th ụ , T ổ ng s ố ti ề n. Bài 33. Hãy xây dựộ ng m t hàm đ ểậừ nh p t bàn phím m ộả t m ng các s ốựếư th c. Vi t ch ng trình sửụ d ng hàm nói trên đ ểậốệ nh p s li u cho hai m ảốự ng s th c cùng có n ph ầử n t , in ra màn hình ba cộ t song song, hai c ộầ t đ u là hai m ả ng đã nh ậộứệủộầ p, còn c t th ba là hi u c a hai c t đ u,
  6. dòng cuố i cùng c ủ a c ả ba c ộ t là t ỏ ng c ủ a các ph ầ n t ử trong c ộ t. Bài 34. Cho F là mộ t s ố th ự c l ớ n h ơ n 2, và , vớ i x là m ộ t s ố nguyên d ươ ng b ấ t kỳ. Hãy xây dự ng m ộ t hàm đ ể tìm giá tr ị lớ n nh ấ t củ a n sao cho S<=F, in ra màn hình các giá tr ị c ủ a x, F, S và n. Viế t m ộ t ch ươ ng trình đ ể nh ậ p vào t ừ bàn phím s ố th ự c F, s ố nguyên d ươ ng x và sử d ụ ng hàm nói trên đ ố i v ớ i các giá tr ị đã nh ậ p đ ể in k ế t qu ả ra màn hình. Bài 35. Cho F là mộ t s ố th ự c l ớ n h ơ n 2, và , vớ i x là m ộ t s ố nguyên d ươ ng b ấ t kỳ. Hãy xây dự ng m ộ t hàm đ ể tìm giá tr ị nhỏ nh ấ t củ a n sao cho S<=F, in ra màn hình các giá tr ị c ủ a x, F, S và n. Viế t m ộ t ch ươ ng trình đ ể nh ậ p vào t ừ bàn phím s ố th ự c F, s ố nguyên d ươ ng x và sử d ụ ng hàm nói trên đ ố i v ớ i các giá tr ị đã nh ậ p đ ể in k ế t qu ả ra màn hình. Bài 36. Hãy xây dự ng m ộ t hàm đ ể nh ậ p t ừ bán phím m ộ t m ả ng cac s ố th ự c. Vi ế t ch ươ ng trình sửụ d ng hàm nói trên đ ểậốệ nh p s li u cho hai m ảốự ng s th c cùng có n ph ầử n t , in ra màn hình ba cộ t song song, hai c ộ t đ ầ u là hai m ả ng đã nh ậ p, c ộ t th ứ ba là tích c ủ a hai c ộ t đ ầ u, dòng cuỗ i cùng c ủ a c ả ba c ộ t là t ổ ng các ph ầ n t ử trong c ộ t. Bài 37. Viế t m ộ t ch ươ ng trình đ ể nh ậ p s ố báo danh, h ọ tên và đi ể m thi ba môn Toán, Lý, Hóa củ a n thí sinh, sau đó ghi các s ố li ệ u này lên m ộ t t ệ p ở mode văn b ả n. Bài 38. Hãy xây dự ng m ộ t hàm in ra mnaf hình n ộ i dung c ủ a m ộ t t ệ p văn b ả n b ấ t kỳ theo dạ ng trang màn hình có đánh s ố trang. Sau đó, vi ế t m ộ t ch ươ ng trình đ ể nh ậ p t ừ bàn phím tên củ a m ộ t t ệ p văn b ả n và s ử d ụ ng hàm nói trên đ ể in n ộ i dung c ủ a t ệ p này ra màn hình. Bài 39. Hãy xây dự ng m ộ t hàm in ra mnafh ình n ộ i dung c ủ a m ộ t t ệ p văn b ả n b ấ t kỳ theo dạ ng trang màn hình, ở dòng đ ầ u c ủ a m ỗ i trang có đánh s ố trang ở góc bên ph ả i và tên t ệ p góc trái. Sau đó, viế t m ộ t ch ươ ng trình đ ể nh ậ p t ừ bàn phím tên c ủ a m ộ t t ệ p văn b ả n và s ử dụ ng hàm nói trên đ ể in n ộ i dung c ủ a t ệ p này ra màn hình. Bài 40. Cho cấ u trúc Code: struc thisinh{ int sbd; //Số báo danh char hoten[25]; //Họ và tên float m1,m2,m3l //Điể m ba môn thi float tong; //Tổ ng đi ể m ba môn } danhsach[100]; Viế t ch ươ ng trình (có s ử d ụ ng các hàm) đ ể thêm và b ớ t các thí sinh theo th ứ t ự gi ả m d ầ n c ủ a tổ ng đi ể m, và in ra mnaf hình danh sách đã s ắ p.
  7. Trích: tuananhk43 Bài 1. Viế t ch ươ ng trình nh ậ p t ừ bàn phím n s ố nguyên d ươ ng nh ỏ h ơ n 100, in ra màn hình hai cộ t song song, m ộ t c ộ t là các s ố , còn c ộ t kia là t ổ ng c ủ a các ch ữ s ố t ươ ng ứ ng ở c ộ t th ứ nh ấ t. Tìm và in ra sốổủ có t ng c a các ch ữốớấế s là l n nh t, n u có nhi ềơộốưậ u h n m t s nh v y thì in s ố đầ u tiên. Code: #include #include #include //Ham tinh tong cac chu so //Vd n=15 thi tra ve gia tri la 6 int tong(int n){ int a,b; a=(int)n/10; b=n-a*10; return a+b; } //Ham nhap cac gia tri cho mot mang void nhap(int *a,int n){ for (int i=0;i >a[i]; } } //Ham in cac gia tri thanh hai cot void in(int *a,int n){ int tong1=0, tong2=0; int max; //Dung de tinh gia tri lon nhat cua tong int val; cout<<setw(15)<<"STT"<<setw(15)<<"Tong"<<"\n"; max=tong(a[1]); for(int i=0;i<n;i++){ cout<<setw(15)<<a[i]<<setw(15)<<tong(a[i])<<"\n"; if (max<tong(a[i])) { max=tong(a[i]); val=a[i]; } } cout<<" \n"; cout<<setw(15)<<val<<setw(15)<<max<<"\n"; }
  8. int main(){ //clrscr(); int n; int a[100]; cout >n; nhap(a,n); in(a,n); //getch(); } Đáp án Bài 2. Mộ t ng ườ i g ử i ti ế t ki ệ m a đ ồ ng v ớ i lãi su ấ t s% m ộ t tháng (tính lãi hàng tháng). Việ t m ộ t ch ươ ng trình tính và in ra màn hình hai c ộ t song song, c ộ t th ứ nh ấ t là s ố tháng đã gửộứổốềảố i, c t th hai t ng s ti n (c v n và lãi) ứớố ng v i s tháng ởộứấ c t th nh t cho m ộ t kho ả ng thờ i gian t ừ 1 đ ế n t tháng, v ớ i a, s, t đ ượ c nh ậ p t ừ bàn phím. Code: #include #include void main(){ float a, s, kq; int t; cout >a; cout >s; cout >t; kq = a; cout<<"+ + +"<<endl <<"| T | Tien von va lai |"<<endl <<"+ + +"<<endl; for(int i=1; i<=t; i++){ kq *= (1+s/100); cout<<"|"<<setw(2)<<i<<" |" <<setw(17)<<setprecision(2)<<setiosflags(ios::showpoint | ios::fixed) <<kq <<"|"<<endl; } cout<<"+ + +"<<endl; } khi nhậ p lãi xu ấ t, n ế u lãi xu ấ t là 0,7 % / tháng thì hãy nh ậ p 0.7 (ch ứ không ph ả i nh ậ p là 0.007) khi đó sau mỗ i tháng ti ề n lãi và v ố n s ẽ = ti ề n tháng tr ướ c + ti ề n tháng tr ướ c x lãi su ấ t đó chính là công thứ c trên: kq *= (1 + s/100)
  9. Bài 3. Mộ t ng ườ i g ử i ti ế t ki ệ m à đ ồ ng v ớ i lãi su ấ t là s% m ộ t tháng trong kỳ h ạ n 6 tháng (6 tháng tính lãi mộ t l ầ n). Vi ế t ch ươ ng trình tính và in ra màn hình hai c ộ t song song, c ộ t th ứ nh ấ t là số tháng đã g ửộứ i, c t th hai là t ổềảố ng ti n (c v n và lãi) ứớố ng v i s tháng ởộứấ c t th nh t cho mộ t kho ả ng th ờ i gian t ừ 6 tháng đ ế n t tháng, v ớ i a, s, và t đ ượ c nh ậ p t ừ bàn phím. (Bi ế t r ằ ng nế u lĩnh không ch ắ n kỳ nào thì không đ ượ c tính lãi kỳ ấ y). Code: #include #include void main(){ float a, s, kq; int t; cout >a; cout >s; cout >t; kq = a; cout #include #include const float PI=4.1415;
  10. //Ham nhap mang cac so thuc void nhapMang(float *a,char *name, int n){ for (int i=0; i >a[i]; } } //Ham tinh gia tri cua ham F theo cong thuc //Neu X 2 thi F(X)=(x*x-sin(x*x*PI)) float f(float x) { if (x >n; //Goi ham nhap mang nhapMang(a,"a",n); //Dinh dang hien thi so thuc cout<<setiosflags(ios::showpoint|ios::fixed); cout<<setprecision(2); //In gia tri cua mang tuong ung voi gia tri ham F(X) //Hien thi hai cot song song cout<<"+ + +"<<endl <<"| X | F(X) |"<<endl <<"+ + +"<<endl; for(int i=0; i<n; i++) { cout<<"|"<<setw(10)<<a[i]<<" |"; cout<<setw(17)<<f(a[i])<<"|"<<endl; } cout<<"+ + +"<<endl; } Bài 5. Viế t ch ươ ng trình tính và in ra màn hình s ố ti ề n đi ệ n tháng 10/99 c ủ a n khách hàng theo các chỉ s ố trên đ ồ ng h ồ đi ệ n c ủ a tháng 9 và c ủ a tháng 10 đ ượ c nh ậ p vào t ừ bàn phím (ph ả i kiể m tra đ ể đ ả m b ả o r ằ ng ch ỉ s ố c ủ a tháng sau ph ả i l ớ n h ơ n ch ỉ s ố c ủ a các tháng tr ướ c). Biếằ t r ng: 50 s ốầề đ u ti n giá 500 đ ồốốế ng/s , 100 s ti p theo giá 800 đ ồốốế ng/s , 100 s ti p theo nữ a giá 1000 đ ồốốế ng/s , 100 s ti p theo n ữ a giá 1200 đ ồốừốứở ng/s , và t s th 351 tr đi giá 1500 đồ ng/s ố .
  11. Sử a đ ầ u bài 1 tý cho đ ơ n gi ả n: nhậ p s ố l ượ ng đi ệ n tiêu th ụ , tính s ố ti ề n ph ả i tr ả theo đ ơ n giá trên (chư a có thu ế VAT), VAT =10% Code: /*đơ n giá: từ s ố : đ ơ n giá 0-50: 500 51-150: 800 151-250: 1000 251-351: 1200 351 - : 1500 */ #include #include void main(){ int n; float t=0; cout >n; if(n>350)t+=(n-=350)*1500.0; if(n>250)t+=(n-=250)*1200.0; if(n>150)t+=(n-=150)*1000.0; if(n> 50)t+=(n-= 50)* 800.0; if(n> 0)t+=(n )* 500.0; cout #include void main(void) { float a,b; cout<<"Nhap 2 he so cua pt bac nhat:";
  12. cin>>a>>b; if(a!=0) cout #include #include void main(void) { float a,b,c,d,x1,x2; cout >a>>b>>c; d=b*b-4*a*c; if(d>=0){ x1=(-b-sqrt(d))/(2*a); x1=(-b+sqrt(d))/(2*a); cout<<"pt co 2 nghiem thuc"<<endl <<"nghiem thuc 1="<<x1<<endl <<"nghiem thuc 2="<<x2; } else{ cout<<"pt k co nghiem thuc"<<endl <<"pt co 2 nghiem phuc lien hop"<<endl; float thuc,ao; thuc=-b/2/a; ao=sqrt(-d)/2/a; cout<<"nghiem ao 1="<<thuc<<"-i"<<ao<<endl; <<"nghiem ao 2="<<thuc<<"+i"<<ao<<endl; } } Các bạậụếứủ n hãy v n d ng ki n th c c a mình đ ểếợ k t h p thành 1 bài hoàn ch ỉủ nh đ theo đúng nghĩa vớ i a, b, c b ấ t kỳ Bài 8. Năm 1999, dân số n ướ c ta là 76 tri ệ u ng ườ i, t ỷ l ệ tăng t ự nhiên là k% m ộ t năm. L ậ p mộ t ch ươ ng trình in ra màn hình hai c ộ t song song, c ộ t th ứ nh ấ t là năm, c ộ t th ứ hai là dân s ố củ a năm t ươ ng ứ ng ở c ộ t m ộ t cho đ ế n khi dân s ố tăng s l ầ n so v ớ i năm 1999. Các s ố k và s đượ c nh ậ p vào t ừ bàn phím. Giả i: Code:
  13. #include #include #include #include void main(void) { clrscr(); int k; //% tang dan so hang nam float s;//So lan tang cout >k; cout >s; long dansocu=76000000,dansomoi; dansomoi=dansocu; int nam=1999; //Thiet lap dinh dang cout #include #include #include void NhapMang(float a[],float b[],int n) { cout >a[i]; b[i]=a[i]; } } void InMang(float a[],float b[],int n) { cout<<setw(10)<<"TT"; cout<<setw(20)<<"Mang chua sap xep"; cout<<setw(20)<<"Mang da sap xep";
  14. cout a[j]) { float tg; tg=a[i]; a[i]=a[j]; a[j]=tg; } } void main(void) { clrscr(); float a[100],b[100]; int n; cout >n; NhapMang(a,b,n); SapXep(b,n); //Thiet lap dinh dang cout #include #include #include void NhapMang(float a[],float b[],int n) { cout >a[i]; b[i]=a[i]; } }
  15. void InMang(float a[],float b[],int n) { cout >n; NhapMang(a,b,n); SapXep(b,n); //Thiet lap dinh dang cout #include #include #include int max(double f, double &s) { int i=1;
  16. s=0; while(s >n; for(i=0;i >f[i]; } //Thiet lap dinh dang cout //khai bao thu vien su dung luong nhap xuat #include //thu vien dinh dang nhap xuat #include //thu vien cac ham toan hoc #include //thu vien cung cap cac ham ve man hinh, ban phim void NhapMang(float a[], int n){ cout > a[i]; //nhap gia tri tu ban phim cho phan tu thu i } //ket thuc vong lap
  17. } //ket thuc ham NhapMang void InMang(float a[], int n){ //Thiet lap dinh dang cout > n; //nhap gia tri cho bien n tu ban phim NhapMang(a,n); //nhap n gia tri cho tung phan tu cua mang cout a[j]){ float tg = a[i]; a[i] = a[j]; a[j] = tg; } } Còn sắ p x ế p gi ả m d ầ n s ẽ là: Code:
  18. void SapXep(float a[], int n){ //Sap xep tăng dầ n for(int i = 0; i //khai bao thu vien su dung luong nhap xuat #include //thu vien dinh dang nhap xuat #include //thu vien cac ham toan hoc #include //thu vien cung cap cac ham ve man hinh, ban phim void NhapMang(float a[], int &n){ // n là tham chiế u cout > n; //nhap gia tri cho bien n tu ban phim cout > a[i]; //nhap gia tri tu ban phim cho phan tu thu i } //ket thuc vong lap } //ket thuc ham NhapMang void InMang(float a[], int n){ //Thiet lap dinh dang cout << setiosflags(ios::showpoint|ios::fixed); cout << setprecision(2); //in tung phan tu cua mang, cach nhau boi dau cach (space) for (int i = 0; i < n; i++)cout << a[i] << " "; cout << endl; } void SapXep(float a[], int n){ //Sap xep giam dan for(int i = 0; i < n-1; i++) for(int j = i+1; j<n; j++) if (a[i] < a[j]){ float tg = a[i]; a[i] = a[j]; a[j] = tg; } }
  19. void main(void) { clrscr(); //xoa man hinh float a[100]; //khai bao bien mang a co 100 phan tu số th ự c int n; //khai bao bien n luu so luong phan tu trong mang NhapMang(a,n); //nhap số l ượ ng n và gia tri cho tung phan tu cua mang cout > n; //nhap gia tri cho bien n tu ban phim cout > a[i]; //nhap gia tri tu ban phim cho phan tu thu i } //ket thuc vong lap } //ket thuc ham NhapMang Cách 2: Sử d ụ ng con tr ỏ nh ư là bi ế n m ả ng Code: void NhapMang(float *a, int &n){ cout > n; //nhap gia tri cho bien n tu ban phim cout > *(a+i); //nhap gia tri tu ban phim cho phan tu thu i } //ket thuc vong lap } //ket thuc ham NhapMang Ở đây a đ ượ c hi ể u là đ ị a ch ỉ c ủ a đ ầ u m ả ng, t ươ ng đ ươ ng v ớ i a[0] và (a+i) là đị a ch ỉ c ủ a ph ầ n t ử th ứ i trong m ả ng Cách 3: Kế t h ợ p 2 ki ể u trên
  20. Code: void NhapMang(float *a, int &n){ cout > n; //nhap gia tri cho bien n tu ban phim cout > a[i]; //nhap gia tri tu ban phim cho phan tu thu i } //ket thuc vong lap } //ket thuc ham NhapMang Cách sử d ụ ng: Hàm nhậ p m ả ng v ớ i 3 cách trên đ ề u có th ể đ ượ c s ử d ụ ng vào bài 11 chế v ớ i bài giả i l ầ n 2 ở trên Câu hỏ i: Nế u đ ề bài là Nhậ p n ph ầ n t ử số nguyên từ bàn phím thì chúng ta sẽ thay đ ổ i chỗ nào trong 3 hàm trên? Đề bài: Nhậ p m ả ng n ph ầ n t ử s ố nguyên t ừ bàn phím a0) Liệ t kê các s ố ch ẵ n có trong m ả ng b0) Đế m các s ố ch ẵ n có trong m ả ng c0) Tính tổ ng các s ố ch ẵ n có trong m ả ng a1) Liệ t kê các s ố nguyên t ố có trong m ả ng b1) Đế m các s ố nguyên t ố có trong m ả ng c1) Tính tổ ng các s ố nguyên t ố có trong m ả ng Phân tích: Ta đã có hàm nhậ p n ph ầ n t ử s ố nguyên ở trên roài. sau khi nhậ p xong s ố l ượ ng n, và n ph ầ n t ử s ố nguyên cho m ả ng ta sẽ duy ệ t qua m ọ i ph ầ n t ử c ủ a m ả ng: trong mỗầệếặầửỏ i l n duy t, n u g p ph n t th a mãn đi ềệ u ki n ( là s ốẵ ch n (a0), ho ặố c là s nguyên tố (a1) ) thì s ẽ x ử lý ph ầ n t ử đó theo yêu c ầ u (li ệ t kê, đ ế m ho ặ c là tính t ổ ng ) Ta có code C++ giả i các ý a1, b1, c1 nh ư sau: Code: #include //khai bao thu vien su dung luong nhap xuat #include //thu vien dinh dang nhap xuat #include //thu vien cac ham toan hoc #include //thu vien cung cap cac ham ve man hinh, ban phim void NhapMang(int *a, int &n){ cout > n; //nhap gia tri cho bien n tu ban phim cout << "Nhap mang" << endl; //thong bao qua trinh nhap bat dau for (int i = 0; i < n ; i++){ //vong lap duyet tu chi so 0 den n-1 cout << "a[" << i << "] = "; //moi lan: thong bao phan tu sap duoc nhap
  21. cin >> *(a+i); //nhap gia tri tu ban phim cho phan tu thu i } //ket thuc vong lap } //ket thuc ham NhapMang int kiemtra_snt(int x){ // tra ve 1 neu x la snt, nguoc lai tra ve 0 for(int i=2; i x khong phai la snt return 1; } void lietke_snt(int a[], int n){ //ham in ra cac so nguyen to for(int i=0; i < n; i++) if(kiemtra_snt(a[i])) cout<<a[i]<<" "; cout<<endl; } int dem_snt(int a[], int n){ //ham tra ve so luong so nguyen to int c=0; //khai bao bien c dung de dem snt for(int i=0; i < n; i++) if(kiemtra_snt(a[i])) c++; //tang bien dem len 1 return c; //tra ve so luong snt dem duoc } int tong_snt(int a[], int n){ //ham tra ve so luong so nguyen to int t=0; //khai bao bien t dung de tinh tong for(int i=0; i < n; i++) if(kiemtra_snt(a[i])) t += a[i]; //cong luy tien vao bien t return t; //tra ve tong cac so nguyen to } void main(void) { clrscr(); //xoa man hinh int a[100]; //khai bao bien mang a co 100 phan tu so nguyen int n; //khai bao bien n luu so luong phan tu trong mang NhapMang(a,n); //nhap n gia tri cho tung phan tu cua mang cout<<"Liet ke snt: "; lietke_snt(a,n); cout<<"so luong snt: "<<dem_snt(a,n)<<endl; cout<<"Tong cac so nguyen to: "<<tong_snt(a,n)<<endl; getch(); //cho nguoi dung an phim bat ky de thoat } Còn các ý a0, b0, c0 quả th ự c r ấ t đ ơ n gi ả n, ta ch ỉ vi ệ c thay hàm kiemtra là sẽ cho k ế t qu ả như ý mu ố n! Đề bài: Nh ậ p n ph ầ n t ử s ố nguyên, in ra màn hình giá tr ị nh ỏ nh ấ t và l ớ n nh ấ t trong mả ng Phân tích: Bài này có nhiề u cách gi ả i Cách 1 (đơ n gi ả n nh ấ t): +đầ u tiên yêu c ầ u ng ườ i dùng nh ậ p s ố l ượ ng ph ầ n t ử là n +lặầỗầậ p n l n, m i l n nh p 1 giá tr ịừậ , v a nh p xong là so sánh v ớế i bi n min và max, n ếị u giá tr
  22. vừậơ a nh p bé h n min thì min s ẽằốừậếốớơế b ng s v a nh p, và n u s đó l n h n bi n max thì max s ẽ bằ ng s ố đó Cách 2: dùng mả ng (kinh đi ể n) + nhậ p m ả ng n ph ầ n t ử s ố nguyên t ừ bàn phím (đã có thu ậ t toán và code ở trên) + gán tạ m th ờ i min và max b ằ ng ph ầ n t ử đ ầ u tiên + duyệ t qua toàn m ảếị ng: n u giá tr đang duy ệơ t bé h n min ho ặớơ c l n h n max thì c ậậạ p nh t l i min và max Cách 3: dài dòng nhấ t + nhậ p m ả ng n ph ầ n t ử s ố nguyên t ừ bàn phím (đã có thu ậ t toán và code ở trên) + sắ p x ế p tăng d ầ n (ho ặ c gi ả m d ầ n) + nếắế u s p x p tăng d ầ n thì min s ẽầử là ph n t đâu tiên, và max s ẽầửố là ph n t cu i cùng trong mả ng đã s ắ p x ế p. giờ mu ộ n roài, đi ng ủ cái đã, lúc khác post code lên. Bài 16. Hãy xây dựộ ng m t hàm đ ểậừ nh p t bàn phím m ộảốựếộ t m ng s th c. Vi t m t chươ ng trình s ử d ụ ng hàm đã xây d ự ng đ ượ c ở trên đ ể nh ậ p s ố li ệ u cho hai m ả ng s ố th ự c, mộ t m ả ng có n ph ẩ n t ử , và m ộ t m ả ng có m ph ầ n t ử , in ra màn hình hai c ộ t song song, m ỗ i cộộảớố t là m t m ng v i ô cu i cùng là t ổủ ng c a các ph ầử n t trong m ả ng, và cu ố i cùng là t ổ ng củ a hai m ả ng. Giả i: Code: #include #include #include //Do bài yêu cầ u nh ậ p hai mang //Chúng ta cho thêm tham số name đ ể hi ể n th ị tên m ạ ng khi nh ậ p void nhapMang(double *a,char *name, int n){ for (int i=0; i >a[i]; } } void main(){ double a[100],b[100]; int n,m,i; //Nhậ p s ố l ượ ng ph ầ n t ử m ả ng A cout >n;
  23. //Nhậ p s ố l ượ ng ph ầ n t ử m ả ng B cout >m; //Nhap hai mang a[N], b[M] nhapMang(a,"a",n); nhapMang(b,"b",m); // Thiế t l ậ p đ ị nh d ạ ng cout n?m:n; double s1=0.0,s2=0.0;//Tong mang a la s1, tong mang b la s2 cout<<endl<<setw(5)<<"TT"<<setw(10)<<"A"<<setw(10)<<"B"; cout<<"\n "; for(i=0;i<max;i++) { if ((i<m) && (i<n)) { cout<<endl<<setw(5)<<i+1<<setw(10)<<a[i]<<setw(10)<<b[i]; s1=s1+a[i]; s2=s2+b[i]; } //Luc nay chi con phan tu cua mang A hoac B else if (i<n)//Neu i<n thi In phan tu cua mang a { cout<<endl<<setw(5)<<i+1<<setw(10)<<a[i]; s1=s1+a[i]; } else if (i<m)//Neu i<m thi In phan tu cua mang b { cout<<endl<<setw(5)<<i+1<<setw(10)<<" "<<setw(10)<<b[i]; s2=s2+b[i]; } } cout<<"\n "; cout<<endl<<setw(5)<<"Tong:"<<setw(10)<<s1<<setw(10)<<s2<<endl; cout<<"Tong: s1+s2="<<s1+s1<<endl; } Đề bài: Nh ậ p n ph ầ n t ử s ố nguyên, in ra màn hình giá tr ị nh ỏ nh ấ t và l ớ n nh ấ t trong mả ng Cách 1 (đơ n gi ả n nh ấ t): +đầ u tiên yêu c ầ u ng ườ i dùng nh ậ p s ố l ượ ng ph ầ n t ử là n +lặầỗầậ p n l n, m i l n nh p 1 giá tr ịừậ , v a nh p xong là so sánh v ớế i bi n min và max, n ếị u giá tr
  24. vừậơ a nh p bé h n min thì min s ẽằốừậếốớơế b ng s v a nh p, và n u s đó l n h n bi n max thì max s ẽ bằ ng s ố đó Code: #include void main(){ int x, i, n, min, max; cout > n; //nhap so luong if ( n > 0 ) { //so luong > 0 cout > x; //nhap a[0] min = max = x; //min=max=a[0] for ( i = 2 ; i n cout > x; //nhap a[i] if ( x max ) max = x; //cap nhat max } cout void NhapMang(int *a, int &n){ cout > n; cout > *(a+i); } } void TimMinMax(int a[], int n, int &min, int &max){ min = max = a[0]; for (int i = 1; i max ) max = a[i];
  25. } } void main(){ int a[100], n, min, max; NhapMang (a, n); TimMinMax (a, n, min, max); cout max ) max = *p; } } chú ý a tươ ng đ ươ ng v ớ i con tr ỏ tr ỏ vào đ ầ u m ả ng nên *a t ươ ng đ ươ ng v ớ i a[0] ban đầỏ u p tr vào ph ầử n t a[1] (kh ốởạ i kh i t o con tr ỏ *p=++a, t ứ c là p tr ỏớ t i a[1] ) trong mỗ i vòng l ặ p p tr ỏ vào a[i], và c ậ p nh ậ t min và max n ế u a[i] max sau đó p trỏ đ ế n ph ầ n t ử ti ế p theo (l ệ nh p++ ) (biếởảảệẽệừ n i đây đ m b o duy t s duy t t a[1] đ ế n a[n-1] : duy ệế t h t) Có ai ko hiể u cách làm vi ệ c c ủ a hàm tìm min max th ứ 2 này không? Đề bài: Nh ậ p n ph ầ n t ử s ố nguyên, in ra màn hình giá tr ị nh ỏ nh ấ t và l ớ n nh ấ t trong mả ng Cách giả i 3: dài dòng nh ấ t + nhậ p m ả ng n ph ầ n t ử s ố nguyên t ừ bàn phím (đã có thu ậ t toán và code ở trên) + sắ p x ế p tăng d ầ n (ho ặ c gi ả m d ầ n) + nếắế u s p x p tăng d ầ n thì min s ẽầử là ph n t đâu tiên, và max s ẽầửố là ph n t cu i cùng trong mả ng đã s ắ p x ế p. Code: #include void NhapMang(int *a, int &n){ cout > n;
  26. cout > *(a+i); } } void SapXep(int a[], int n) { //sắ p x ế p tăng d ầ n for (int i = 0; i a[j] ){ int tg = a[i]; a[i] = a[j]; a[j] = tg; } } void main(){ int a[100], n; NhapMang (a, n); SapXep (a, n); cout << "Gia tri nho nhat = " << a[0] << endl; cout << "Gia tri lon nhat = " << a[n-1] << endl; } Đề bài : Nhậ p n ph ầ n t ử s ố nguyên. Nh ậ p ph ầ n t ử c ầ n tìm ki ế m X. N ế u trong n phầ n t ử đã nh ậ p có X thì báo "tìm th ấ y", "s ố l ầ n tìm th ấ y" và "các v ị trí tìm th ấ y", ngượ c l ạ i báo "không tìm th ấ y" Ví dụ : mả ng A g ồ m các ph ầ n t ử (theo th ứ t ự ch ỉ s ố tăng d ầ n t ừ 0) là 5, 2, 1, 6, 2, 4, 1, 3 giá trị tìm ki ế m X = 2 vậ y k ế t qu ả s ẽ là: Tìm thấ y 2 (2 l ầ n) t ạ i v ị trí: 1, 4 Phân tích: sau khi nhậ p m ả ng ta sẽ đ ế m s ố l ượ ng ph ầ n t ử X có trong m ả ng nế u đ ế m th ấ y có: ti ế n hành li ệ t kê các v ị trí ngượ c l ạ i thì thông báo không có. Đơ n gi ả n v ậ y thôi ta sẽ chia các công vi ệ c ra t ừ ng hàm riêng hàm nhậ p kinh đi ể n hàm đế m tr ả v ề s ố l ượ ng ph ầ n t ử có giá tr ị b ằ ng giá tr ị cho tr ướ c hàm liệ t kê: t ươ g t ự hàm trên, m ỗ i khi g ặ p a[i] b ằ ng x thì in v ị trí ra (v ị trí là i) Code C++ đây thự c hành nào:
  27. Code: #include void NhapMang(int a[], int &n){ cout > n; for (int i = 0; i > a[i]; } } int DemSoLan(int a[], int n, int x) { int kq = 0; for (int i=0; i > x; d == DemSoLan (a, n, x); if (d > 0){ cout void NhapMang(int a[], int &n){ cout > n; for (int i = 0; i > a[i]; } }
  28. int TimKiem(int a[], int n, int x) { for (int i=0; i > x; if( TimKiem (a, n, x) ){ cout #include int main() { int a,b; cout >a>>b;
  29. int x= abs(a), y= abs(b), r; while (y!=0) { r=x%y; x= y; y= r; } cout #include int main() { int a,b; cout >a>>b; a=abs(a); b=abs(b); while(a-b) { if (a>b) a=a-b; else b=b-a; } cout #include int main() { int a,b; cout >a>>b; int x= abs(a), y= abs(b), r; while (y!=0) { r=x%y; x= y;
  30. y= r; } //x là ướ c s ố chung l ớ n nh ấ t c ủ a a và b. cout void NhapMang(int *a, int &n){ cout > n; for (int i = 0; i > a[i]; } } void sap_xep(int a[], int n, int m){ int i,j,k; for(i=0; i a[j]){ int tg=a[i]; a[i]=a[j]; a[j]=tg; } for(k=0; k m) break; for(i=k; i<n-1; i++) for(j=i+1; j<n; j++)
  31. if(a[i] >m; sap_xep(a,n,m); liet_ke(a,n); } Các bướ c trong code trên là y h ệ t v ớ i quá trình phân tích, nên malyfo ko vi ế t chú thích vào n ữ a hẳ n các b ạ n cũng hi ể u c ả ! phầ n tr ướ c có bài bài t ậ p gptb2 vớ i h ệ s ố a, b, c b ấ t kỳ, đã post 2 bài là gptb1 và gptb2 riêng biệ t, nh ư ng k th ấ y có b ạ n nào ghép nó l ạ i c ả giờ r ả nh malyfo ghép l ạ i nè: Code: #include #include #include void gptb2(float a, float b, float c){ float d,x1,x2; d=b*b-4*a*c; if(d>=0){ x1=(-b-sqrt(d))/(2*a); x1=(-b+sqrt(d))/(2*a); cout<<"pt co 2 nghiem thuc"<<endl <<"nghiem thuc 1="<<x1<<endl <<"nghiem thuc 2="<<x2<<endl; } else{ cout<<"pt k co nghiem thuc\n"; cout<<"pt co 2 nghiem phuc lien hop"<<endl; float thuc,ao; thuc=-b/2/a; ao=sqrt(-d)/2/a; cout<<"nghiem ao 1="<<thuc<<"-i"<<ao<<endl; cout<<"nghiem ao 2="<<thuc<<"+i"<<ao<<endl; } } void gptb1(float a, float b){ if(a!=0) cout<<"pt co 1 nghiem thuc x="<<(-b/a)<<endl; else if(b==0) cout<<"pt co vo so nghiem"<<endl;
  32. else cout >a>>b>>c; if(a!=0) gptb2(a,b,c); else gptb1(b,c); } Bài 6. Viế t m ộ t ch ươ ng trình nh ậ p vào t ừ bàn phím đi ể m ki ể m tra c ủ a m ộ t môn h ọ c c ủ a n họ c sinh và in k ế t qu ả ra màn hình d ướ i d ạ ng hai c ộ t song song, m ộ t c ộ t là đi ể m và c ộ t th ứ hai là xế p lo ạ i theo đi ể m v ớ i các qui đ ị nh sau: Dướ i 5: Y ế u Từ 5 đ ế n d ướ i 7: Trung bình Từ 7 đ ế n d ướ i 9: Khá Từ 9 tr ở lên: Gi ỏ i Giả i: Code: #include #include void main(){ clrscr(); float a[100]; int n; cout >n; for (int i=0;i >a[i]; } cout<<setprecision(0)<<setiosflags(ios::fixed); cout<<endl; cout<<setw(10)<<"TT"<<setw(10)<<"Diem"<<setw(20)<<"Xep loai"<<endl; for (int i=0;i<n;i++) { char *xeploai; if (a[i]<5) xeploai="Yeu"; else if(a[i]<7) xeploai="Trung Binh"; else if(a[i]<9) xeploai="Kha"; else
  33. xeploai="Gioi"; cout void NhapMang(int *a, int &n){ cout > n; for (int i = 0; i > a[i]; } } void SapXep_TangDan(int a[], int n){ for(int i=0; i a[j]){ int tg=a[i]; a[i]=a[j]; a[j]=tg; } } int TimKiem_NhiPhan(int a[], int n, int x){ int i=0, j=n-1; while(i a[m]) i=m+1;
  34. else j=m; } return (x == a[ i ]) ? i+1 : 0; } int KiemTra_TangDan (int a[], int n){ for( int i = 0; i a[i+1] ) return 0; return 1; } void main(){ int a[100], n; NhapMang(a, n); if(! KiemTra_TangDan(a, n)) SapXep_TangDan(a, n); int m, i; cout > m; if( i = TimKiem_NhiPhan(a, n, m) ) cout << m << " o vi tri: " << i << endl; else cout << " Khong co phan tu " << m << " trong day " << endl; } Chú ý là bài trên chư a có tìm s ố l ượ ng. và cũng chư a làm đ ượ c "Sau khi tìm xong, h ỏ i có tìm n ữ a khôg? n ế u tìm n ữ a thì l ạ i nh ậ p m, rồ i tìm y chang nh ư trên c ứ th ế cho đ ế n khi tr ả l ờ i là không mu ố n tìm n ữ a thì thôi" Giả i quy ế t bài toán ki ể u "Sau khi tìm xong, hỏ i có tìm n ữ a khôg? n ế u tìm n ữ a thì l ạ i nh ậ p m, rồ i tìm y chang nh ư trên c ứ th ế cho đ ế n khi tr ả l ờ i là không mu ố n tìm n ữ a thì thôi" cụ th ể cho bài trên Code: //các hàm ở trên k post l ạ i nhé void main(){ int a[100], n; NhapMang(a, n); if(! KiemTra_TangDan(a, n)) SapXep_TangDan(a, n); int m, i; cout << "Mang sap xep tang dan:"; for(i = 0; i < n; i++) cout << a[i] << " "; cout << endl;
  35. char c; do{ cout > m; if( i = TimKiem_NhiPhan(a, n, m) ) cout >c; }while(c=='c'||c=='C'); } Vậ y cách chung đ ể gi ả i quy ế t là: khai báo 1 biế n ki ể u ký t ự đ ể ch ứ a tr ả l ờ i đặ t công vi ệ c c ầ n làm trong vòng l ặ p ki ể m tra sau do - while khi làm xong công việ c thì h ỏ i l ạ i ng ườ i dùng có mu ố n ch ạ y l ạ i không? (c/k) và nế u là Có thì s ẽ làm l ạ i! Code: char c; do{ //làm công việ c gì đó, mà khi làm xong h ỏ i có làm ti ế p kô, n ế u đ ồ ng ý s ẽ làm lạ i cout >c; }while(c=='c'||c=='C'); Viế t ch ươ ng trình nh ậ p vào t ừ bàn phím bán kính R c ủ a hình c ầ u. Hãy tính và in ra di ệ n tích và thể tích hình c ầ u đó: Code: #include #include float main() { const float PI=3.1415; float s,v,r; //Yêu cầ u nh ậ p r>0, trong khi r >r; }while(r<=0); s=4*PI*r*r; v=4*PI*r*r*r/3; cout<<setiosflags(ios::showpoint|ios::fixed); cout<<setprecision(2); cout<<"\nV="<<v; cout<<"\nS="<<s<<endl; }
  36. Nhậả p m ng n ph ầửố n t s nguyên, tìm giá tr ịầửấệềấ ph n t xu t hi n nhi u nh t trong m ả ng, nế u có nhi ề u giá tr ị khác nhau cùng xu ấ t hi ệ n nhi ề u nh ấ t thì li ệ t kê h ế t các giá tr ị đó ra. ví dụ 1: có 11 phầ n t ử : 1 4 4 2 2 4 5 6 3 6 6 thì thông báo giá trị 4 xu ấ t hi ệ n 3 l ầ n giá trị 6 xu ấ t hi ệ n 3 l ầ n. ví dụ 2: có 12 phầ n t ử : 1 2 3 3 3 2 2 3 3 4 4 5 thì thông báo giá trị 3 xu ấ t hi ệ n 5 l ầ n Phân tích cách 2 sau khi có mả ng n ph ầ n t ử s ố nguyên ta sắ p x ế p tăng dầ n(hoặ c giả m d ầ n cũng OK) mả ng đó khi đó cũng dùng mả ng đ ế m d đểưốầ l u s l n xu ấệủừ t hi n c a t ng ph ầửỗ n t (ch này có khác đi 1 tí để d ễ dàng vi ệ c lo ạ i b ỏ giá tr ị l ặ p h ơ n bằ ng cách duy ệ t t ừ đ ầ u đ ế n h ế t m ả ng đã s ắ p x ế p mỗ i khi g ặ p giá tr ị trùng (trùng thì đ ứ ng c ạ nh nhau do đã s ắ p x ế p) thì tăng s ố bi ế n đ ế m thôi d[0]=1; for( i = 1; i void NhapMang(int *a, int &n){ cout > n; for (int i = 0; i > a[i]; } }
  37. void SapXep_TangDan(int a[], int n){ for(int i=0; i a[j]){ int tg = a[i]; a[i] = a[j]; a[j] = tg; } } void Dem(int *a, int *d, int n){ d[0]=1; for(int i = 1; i m) m = a[i]; return m; } void LietKe(int *a, int *d, int n){ int m = max(d, n); for(int k = 0; k < n; k ++) if(d[k] == m) cout<<"Gia tri "<<a[k]<<" xuat hien "<<m<<" lan"<<endl; } void main(){ int a[100], d[100], n; NhapMang(a, n); SapXep_TangDan(a, n); Dem(a, d, n); LietKe(a, d, n); } BAI TAP Viế t ch ươ ng trình đ ọ c và 2 s ố nguyên và in ra k ế t qu ả c ủ a phép (+), phép tr ừ (-), phép nhân (*), phép chia (/). Nhậ n xét k ế t qu ả chia 2 s ố nguyên. Code:
  38. #include #include int main() { int a,b; //hai toan hang a,b char ch;//dau cua phep toan int s; cout >a; cout >b; cout >ch; switch (ch) { case '+': s=a+b; cout 0 thi a/b { s=a/b; cout const float PI=3.1415; int main() { float r,s,v; do { cout >r;
  39. }while(r #include int main() { double a; cout >a; double a2,a3,a4; a2=pow(a,2); a3=pow(a,3); a4=pow(a,4); cout int main() { long int num; int h,m,s; cout >num; //S la so giay s=num%60; num=num/60; //m la so phut m=num%60; num=num/60; //h la so gio h=num%60; num=num/60; //Neu h<10 phai them so 0 dang truoc if (h<10) cout<<"\n0"<<h;
  40. else cout int main() { int x; do { cout >x; }while(x int main() { int a,b,c,d; cout >a>>b>>c>>d; int max,m1,m2; max=(m1=(a>b)?a:b)>(m2=(c>d)?c:d)?m1:m2; /* Hoac m1=(a>b)?a:b);
  41. m2=(c>d)?c:d); max=m1>m2?m1:m2; */ cout void main(){ long t; cout >t; int s = t%60; int m = t/60%60; int h = t/60/60%24; if(h void main(){ long t; cout >t; int s = t%60; int m = t/60%60; int h = t/60/60%24; if(h 12)cout 12)cout void main(){
  42. long t; cout >t; int s = t%60; int m = t/60%60; int h = t/60/60%24; if(h void main(){ long t; cout >t; int s = t%60; int m = t/60%60; int h = t/60/60%24; if(h 12)cout 12)cout void qd(long t){ int s = t%60; int m = t/60%60; int h = t/60/60%24; if(h 12)cout 12)cout<<" pm"; else cout<<" am"; cout<<endl; } void main(){ long t=(long)6*60*60 + 30*60; cout<<"vao t1="; qd(t); t+=45*60; cout<<" ra t1="; qd(t); t+=5*60; cout<<"vao t2="; qd(t); t+=45*60; cout<<" ra t2="; qd(t); t+=5*60; cout<<"vao t3="; qd(t); t+=45*60; cout<<" ra t3="; qd(t); t+=10*60; cout<<"vao t4="; qd(t); t+=45*60; cout<<" ra t4="; qd(t); t+=5*60; cout<<"vao t5="; qd(t); t+=45*60;
  43. cout #include #include int main() { int N; cout >N; char *a = new char(N+1); int i, j; for(i = 2; i #include //Ham kiể m tra n có ph ả i là s ố nguyên t ố không int nguyento(int n) { if (n<2)
  44. { return 0; } int d=0; for(int i=2;i >n; int a[n]; for(int i=0;i #include void main() { int n; cout >n;
  45. if (n #include int kiemtra_snt ( int x ) { for ( int i=2; i > n; if ( kiemtra_snt ( n ) ) cout #include void main(){
  46. int n,i; cout > n; i=2; while(i int main() { long int num; //num là số giây nh ậ p vào t ừ bàn phím // s là số giây, m là s ố phút, h là s ố gi ờ int h,m,s; cout >num; //S la so giay s=num%60; num=num/60; //m la so phut m=num%60; num=num/60; //h la so gio h=num; //Nế u h "0"+"9"="09" if (h<10) cout<<"\n0"<<h; else cout<<h; if (m<10) cout<<":0"<<m; else cout<<":"<<m;
  47. if (s void main() { int f,i; float s=0; cout >f; for (i=1;;i++) { s+=1/(float)i; if (s>f) break; } cout void main() { int f,i; float s=0; cout >f; i=0; while(s<=f) { i++; s+=1/(float)i; } cout<<"i="<<i; cout<<"\nS="<<s<<endl; } Viếươ t ch ng trình nh ậ p vào n s ốựừ th c t bàn phím. Tìm và in ra s ốớấốỏ l n nh t và s nh nhấ t Code:
  48. #include void main() { int n; float s,max,min; cout >n; for(int i=1;i >s; if(i==1) { min=s; max=s; }else{ if (max s) min=s; } } cout n và l ặạ p l i. Vòng l ặ p dừ ng khi m = n. Code: #include void main() { int m, n, r; cout > m >> n ; if (m n) m = r; else { m = n ; n = r ; } } cout << "UCLN = " << m ; }
  49. Bộ i s ố chung và ướ c s ố chung(viet theo kieu cu) Code: #include #include unsigned USCLN (unsigned n, unsigned m) { while (n != 0 && m != 0) if (n>m) n -= m; else m -= n; if (n == 0) return m; else return n; } unsigned BSCNN (unsigned n, unsigned m) { return n * m / USCLN(n, m); } void main() { unsigned n, m; printf("\nNhap hai vao so nguyen duong : "); scanf("%u%u", &n, &m); printf("\nUSCLN cua %u va %u = %u", n, m, USCLN(n,m)); printf("\nBSCNN cua %u va %u = %u", n, m, BSCNN(n,m)); getch(); } Bài in ra lị ch c ủ a m ộ t năm b ấ t kỳ l ớ n h ơ n 1700 (Bài này t ớ làm đ ấ y ) Code: #include
  50. #include #include int songay(int,int); bool namnhuan(int nam); void InLich(int,int); int ThuDauTien(int,int); void main() { int nam; char chon; do { do { cout 1700): "; cin>>nam; }while(nam >chon; system("cls"); }while(chon == 'y'); cout<<"Thanh Nam cam on ban da su dung chuong trinh {an Enter de thoat)"; getch(); } int songay(int thang,int nam) { switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: if(namnhuan(nam)) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; } return 0; } bool namnhuan(int nam)
  51. { return ((nam % 4 == 0 && nam % 100 != 0)||(nam % 400 == 0)); } void InLich(int thang,int nam) { int ngayd = ThuDauTien(thang,nam); if(ngayd == 0) ngayd = 7; int i; int sn = songay(thang,nam); cout<<"\nMon\tTUE\tWED\tTHU\tFRI\tSAT\tSun\n"; for(i = 1;i <= ngayd - 1;i++) cout<<"\t"; for(i = 1;i <= sn;i++) { cout<<i<<"\t"; if((i + ngayd - 1) % 7 == 0) cout<<endl; } } long int funct1 (int nam,int thang) { long int result; if ( thang <= 2 ) nam -= 1; // result = nam; return (result); } long int funct2 (int thang) { long int result; if ( thang <= 2 ) result = thang + 13; else result = thang + 1; return(result); } long int day_count (int thang, int nam) { long int number; number = 1461 * funct1(nam,thang) / 4 + 153 * funct2(thang) / 5 + 1; return (number); } int ThuDauTien(int thang,int nam) { long int number_of_days1; int day_of_week; number_of_days1 = day_count (thang, nam); day_of_week = (number_of_days1 - 621049) % 7; return day_of_week; }
  52. Bài kiể m tra s ố nguyên t ố (cach khac) Code: /*Ham tinh so nguyen to */ #include #include #include bool LaNguyenTo(int n); void main() { int n; cout >n; if(LaNguyenTo(n)) cout<<"La so nguyen to"; else { cout<<"Khong la so nguyen to vi no chia het cho "; for(int j=2;j<n;j++) { if(n%j==0) cout<<j<<" va "; } cout<<"The thoi"; } getch(); } bool LaNguyenTo(int n) { bool co=true; if(n<2) {cout<<"Du lieu nhap sai va so do "; return !co;} else { for(int i=2;i<=sqrt(n)+1;i++) { if(n%i==0) { co=false; break; } } } return 0; }
  53. lai la lai suat ngan hang ne!! gui tien di cho giau to nhe Code: (Ngân hàng)Tìm số ti ề n nh ậ n trong n tháng khi bi ế t lãi xu ấ t Code: #include #include #include void main() { double sotiengui,tienlai,laixuat; int sothang; cout >sotiengui; cout >laixuat; cout >sothang; for(int i=1;i >>>> cout 54321 hmck43dt4 (hay khong ,rat don gian) Code: #include #include void main()
  54. { long a; do { cout >a; }while(a 0) { while (a > 0) { cout #include #include void main() { float x,tong=0.0,n,tg,mu=1.0,gt=1.0; cout >x; cout >n; for(int i=1;i<=n;i++) { mu=mu*x; gt=gt*i; tg=mu/gt; tong=tong+tg; } cout<<"Vay "; for(int j=2;j<=n;j++) { cout<<x<<"^"<<j<<"/"<<j<<"!"<<" + "; } cout<<x<<" = "<<(tong);
  55. getch(); } Đề bài: Nhậ p vào m ả ng n ph ầửố n t s nguyên, sau đó in ra ướ c chung l ớấủấ n nh t c a t t cả các s ố đó code sử a l ạ i t ừ ý t ưở ng vdtt Code: #include void sapxep ( int a[], int n ) { for( int i = 1; i > n; for( int i = 1; i > a[i]; } sapxep(a, n); do{ a[1] = a[1] - a[n]; sapxep(a, n); } while( a[1] != a[n] ); cout << "Uoc chung lon nhat cua "; for ( i = 1; i <= n; i ++ ) cout << a[i] << ' '; cout << "la "<< a[1] << endl; }
  56. Đề bài: Nhậ p vào m ả ng n ph ầửố n t s nguyên, sau đó in ra ướ c chung l ớấủấ n nh t c a t t cả các s ố đó Code: #include void sapxep ( int a[], int n ) { for( int i = 0; i > n; for( int i = 0; i > a[i]; } sapxep(a, n); do{ a[0] = a[0] - a[n-1]; sapxep(a, n); } while( a[0] != a[n-1] ); cout int ucln (int a, int b) { while ( a != 0 && b != 0 ) if ( a > b ) a -= b; else b -= a; return a ? a : b; } void main ( ) { int x[100], n; cout > n; for( int i = 0; i > x[i]; } int d = ucln(x[0], x[1]); for( i = 2; i < n; i ++ ) if (d == 1) break; else d = ucln(d, x[i]); cout << "uoc chung lon nhat la: " << d; }
  57. Bài 5. Viế t ch ươ ng trình tính và in ra màn hình s ố ti ề n đi ệ n tháng 10/99 c ủ a n khách hàng theo các chỉ s ố trên đ ồ ng h ồ đi ệ n c ủ a tháng 9 và c ủ a tháng 10 đ ượ c nh ậ p vào t ừ bàn phím (phảể i ki m tra đ ểảảằ đ m b o r ng ch ỉốủ s c a tháng sau ph ảớơỉốủ i l n h n ch s c a các tháng trướ c). Biếằ t r ng: 50 s ốầề đ u ti n giá 500 đ ồốốế ng/s , 100 s ti p theo giá 800 đ ồốốế ng/s , 100 s ti p theo nữ a giá 1000 đ ồốốế ng/s , 100 s ti p theo n ữ a giá 1200 đ ồốừốứở ng/s , và t s th 351 tr đi giá 1500 đồ ng/s ố . Giả i: Code: #include #include #include #include struct KhacHang { int csc,csm; double tien; }; //Ham tinh tien dien theo gia qui dinh //intput: So dien tieu thu //output: So tien phai tra double tinhtien(int tieuthu) { double tien; if (tieuthu >n; int i=0; while(i >a[i].csc;
  58. cout >a[i].csm; //Neu chi so cmoi > chi so moi thi tang i //Tinh tien phai tra cho khac hang thu i if (a[i].csm>=a[i].csc){ int tieuthu=a[i].csm-a[i].csc; a[i].tien=tinhtien(tieuthu); i++; } } //Thiet lap dinh dang cout #include #define Tong(a,b) a+b #define Hieu(a,b) a-b #define Tich(a,b) a*b #define Thuong(a,b) a/b void main() { int x,y,tong,hieu; float tich, thuong; clrscr(); printf("Moi nhap 2 so nguyen: ");
  59. scanf("%d %d",&x,&y); tong=Tong(x,y); printf("\nTong cua %d va %d la: %d",x,y,tong); hieu=Hieu(x,y); printf("\nHieu cua %d va %d la: %d",x,y,hieu); tich=Tich(x,y); printf("\nTich cua %d va %d la: %d",x,y,int(tich)); [w]if[/w] (y==0) { printf("\nError: Khong chia duoc cho 0"); } else { thuong=Thuong(x,y); printf("\nThuong (nguyen) cua %d va %d la: %d",x,y,int(thuong)); } getch(); } /*bai tap tinh tien dien ko khoa hoc nhung de hieu hon nhieu*/ #include #include void main(){ int t9,t10,s; float t;char ch[25]; cout >ch[25]; cout >t9; cout >t10; s=t10-t9; if (s>0){ if (s<50) t=s*500; else if(s<150) t=50*500+(s-50)*800; else if(s<250) t=50*500+100*800+(s-150)*1000; else if(s<250) t=50*500+100*800+(s-150)*1000; else t=50*500+100*800+100*1000*(s-250); cout<<"tien "<<t;} else cout <<"moi nhap lai"<<endl; }
  60. Bài: Nhậ p vào m ộ t dãy s ố nguyên cho đ ế n khi nh ậ p vào giá tr ị "Chia h ế t cho 5". Tính t ổ ng các phầ n t ử ch ẵ n. T ổ ng các ph ầ n t ử l ẻ . Code: #include void main() { int n; //Gia tri nhap vao tam thoi int s_le=0;// Tong cac phan tu le int s_chan=0;//Tong cac phan tu chan do { cout >n; if (n%2==0) s_chan+=n; //Neu n chan: tinh tong chan else s_le+=n; //Neu n le tinh tong le }while(n%5!=0); cout<<"\nTong le: "<<s_le; cout<<"\nTong chan: "<<s_chan; } Bài 25. Cho cấ u trúc: Code: struc dienthoai{ int sdt; //Số đi ệ n tho ạ i char hoten[25]; //Họ và tên float sotien; //Số ti ề n ph ả i n ộ p } thuebao[100]; Hãy xây dự ng m ộ t hàm đ ể nh ậ p s ố li ệ u cho n thuê bao. Sau đó vi ế t m ộ t ch ươ ng trình s ử dụ ng hàm nói trên đ ểậốệ nh p s li u và in b ảốềảộủ ng s ti n ph i n p c a các thuê bao theo d ạ ng ba cộ t: H ọ tên, s ố đi ệ n tho ạ i, s ố ti ề n ph ả i n ộ p. Code:
  61. #include #include struct dienthoai{ int sdt; char hoten[25]; float sotien; } thuebao[100]; //Hàm nhậ p danh sách n thuê bao void nhap(int n,dienthoai *a) { for(int i=0;i >a[i].sdt; cin.ignore(1); //Loai bo ky tu thua cout >a[i].sotien; } } //Hàm in danh sách các thuê bao theo dạ ng ba c ộ t "S ố đi ệ n tho ạ i","H ọ và tên","Số ti ề n" void inds(int n,dienthoai *a) { cout >n; nhap(n,a); inds(n,a); }
  62. tuananhk43 Bài 25. Cho cấ u trúc: Code: struc dienthoai{ int sdt; //Số đi ệ n tho ạ i char hoten[25]; //Họ và tên float sotien; //Số ti ề n ph ả i n ộ p } thuebao[100]; Hãy xây dự ng m ộ t hàm đ ể nh ậ p s ố li ệ u cho n thuê bao. Sau đó vi ế t m ộ t ch ươ ng trình s ử d ụ ng hàm nói trên đểậốệ nh p s li u và in b ảốềảộủ ng s ti n ph i n p c a các thuê bao theo d ạ ng ba c ộ t: Họ tên, s ố đi ệ n tho ạ i, s ố ti ề n ph ả i n ộ p. Code: #include #include struct dienthoai{ int sdt; char hoten[25]; float sotien; } thuebao[100]; //Hàm nhậ p danh sách n thuê bao void nhap(int n,dienthoai *a) { for(int i=0;i >a[i].sdt; cin.ignore(1); //Loai bo ky tu thua cout >a[i].sotien; } } //Hàm in danh sách các thuê bao theo dạ ng ba c ộ t "S ố đi ệ n tho ạ i","H ọ và tên","Số ti ề n" void inds(int n,dienthoai *a) { cout<<setw(20)<<"Dien thoai"; cout<<setw(20)<<"Ho ten"; cout<<setw(20)<<"So tien"<<endl; for(int i=0;i<n;i++) { cout<<setw(20)<<a[i].sdt;
  63. cout >n; nhap(n,a); inds(n,a); } Sử a l ạ i chút Code: #include #include struct dienthoai{ int sdt; char hoten[25]; float sotien; } thuebao[100]; //Hàm nhậ p danh sách n thuê bao void nhap(int n,dienthoai *a) { for(int i=0;i >a[i].sdt; cin.ignore(1); //Loai bo ky tu thua cout >a[i].sotien; } } //Hàm in danh sách các thuê bao theo dạ ng ba c ộ t "S ố đi ệ n tho ạ i","H ọ và tên","Số ti ề n" void inds(int n,dienthoai *a) { cout<<setw(20)<<"Dien thoai"; cout<<setw(20)<<"Ho ten"; cout<<setw(20)<<"So tien"<<endl; for(int i=0;i<n;i++) { cout<<setw(20)<<a[i].sdt; cout<<setw(20)<<a[i].hoten; cout<<setw(20)<<a[i].sotien<<endl; } } main() { int n;
  64. cout >n; nhap(n,thuebao); inds(n,thuebao); } Bài 1. Viế t hàm chèn ph ầửị n t có giá tr X vào phía sau t ấảầửịẵ t c các ph n t có giá tr ch n trong m ả ng. Viế t hàm tìm ph ầửố n t là s nguyên t ố trong t ấả t c các ph ầửủả n t c a m ng. Bài 2. Nhậộảố p vào m t m ng s nguyên n ph ầửừ n t t bàn phím, in ra màn hình ph ầửốầấ n t có s l n xu t hiệ n nhi ề u l ầ n nh ấ t trong m ả n v ừ a nh ậ p. Bài 1 Câu a Code: void insertX(int* a, int* N, int X) { // a là tên mả ng, nó là con tr ỏ tr ỏ vào v ị trí đ ầ u tiên c ủ a m ả ng // N là con trỏ , giá tr ị c ủ a nó là s ố ph ầ n t ử c ủ a m ả ng, sau khi chèn // X vào N sẽ tăng int i = 0, j; while (i = i + 2; j ) a[j] = a[j - 1]; // sau khi dị ch m ả ng, ch ỗ h ở ra dành cho X a[i + 1] = X; i += 2; // nhả y qua X } else i++; } } Câu b Code: void searchprimes(int* a, int N) { // hàm này sẽ ki ể m tra l ầ n l ượ t t ừ ng s ố c ủ a m ả ng xem có nguyên t ố hay không
  65. // nế u có s ẽ in ra ch ỉ s ố cùng v ớ i giá tr ị c ủ a nó // nế u không mu ố n in ra b ạ n có th ể ch ỉ nh s ử a theo ý mình int i, x, y, t, ok; for (i = 0; i 0 & a[i] % 3 > 0) { x = 5; y = 2; t = (int)sqrt((double)a[i]); ok = 1; while (x #include int a[100], mark[100], N, max, val; void readinput() { printf("Nhap N = "); scanf("%d", &N); for (int i = 0; i < N; i++) { printf("Nhap a[%d] = ", i); scanf("%d", &a[i]); } } void solve() { max = 0; int i, j, count; for (i = 0; i < N; i++) mark[i] = 1; for (i = 0; i < N - 1; i++) if (mark[i]) { count = 1; mark[i] = 0; for (j = i + 1; j < N; j++) if (a[j] == a[i]) {
  66. count++; mark[j] = 0; } if (count > max) { max = count; val = a[i]; } } } void writeoutput() { printf("Phan tu xuat hien nhieu nhat la %d", val); printf("\nSo lan xuat hien la %d", max); getch(); } void main() { clrscr(); readinput(); solve(); writeoutput(); } Bài toán: liệ t kê các s ố nguyên t ố không bé h ơ n n theo thu ậ t toán SÀNG S Ố NGUYÊN TỐ Phân tích: theo đúng tinh thầ n c ủ a thu ậ t toán, ta s ẽ dùng 1 m ả ng n ph ầ n t ử , đ ầ u tiên đi ề n vào phầ n t ử th ứ i giá tr ị 1 (t ươ ng đ ươ ng giá tr ị ĐÚNG) phầ n t ử đ ầ u tiên ch ư a xoá s ẽ là snt, sau đok' xoá b ộ i c ủ a nó Code: #include void main(){ int i, n, s[100]; cout >n; for(i=2; i<=n; i++)s[i]=i; //điề n l ướ i ban đ ầ u for(i=2; i<=n; i++){ if(s[i])cout<<s[i]<<' '; //lấ y ph ầ n t ử đ ầ u tiên ch ư a b ị lo ạ i for(int k=i; k<=n; k+=i) s[k]=0; //sau khi lấ y đc 1 ph ầ n t ử i thì loạ i b ỏ m ọ i b ộ i c ủ a i } }
  67. Viế t ch ươ ng trình nh ậ p vào m ộ t xâu t ừ bàn phím: 1. Viế t hàm lo ạ i b ỏ các kho ả ng tr ắ ng bên trái 2. Viế t hàm lo ạ i b ỏ các kho ả ng tr ẳ ng bên ph ả i 3. Viế t hàm lo ạ i b ỏ kho ả ng tr ắ ng bên trái và bên ph ả i Code: #include #include #include //Xoa khoang trang hai ben char *trim(const char *ss) { char *s=new char[strlen(ss)]; strcpy(s,ss); int i=0; //Left Trim while(s[i]==' ') i++; for(int k=0;k 0) i ; s[i+1]=0; return s; } //Xoa khoang trang ben phai char *rtrim(const char *ss) { char *s=new char[strlen(ss)]; strcpy(s,ss); int i=strlen(s)-1; while(s[i]==' '&&i>0) i ; s[i+1]=0; return s; } //Xoa khoang trang ben trai char *ltrim(const char *ss) { char *s=new char[strlen(ss)]; strcpy(s,ss); int i=0; while(s[i]==' ') i++; int length=strlen(s); for(int k=0;k<=length;k++) s[k]=s[k+i];
  68. return s; } //Xoa cac khoang trang thua trong xau char *ctrim(const char *ss) { char *s=new char[strlen(ss)]; strcpy(s,ss); int i=0; while(i<strlen(s)-1) { if(s[i]==' ' && s[i+1]==' '){ int k=i; do s[k]=s[k+1]; while(s[++k]!=0); }else i++; } return s; } void main() { char s[100]; cout<<"Nhap xau"; gets(s); cout<<"ALL_TRIM !"<<trim(s)<<"!"<<endl; cout<<"R_TRIM !"<<rtrim(s)<<"!"<<endl; cout<<"L_TRIM !"<<ltrim(s)<<"!"<<endl; cout<<"C_TRIM !"<<trim(ctrim(s))<<"!"<<endl; } Mộ t s ố bài t ậ p v ề x ử lý xâu ký t ự Ngó qua lý thuyế t v ề xâu 1 tí nha: 1.Trong C++ không có kiể u d ữ li ệ u c ơ b ả n đ ể l ư u các xâu kí t ự 2.Xâu là mộ t m ả ng kí t ự (m ả ng có ki ể u char) Ví dụ : char str[20]; Biế n str có th ể l ư u m ộ t xâu kí t ự v ớ i đ ộ dài c ự c đ ạ i là 20 kí t ự Chú ý: kiể u char ch ỉ l ư u 1 kí t ự đ ơ n 3.Mả ng kí t ự có th ể l ư u các xâu kí t ự dài không quá dài khai báo c ủ a nó ví dụ : Str có th ể l ư u "Hello" hay “Thai Nguyen" 4.Các kí tự trong xâu có đ ị a ch ỉ li ề n k ề nhau trong b ộ nh ớ (tính ch ấ t c ủ a m ả ng)
  69. 5.C++ quy ướ c đ ể k ế t thúc m ộ t n ộ i dung c ủ a m ộ t xâu kí t ự b ằ ng m ộ t kí t ự null(null là kí tự có mã 0 trong b ả ng mã ASCII) Khai báo biế n xâu kí t ự (gi ố ng nh ư khai báo cho m ả ng) 1. Code: char s[100]; //khai báo s không có khở i t ạ o 2. Code: char str[20]={'h','a','n','o','i','\0'}; Xâu str có 20 phầ n t ử , có 6 ph ầ n t ử đ ầ u đ ượ c kh ở i t ạ o '\0' là kí tự null, dùng kí t ự đ ặ c bi ệ t \ k ế t h ợ p v ớ i 0 đ ể bi ể u di ễ n 3. char st[]={‘S',‘V','\0'}; Xâu st có đúng 3 phầ n t ử , và đã kh ở i t ạ o 4.Khai báo hợ p l ệ : Code: char mystring [] = { 'H', 'e', 'l', 'l', 'o', '\0' }; char mystring [] = "Hello"; Hai cách khai báo trên là tươ ng đ ươ ng 5. Các lệ nh sau là không hợ p l ệ cho biế n m ả ng mystring Code: mystring = "Hello"; mystring[] = "Hello"; mystring = { 'H', 'e', 'l', 'l', 'o', '\0' }; 6.Biế n con tr ỏ ki ể u char đ ượ c hi ể u nh ư là bi ế n xâu kí t ự 6.1. Khai báo hợ p l ệ : Code: char* mystring = { 'H', 'e', 'l', 'l', 'o', '\0' }; char* mystring = "Hello"; Hai cách khai báo trên là tươ ng đ ươ ng 6.2. Con trỏ ki ể u xâu đ ượ c phép: char *p; p = "Hello Hanoi"; Thao tác vớ i xâu kí t ự
  70. 1.Gán giá trị cho xâu ví dụ : Code: mystring[0] = 'H'; mystring[1] = 'e'; mystring[2] = 'l'; mystring[3] = 'l'; mystring[4] = 'o'; mystring[5] = '\0'; rõ ràng cách này hợ p l ệ nh ư ng không kh ả thi 2.Gán giá trị cho xâu s ử d ụ ng hàm strcpy củ a th ư vi ệ n string.h Cú pháp: nguyên mẫ u c ủ a hàm: char *strcpy(char *dest, const char *src); Tác dụ ng: Copy xâu src (nguồ n) sang dest (xâu đích) Xâu src (nguồ n) không b ị bi ế n đ ổ i (const char *src) Hàm này cũng trả v ề đ ị a ch ỉ c ủ a đ ầ u c ủ a dest ví dụ : Code: #include #include void main(){ char myName [20]; strcpy (myName, "Nguyen Van A"); cout >str để nh ậ p xâu Ví dụ : Code: #include void main(){ char s [100]; cin.getline(s,100); cout<<s; } 4. Nhậ p xâu t ừ bàn phím dùng l ệ nh gets củ a th ư vi ệ n stdio.h Cú pháp: Khai báo thư vi ệ n stdio.h nguyên mẫ u c ủ a hàm: char *gets(char *str); Tác dụ ng:
  71. Gán chuỗựậừ i kí t nh p t bàn phím vào bi ế n xâu str, và tr ảềịỉầủ v đ a ch đ u c a str Ví dụ Code: #include #include void main(){ char str[100]; gets(str); cout Ki ể u tr ả v ề là? là kiể u s ố nguyên, ta ch ọ n ki ể u int - Đố i s ố (đ ầ u vào c ủ a hàm) là? tấ t nhiên là ki ể u m ả ng c ủ a kí t ự ho ặ c là con tr ỏ kí t ự Phân tích: Dễ th ấ y ch ỉ s ố c ủ a v ị trí k ế t thúc chính là đ ộ dài c ủ a xâu vậ y ta cho bi ếỉốầậị n ch s ban đ u nh n giá tr 0, trong khi mà ch ỉốưảịố s đó ch a ph i là v trí cu i xâu thì ta tăng chỉố s và ki ể m tra l ạứặ i, c l p nh ưậế v y bi n ch ỉốẽếếị s s ti n đ n v trí cu ố i xâu, khi đó dừạảề ng l i, và tr v cho hàm giá tr ịủếỉốị c a bi n ch s , giá tr đó cũng chính là đ ộ dài xâu Ta có code bằ ng C++ nh ư sau: Code: int length(char s[]){ int d=0; while(s[d]!='\0')d++; return d; } Hoặ c Code:
  72. int length(char *s){ int d=0; while(s[d]!='\0')d++; return d; } Ứng d ụ ng hàm tính đ ộ dài trên đ ể gi ả i bài toán: Nhậ p vào xâu ký t ự t ừ bàn phím, in ra màn hình đ ộ dài c ủ a xâu đó? code bằ ng C++ s ẽ nh ư sau Code: #include int length(char s[]){ int d=0; while(s[d]!='\0')d++; return d; } void main(){ char st[100]; cout<<"Nhap xau: "; cin.getline(st,100); cout<<"Do dai xau: "<< length(st); } Bài số 2: Viế t ch ươ ng trình đ ế m xem trong xâu có bao nhiêu kí t ự 'a' Phân tích: Bài này giả i nh ư bài v ề m ả ng, chúng ta coi nh ư xâu là 1 m ả ng, chú ý giá tr ị null ở cuố i xâu. Ta duy ệọỉốừầếế t m i ch s t đ u đ n h t xâu, t ạị i v trí đang xét n ếựạị u kí t t i v trí đó có giá trị b ằ ng kí t ự 'a' thì ta tăng bi ế n đ ế m. Vậ y hàm đ ế m s ẽ nh ư sau: Code: int dem_ki_tu(char *s){ int dem=0; int do_dai=lenth(s); //sử d ụ ng hàm length ở bài post tr ướ c, ho ặ c dùng hàm strlen củ a th ư vi ệ n string.h for(int i=0; i < do_dai; i++) if(s[i]=='a')dem++; return dem; } Hoặ c không c ầ n s ử d ụ ng hàm tính đ ộ dài xâu: Code:
  73. int dem_ki_tu(char *s){ int i=0, dem=0; while(s[i]!='\0'){ if(s[i]=='a')dem++; i++; } return dem; } Dự a vào hàm trên ta có th ể làm 1 hàm t ổ ng quát đ ể đ ế m kí t ự b ấ t kỳ nh ư sau: Code: int dem_ki_tu(char *s, char ki_tu_can_dem){ int i=0, dem=0; while(s[i]!='\0'){ if(s[i]== ki_tu_can_dem)dem++; i++; } return dem; } Vớ i hàm này khi c ầ n đ ế m kí t ự 'a' thì s ẽ g ọ i hàm dem_ki_tu(s, 'a') Sử d ụ ng hàm này ta vi ế t ch ươ ng trình hoàn ch ỉ nh nh ư sau: Code: #include int dem_ki_tu(char *s, char ki_tu_can_dem){ int i=0, dem=0; while(s[i]!='\0'){ if(s[i]== ki_tu_can_dem)dem++; i++; } return dem; } void main(){ char st[100]; cout<<"Nhap xau: "; cin.getline(st, 100); cout<<"So luong ki tu 'a' trong xau = "<< dem_ki_tu(st, 'a'); } Bài số 3: Cắ t các d ấ u cách th ừ a bên ph ả i xâu ví dụ xâu là " tra thai " sau khi cắ t các d ấ u cách th ừ a bên ph ả i s ẽ là " tra thai"
  74. Phân tích: Ta biế t cu ố i m ỗ i xâu là kí t ự null (kí t ự có mã 0). nên n ế u xâu có các d ấ u cách th ừ a bên phả i, ta làm sao đ ể đ ặ t kí t ự null vào đúng ch ỗ là xong. V ậ y c ầ n tìm v ị trí ngoài cùng không phả i là d ấ u cách, khi đó gán cho giá tr ị null cho ph ầ n t ử ti ế p theo là xong. Ta viế t hàm rtrim, sẽ thay đ ổ i tham s ố truy ề n vào, làm cho nó m ấ t đi các d ấ u cách th ừ a nh ư sau: Code: int length(const char *s){ int dem=0; while(s[dem]!='\0')dem++; return dem; } void rtrim(char *s){ int i=length(s)-1; while(s[i]==' ') {i ;} s[i+1]=0; } Hoặ c t ươ ng đ ươ ng (nh ư ng hàm rtrim gọ n h ơ n 1 tý): Code: int length(const char *s){ int dem=0; while(s[dem]!='\0')dem++; return dem; } void rtrim(char *s){ int i=length(s); while(s[ i]==' '); s[i+1]=0; } Ứng d ụ ng hàm trên ta vi ế t ch ươ ng trình hoàn ch ỉ nh nh ư sau: Code: #include int length(const char *s){ int dem=0; while(s[d]!='\0')dem++; return dem; } void rtrim(char *s){ int i=length(s); while(s[ i]==' '); s[i+1]=0; } void main(){ char st[100]; cout<<"Nhap xau: "; cin.getline(st, 100);
  75. cout 0) for(int k=0; t[i];)s[k++]=s[i++]; } Bài 5: Viế t hàm lo ạ i b ỏ nh ữ ng d ấ u cách th ừ a ở gi ữ a xâu, làm cho các t ừ cách nhau đúng 1 ký tự Phân tích: Ta duyệ t t ừ đ ầ u đ ế n cu ố i xâu, n ế u có 2 d ấ u cách đ ứ ng c ạ nh nhau thì ta d ồ n phía sau lên 1 kí tự code như sau, code này còn c ắ t c ả d ấ u cách th ừ a bên trái và bên ph ả i (n ế u còn thì ch ỉ còn 1) Code: void trim(char *s){ for(int i=0; s[i]!='\0'; ) if(s[i]==' ' && s[i+1]==' ') for(int k=i; s[k]!='\0'; k++) s[k] = s[k+1]; else i++; if(s[i-1]==' ') //cắ t đi kí t ự tr ắ ng bên ph ả i (n ế u còn) s[i-1] = 0; if(s[0]==' ') //cắ t đi kí t ự tr ắ ng bên trái (n ế u còn) for(i=0; s[i]!='\0'; i++) s[i] = s[i+1]; } Ứng d ụ ng hàm trên vi ế t ch ươ ng trình hoàn ch ỉ nh nh ư sau: Code:
  76. #include void trim(char *s){ for(int i=0; s[i]!='\0'; ) if(s[i]==' ' && s[i+1]==' ') for(int k=i; s[k]!='\0'; k++) s[k] = s[k+1]; else i++; if(s[i-1]==' ') //cắ t đi kí t ự tr ắ ng bên ph ả i (n ế u còn) s[i-1] = 0; if(s[0]==' ') //cắ t đi kí t ự tr ắ ng bên trái (n ế u còn) for(i=0; s[i]!='\0'; i++) s[i] = s[i+1]; } void main(){ char s[80]; cout<<"Moi ngai nhap xau ky tu: "; cin.getline(s,80); trim(s); cout<<s<<'!'; //in dấ u ch ấ m than ! ngay sau xâu s đ ể nhìn th ấ y hàm c ắ t đượ c c ả d ấ u cách th ừ a bên ph ả i } Mai đi công tác play roài, hok còn thờ i gian post bài, nên đ ư a ra vài đ ầ u bài, các b ạ n phân tích và cùng thả o lu ậ n cách gi ả i nhé, ai gi ả i đúng khi v ề malyfo sẽ tuyên d ươ ng (và cho k ẹ o n ữ a, hehe) Bài 6: Viế t hàm đ ế m s ố t ừ xu ấ t hi ệ n trong xâu. Ứ ng d ụ ng hàm đó vi ế t ch ươ ng trình hoàn chỉ nh nh ậ p xâu ký t ự t ừ bàn phím, in ra màn hình s ố t ừ có trong xâu Bài 7: Viế t hàm đ ế m s ố t ừ b ắ t đ ầ u b ằ ng 'tr' có trong xâu. Ứ ng d ụ ng hàm đó vi ế t ch ươ ng trình hoàn chỉ nh nh ậ p xâu ký t ự t ừ bàn phím, in ra màn hình s ố t ừ b ắ t đ ầ u b ằ ng 'tr' có trong xâu. Bài 8: Viế t hàm đ ế m s ố k ế t thúc b ằ ng 'ng' có trong xâu. Ứ ng d ụ ng hàm đó vi ế t ch ươ ng trình hoàn chỉ nh nh ậ p xâu ký t ự t ừ bàn phím, in ra màn hình s ố t ừ k ế t thúc b ằ ng 'ng' có trong xâu. Bài 9: Viế t hàm in các t ừ trong xâu, m ỗ i t ừ trên 1 dòng. Ứ ng d ụ ng hàm đó vi ế t ch ươ ng trình hoàn chỉ nh nh ậ p xâu ký t ự t ừ bàn phím, in ra màn hình các t ừ trong xâu, m ỗ i t ừ trên 1 dòng Bài 10: Viế t hàm ki ể m tra xem 1 chu ỗ i có ph ả i ch ứ a toàn ký t ự s ố hay không? Ứ ng d ụ ng hàm trên và hàm trong bài 9 viế t ch ươ ng trình hoàn ch ỉ nh nh ậ p xâu ký t ự t ừ bàn phím đ ể đ ế m xem trong xâu có bao nhiêu từ toàn là s ố ? Bài 11: Viế t hàm ki ể m tra xem 1 chu ỗ i có ph ả i ch ứ a toàn ký t ự s ố hay không? N ế u toàn là s ố thì tính giá trị c ủ a s ố t ươ ng ứ ng v ớ i chu ỗ i đó? Ứ ng d ụ ng hàm trên và hàm trong bài 9 vi ế t chươ ng trình hoàn ch ỉ nh nh ậ p xâu ký t ự t ừ bàn phím đ ể tính t ổ ng các t ừ là s ố trong xâu? Bài 12: chư a nghĩ ra, hehe, th ế cái đã, các b ạ n th ử s ứ c nhé, quan tr ọ ng là ch ỗ phân tích đ ể ngườ i khác hi ể u. hì, n ế u các bài trên có ai không hi ể u thì cho ý ki ế n nhé