Bài tập lập trình C++

doc 97 trang vanle 2330
Bạn đang xem 20 trang mẫu của tài liệu "Bài tập lập trình C++", để 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:

  • docbai_tap_lap_trinh_c.doc

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

  1. Bài tập lập trình C++ 1
  2. Mục lục Trang 1 1. MÃ HÓA THÔNG ĐIỆP 2. GIẢI PHƯƠNG TRÌNH BẬC NHẤT 3. TÍNH CĂN BẬC HAI THEO PHƯƠNG PHÁP LẶP NEWTON 4. CẤU TRÚC VÀ CÁC HÀM THAO TÁC TRÊN SỐ PHỨC 5. DÃY TĂNG DẦN 6. DÃY TĂNG CÓ TỔNG DÀI NHẤT 7. QUẢN LÝ SINH VIÊN 8. GIẢI PHƯƠNG TRÌNH BẬC HAI 9. MA PHƯƠNG 10. FILE VÀ HỆ THỐNG Trang 2 1. SẮP XẾP MẢNG 2. Một ví dụ về Đa hình 3. Tiếp một ví dụ về Đa hình 4. Tổng hai ma trận 5. Một ví dụ về sử dụng template và quá tải toán tử Nhập xuất 6. Ví dụ về quá tải toán tử 7. Đếm số lần xuất hiện của các ký tự trong chuỗi 8. Bài toán Ancarokhi 9. Chứng minh đẳng thức An Casi 10. Hiện bảng mã ASCII 11. In ra năm âm lịch tương ứng với năm nhập vào. 12. In ra bảng cửu chương 13. Nhập chuỗi và in chuỗi 14. Giải hệ phương trình bậc nhất. 15. Tính thứ của ngày Trang 3 1. Chuyển số La Mã sang số Ả rập 2. Chuyển năm sang số La Mã 3. Thuật toán sắp xếp bẳng Radix sort 4. Danh sách liên kết đơn (Thuật toán vừa chèn vừa sắp xếp) 5. Quá tải toàn tử nhập xuất và sử dụng template 6. Chương trình đếm số ký tự trong một chuỗi ASCII 7. Biểu diễn số dưới dạng bit 8. Đảo chuỗi 2
  3. 9. Chương trình xem tập tin 10. Giải bài toán trâu ăn cỏ 11. Loại bỏ khoảng trống thừa trong chuỗi 12. Tìm tất cả các ước của một số N 13. Bội số chung và ước số chung 14. Trộn 2 dãy giảm thành một dãy tăng 15. Tính tích 2 ma trận: 16. In danh sách các số hoàn hảo nhỏ hơn số N nhập từ user Trang 4 1. Bài in ra lịch của một năm bất kỳ lớn hơn 1700 2. Bài tập kiểm tra dấu ngoặc đúng. 3. Bài toán Tám Hoàng Hậu 4. In ra số Hex tương ứng với một số nguyên dương 5. Liệt kê các hoán vị của N phần tử 6. In chuỗi theo các từ mỗi từ một dòng 7. In ra chữ số hàng trăm hàng chục hàng đơn vị 8. Tìm phần tử lớn nhất nhỏ nhất trong mảng một chiều 9. Tính tổ hợp chập K của N phần tử 10. Chương trình đọc số có 1,2 hoặc 3 chữ số. 11. Tính số ngày trong một tháng trong một năm bất kỳ 12. Bài kiểm tra số nguyên tố 13. Tìm max min của 4 số 14. Tìm n số Fibonaci đầu tiên Trang 5 1. (Ngân hàng)Tìm số tiền nhận trong n tháng khi biết lãi xuất 2. In ra dãy số ngược so với dãy số nhập vào 3. Trò chơi 8 hòn bi 4. Kiểm tra số đối xứng 5. Điền giá trị cho một mảng vuông theo chiều kim đồng hồ 6. In hình tam giác 7. Trộn hai mảng tăng dần thành một mảng tăng dần 8. Tìm vị trí đầu và vị trí cuối của một số trong một dãy số 9. Tính x^1/1! + x^2/2! + x^3/3! + + x^n/n! 10. Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 3 đĩa 11. Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 4 đĩa 3
  4. MÃ HÓA THÔNG ĐIỆP C code: Lựa chọn code | Ẩn/Hiện code #include #include #include char *crypt(char *tdiep, int column) { char tam[255], *result; int i = 0, k = 0, n, j=0; while(tdiep[i] != 0) { if (isalnum(tdiep[i])) tam[k++] = tdiep[i]; i++; } tam[k] = 0; result = (char *)malloc(k+1); for (i=0; i<column; i++) { n = 0; while(n+i < k) { result[j++] = tolower(tam[n+i]); n += column; } } result[k] = 0; return result; } void main() { char thongdiep[255], *mahoa; int col; printf("\nNhap thong diep can ma hoa : "); gets(thongdiep); printf("\nCho biet so cot : "); scanf("%d", &col); mahoa = crypt(thongdiep, col); printf("\nThong diep da duoc ma hoa thanh : %s", mahoa); getch(); } 4
  5. GIẢI PHƯƠNG TRÌNH BẬC NHẤT C code: #include void main() { float a, b; printf("\nGiai phuong trinh bac nhat AX + B = 0"); printf("\nCho biet ba he so A B : "); scanf("%f%f", &a, &b); if (a==0) if (b!=0) printf("Phuong trinh vo nghiem"); else printf("Phuong trinh co nghiem khong xac dinh"); else printf("Dap so cua phuong trinh tren = %f", -b/a); getch(); } TÍNH CĂN BẬC HAI THEO PHƯƠNG PHÁP LẶP NEWTON #include #include void main() { double a, xn, ketqua; printf("\nNhap vao so muon tinh can bac hai : "); scanf("%lf", &a); xn = (a+1)/2; do { ketqua = xn; xn = 0.5 * (xn + a/xn); } while (fabs(xn-ketqua) > 0.0001); printf("\nKet qua = %lf", xn); getch(); } 5
  6. CẤU TRÚC VÀ CÁC HÀM THAO TÁC TRÊN SỐ PHỨC #include typedef struct tagcomplex { float thuc, ao; } complex; complex tong(complex a, complex { complex c; c.thuc = a.thuc + b.thuc; c.ao = a.ao + b.ao; return c; } complex hieu(complex a, complex { complex c; c.thuc = a.thuc - b.thuc; c.ao = a.ao - b.ao; return c; } complex tich(complex a, complex { complex c; c.thuc = a.thuc*b.thuc - a.ao*b.ao; c.ao = a.thuc*b.ao + a.ao*b.thuc; return c; } complex thuong(complex a, complex { complex c; float tongbp; tongbp = b.thuc*b.thuc + b.ao*b.ao; c.thuc = (a.thuc*a.ao + b.thuc*b.ao)/tongbp; c.ao = (a.ao*b.thuc - a.thuc*b.ao)/tongbp; return c; } float argument(complex a) { return acos(a.thuc/sqrt(a.thuc*a.thuc + a.ao*a.ao)); } float modul(complex a) 6
  7. { return sqrt(a.thuc*a.thuc + a.ao*a.ao); } void print_complex(complex a) { printf("%.2f + %.2fi", a.thuc, a.ao); } void main() { complex a, b, c; printf("\nNhap he so thuc va phuc cua A : "); scanf("%f%f", &a.thuc, &a.ao); printf("\nNhap he so thuc va phuc cua B : "); scanf("%f%f", &b.thuc, &b.ao); printf("\nSo phuc A = "); print_complex(a); printf("\nSo phuc B = "); print_complex( ; printf("\nTong cua chung = "); c = tong(a, ; print_complex©; printf("\nHieu cua chung = "); c = hieu(a, ; print_complex©; printf("\nTich cua chung = "); c = tich(a, ; print_complex©; printf("\nThuong cua chung = "); c = thuong(a, ; print_complex©; printf("\nArgument cua a = %f", argument(a)); printf("\nModul cua a = %f", modul(a)); getch(); } 7
  8. DÃY TĂNG DẦN#include void main() { int a[10], i, maxstart, maxend, maxlen, tmpstart, tmpend, tmplen; printf("\nNhap vao 10 phan tu nguyen cua day :"); for (i=0; i<10; i++) scanf("%d", &a[i]); printf("Day da cho :\n"); for (i=0; i<10; i++) printf("%6d", a[i]); maxstart = maxend = tmpstart = tmpend = 0; maxlen = tmplen = 1; for (i=1; i< 10; i++) { if (a[i] < a[tmpend]) { if (maxlen < tmplen) { maxstart = tmpstart; maxend = tmpend; maxlen = tmplen; } tmpstart = tmpend = i; tmplen = 1; } else { tmplen++; tmpend++; } } if (maxlen < tmplen) { maxstart = tmpstart; maxend = tmpend; } printf("\nDay tang co so phan tu nhieu nhat la : \n"); for (i=maxstart; i<=maxend; i++) printf("%6d", a[i]); getch(); } 8
  9. DÃY TĂNG CÓ TỔNG DÀI NHẤT#include void main() { int a[10], i, maxstart, maxend, maxtotal, tmpstart, tmpend, tmptotal; printf("\nNhap vao 10 phan tu nguyen cua day :"); for (i=0; i<10; i++) scanf("%d", &a[i]); printf("Day da cho :\n"); for (i=0; i<10; i++) printf("%6d", a[i]); maxstart = maxend = tmpstart = tmpend = 0; maxtotal = tmptotal = a[0]; for (i=1; i< 10; i++) { if (a[i] < a[tmpend]) { if (maxtotal < tmptotal) { maxstart = tmpstart; maxend = tmpend; maxtotal = tmptotal; } tmpstart = tmpend = i; tmptotal = a[i]; } else { tmptotal += a[i]; tmpend++; } } if (maxtotal < tmptotal) { maxstart = tmpstart; maxend = tmpend; } printf("\nDay tang co tong nhieu nhat la : \n"); for (i=maxstart; i<=maxend; i++) printf("%6d", a[i]); getch(); } 9
  10. QUẢN LÝ SINH VIÊN #include #include #include #include #define MAX 100 #define TOAN 0 #define LY 1 #define HOA 2 struct sinhvien { char mslop[5]; char hoten[35]; float diem[3]; } danhsach[MAX]; int n = 0; void nhapmoi() { char mslop[5], tmp[3]; int i; float diem[3]; do { printf("\nCho biet ma so lop : "); gets(mslop); if (strlen(mslop)) { strcpy(danhsach[n].mslop, mslop); printf("\nCho biet ho ten : "); gets(danhsach[n].hoten); printf("\nCho biet diem so : "); for (i=0; i<3; i++) { scanf("%f", &diem[i]); danhsach[n].diem[i] = diem[i]; } gets(tmp); n++; } } while (strlen(mslop)); } void timkiem() { char mslop[5]; int i = 0, found = 0; 10
  11. printf("\nCho biet ma so lop : "); gets(mslop); if (strlen(mslop)) while (i<n) if (stricmp(danhsach[i].mslop, mslop) == 0) { printf("\nMa so lop : %s", danhsach[i].mslop); printf("\nHo va ten : %s", danhsach[i].hoten); printf("\nDiem Toan : %f", danhsach[i].diem[TOAN]); printf("\nDiem Ly : %f", danhsach[i].diem[LY]); printf("\nDiem Hoa : %f", danhsach[i].diem[HOA]); found = 1; break; } else i++; if (!found) printf("\nKhong tim thay!!!"); } void xoa() { char mslop[5], traloi; int i = 0, j; printf("\nCho biet ma so lop : "); gets(mslop); if (strlen(mslop)) while (i<n) if (stricmp(danhsach[i].mslop, mslop) == 0) { printf("\nMa so lop : %s", danhsach[i].mslop); printf("\nHo va ten : %s", danhsach[i].hoten); printf("\nDiem Toan : %f", danhsach[i].diem[TOAN]); printf("\nDiem Ly : %f", danhsach[i].diem[LY]); printf("\nDiem Hoa : %f", danhsach[i].diem[HOA]); printf("\nCo muon xoa khong (C/K)? "); do { traloi = toupper(getch()); } while (traloi != 'C' && traloi != 'K'); putc(traloi, stdout); if (traloi == 'C') { n ; memcpy(&danhsach[i], &danhsach[i+1], sizeof(struct sinhvien) * (n-i)); break; } 11
  12. } else i++; } void menu() { printf("\n "); printf("\n* 1. Them *"); printf("\n* 2. Xoa *"); printf("\n* 3. Tim kiem *"); printf("\n* 0. Thoat *"); printf("\n "); printf("\nChon lua ? "); } void main() { char traloi; do { menu(); do { traloi = getch(); } while (traloi '3'); putc(traloi, stdout); switch (traloi) { case '1' : nhapmoi(); break; case '2' : xoa(); break; case '3' : timkiem(); break; } } while (traloi != '0'); } GIẢI PHƯƠNG TRÌNH BẬC HAI #include #include void main() { float a, b, c, delta; printf("\nGiai phuong trinh bac hai AXý + BX + C = 0"); printf("\nCho biet ba he so A B C : "); scanf("%f%f%f", &a, &b, &c); 12
  13. delta = b * b - 4 * a * c; if (delta #include // func declaration void matrix( int n ); // main() int main(void) { int n; // input until it's valid. do { printf("\n Plz input size of matrix [ odd size & n 20 ) { n = 19 ; // in case of n is greater than 20 printf("\n %d is greater than 20 & set to be default as 19 .",n ); } // end if // call matrix() matrix(n); // stop to watch getch(); return 0; } 13
  14. // function matrix(int n) void matrix( int n ) { int a[20][20]; int i, j, row, col, count = 1; int old_row, old_col, sum = 0; // set starting value of array for ( i = 0 ; i < n ; i++ ) for ( j = 0 ; j < n ; j++ ) a[i][j] = 0; // set the 1st value to start row = 0; col = (n-1) / 2; while ( count < n*n + 1 ) { a[row][col] = count++ ; // set value for elements old_row = row ; old_col = col; // save the last addresses // define whether going out of array row -= 1; if ( row == -1 ) row = n - 1; col += 1; if ( col == n ) col = 0; // in case of already having number if ( a[row][col] != 0 ) { row = old_row + 1; col = old_col; } // end if } // end while // print result printf("\n"); for ( i = 0 ; i < n ; i++ ) { for ( j = 0 ; j < n ; j++ ) printf("%4d",a[i][j]); printf("\n"); } // end for // calculate sum for ( j = 0 ; j < n ; j++ ) sum += a[0][j]; printf("\n Sum of each row - column - diagonal line is : %d " , sum); 14
  15. return; } FILE VÀ HỆ THỐNG 1. Xóa 1 file dùng Remove #include int main() { remove("d:/urls1.dat"); return 0; } 2. Xóa 1 File dùng Unlink #include int main() { remove("C:/pete.txt"); return 0; } 3. Cho biết thông tin FAT#include #include void main(void) { struct fatinfo fat; getfatd(&fat); printf("Sectors per cluster %d\n", fat.fi_sclus); printf("Clusters per disk %u\n", fat.fi_nclus); printf("Bytes per cluster %d\n", fat.fi_bysec); printf("Disk type %x\n", fat.fi_fatid & 0xFF); } 4. Đếm tần suất 1 kí tự trong 1 file # include # include main() { FILE *fp; char in[100]; long int freq[257]; int i; printf("\nFile frequency table generator\n\n"); 15
  16. printf("\nInput file:"); scanf("%s",in); fp=fopen(in,"rb"); if(fp==NULL) { printf("\nCould not open input file.Aborting\n"); return 1; } for(i=0;i<257;i++) freq[i]=0; while(i=fgetc(fp),i!=EOF) { freq[i]++; } fcloseall(); fp=fopen("count.txt","w"); fprintf(fp,"\nCharacter frequency table of %s\n",in); fprintf(fp,"\nCharacter ASCII frequency\n\n"); for(i=0;i<256;i++) { if(i==26) { fprintf(fp,"\t 26\t %ld\n",freq[26]); } else if(i==9) { fprintf(fp,"\t 9\t %ld",freq[9]); } else if(i<10) { fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]); } else if(i<100) { fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]); } else { fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]); } } fcloseall(); printf("\nFrequency table copied to count.txt\n"); } 5. Đọc nội dung 1 file 16
  17. #include void main(void) { FILE *fp; char ch; fp = fopen("websites.txt","r"); ch = getc(fp); while(ch!=EOF) { putchar(ch); ch = getc(fp); } printf("\n\n"); } 6. Chọn ổ đĩa trong DOS#include #include void main(void) { int drives; drives = setdisk(3); printf("The number of available drives is %d\n", drives); } 7.Chọn ổ đĩa trong WINS #include #include #include void main(void) { char szBuffer[MAX_PATH+100]; UINT nDrive, AvailDrive = 0; int dwLogicalDrives = GetLogicalDrives(); DWORD Success; printf("Number of logical drives: %d\n", dwLogicalDrives); for (nDrive = 0; nDrive < 32; nDrive++) { if (dwLogicalDrives & (1 << nDrive)) { // Is drive available? AvailDrive++; // Get disk information. wsprintf(szBuffer, "%c:\\", nDrive+'A', '\0'); 17
  18. // Print out information. if(SetCurrentDirectory(szBuffer)) printf("%s Is Now Current\n", szBuffer); else printf("Could not set %s as the current drive\n", szBuffer); } } printf("Number of drives available: %d\n", AvailDrive); } 8. Cho biết kích thước 1 file #include #include #include #include int main() { int fp; long file_size; if ((fp = open("f:/cprojects/urls.txt", O_RDONLY)) == -1) printf("Error opening the file \n"); else { file_size = filelength(file_handle); printf("The file size in bytes is %ld\n", file_size); close(fp); } return 0; } Tính thứ của ngày #include #include struct date { int month; int day; int year; } date_1; long int funct1 (int y,int m) { 18
  19. long int result; if ( m <= 2 ) y -= 1; result = y; return (result); } long int funct2 (int m) { long int result; if ( m <= 2 ) result = m + 13; else result = m + 1; return(result); } long int day_count (int m, int d, int y) { long int number; number = 1461 * funct1(y,m) / 4 + 153 * funct2(m) / 5 + d; return (number); } void main () { long int number_of_days1; int day_of_week; printf ("Nhap vao mot ngay (dd mm yyyy), vd 12 03 1999 \n"); scanf ("%d %d %d", &date_1.day, &date_1.month, &date_1.year); number_of_days1 = day_count (date_1.month, date_1.day, date_1.year); printf ("\nNgay la : " ); day_of_week = (number_of_days1 - 621049) % 7; switch (day_of_week) { case 0 : printf ("Chu Nhat,"); break; case 1 : printf ("Thu Hai,"); break; case 2 : printf ("Thu Ba,"); break; case 3 : printf ("Thu Tu,"); break; case 4 : printf ("Thu Nam,"); break; case 5 : 19
  20. printf ("Thu Sau,"); break; case 6 : printf ("Thu Bay,"); break; } getch(); } Giải hệ phương trình bậc nhất. #include #include void main() { int a, b, c, d, e, f, dthuc; float x, y; printf("\nNhap vao cac he so a,b,c,d,e,f : "); scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f); dthuc = b*d - e*a; if (dthuc != 0) { y = (float)(c*d-a*f)/dthuc; x = (float)(b*f-c*e)/dthuc; printf("Nghiem x = %f, y = %f", x, y); } else printf("\nHe phuong trinh vo ngiem."); getch(); } Nhập chuỗi và in chuỗi #include #include void main() { char name[80]; printf("\nXin cho biet ten cua ban : "); gets(name); printf("Chao %s\n", name); getch(); } In ra bảng cửu chương #include #include #include void main() { 20
  21. int i, j; char chuoi[] = "B A N G C U U C H U O N G"; char ten[10][5] = {"","","Hai", "Ba", "Bon", "Nam", "Sau", "Bay", "Tam", "Chin"}; clrscr(); textcolor(YELLOW); gotoxy((80 - strlen(chuoi)) / 2, 1); cprintf("%s\n\n", chuoi); for (i=2; i #include void main() { unsigned nam; char can[][5] = {"Giap", "At", "Binh", "Dinh", "Mau", "Ky", "Canh", "Tan", "Nham", "Quy"}; char chi[][5] = {"Ty", "Suu", "Dan", "Meo", "Thin", "Ty", "Ngo", "Mao", "Than", "Dau", "Tuat", "Hoi"}; printf("\nNhap nam can biet : "); scanf("%d", &nam); printf("Nam am lich cua %d la %s %s", nam, can[(nam+6)%10], chi[(nam+8)%12]); getch(); } Hiện bảng mã ASCII #include #include void main() { int i, j; clrscr(); printf(" "); for (j=0; j<16; j++) 21
  22. printf("%3d", j); for (i=2; i unsigned long vetrai(unsigned long n) { unsigned long tmp=0, i; for (i=1; i 22
  23. void main() { int dai, rong; printf("\nBai toan Ancarokhi : Tim dien tich hinh chu nhat co chieu dai gap hai"); printf("\nchieu rong va dien tich = chu vi"); for (dai = 1; dai #include void main() { char chuoi[80]; int i = 0, count = 0; printf("\nNhap vao mot chuoi bat ky : "); gets(chuoi); while (chuoi[i] != 0) { if (isalpha(chuoi[i++])) count++; } printf("So ky tu trong chuoi = %d", count); getch(); } 23
  24. Ví dụ về quá tải toán tử #include #include #include class PS { public: long tu,mau; PS() { tu=0; mau=0; } ~PS(){}; int uscln(long a,long b); void rutgon(); void nhap(); void xuat(); PS operator+(PS &a); PS operator-(PS &a); PS operator*(PS &a); PS operator/(PS &a); }; int PS::uscln(long a,long b) { if(a!=0 && b!=0) { a=abs(a); b=abs(b); while(a!=b) { if(a>b) a=a-b; else b=b-a; } return a; } else return 1; } void PS::rutgon() { int u; u=uscln(tu,mau); tu=tu/u; mau=mau/u; } void PS::nhap() { Nhap: cout<<"Nhap tu so "; 24
  25. cin>>tu; cout >mau; if(mau==0) { cout<<"Mau phai khac 0"<<endl; goto Nhap; } } void PS::xuat() { rutgon(); if(mau<0) {mau=-mau; tu=-tu;} if(tu==0) cout<<"0"<<endl; else if(mau==1) cout<<tu<<endl; else cout<<tu<<"/"<<mau<<endl; } PS PS::operator+(PS &a) { a.tu=tu*a.mau+mau*a.tu; a.mau=mau*a.mau; return a; } PS PS::operator-(PS &a) { a.tu=tu*a.mau-mau*a.tu; a.mau=mau*a.mau; return a; } PS PS::operator*(PS &a) { a.tu=tu*a.tu; a.mau=mau*a.mau; return a; } PS PS::operator/(PS &a) { a.tu=tu*a.mau; a.mau=mau*a.tu; return a; } 25
  26. Một ví dụ về sử dụng template và quá tải toán tử Nhập xuất #include #include #include class sv { private : char ten[100]; float Diem; public: sv() { Diem=0; } sv(char a[],float D) { strcpy(ten,a); Diem=D; } sv(sv&a) { Diem = a.Diem; strcpy(ten,a.ten); } void set_sv(char a[],float D) { strcpy(ten,a); Diem=D; } float get_diem()const { return Diem; } char* get_ten() { return ten; } friend ostream&operator >(istream&in,sv&); operator float() { return float(Diem); } }; ostream&operator >(istream&in,sv&a) { cout<<"\t\t\tNhap ten "; cin.ignore(); cin.getline(a.ten,50); 26
  27. cout >a.Diem; } int ucln(int a,int b) { int r; while(b) { r = a%b; a = b; b=r; } return a; } class phanso { private: float tu,mau; public: phanso(float a=1,float b=1) { if(b) { tu = a; mau = b; } else { tu =1; mau=1; } } void set_phanso(float a,float b) { tu =a; mau = b; } void nhap() { cout >tu; cout >mau; toigian(); } void toigian() { int t=ucln(tu,mau); tu = tu/t; mau = mau/t; } operator float() { return float(tu/mau); 27
  28. } friend ostream&operator >(istream&in,phanso&a); }; ostream&operator "; } istream&operator >>(istream&in,phanso&a) { cout >a.tu; cout >a.mau; } template class set { private: T data[n]; int spt; public: set() { spt=0; } set(const set&a) { for(int i=0;i &a); friend set operator +(set&a,set&b); friend set operator *(set&a,set&b); friend set operator -(set&a,set&b); set operator =(const set&b) { for(int i=0;i void set ::them(T&a) { if(spt 28
  29. bool set ::search(T&a) { for(int i=0;i ostream&operator &a) { if(a.spt==0) out "; } } template set operator +(set &a,set &b) { set r(a); for(int i=0;i set operator -(set &a,set &b) { set r; for(int i=0;i set operator *(set &a,set &b) { set r; for(int i=0;i a; set c; 29
  30. set d; set e; set f; set g; set b; int n,m,l; float r; sv A; phanso s; cout >n; for(int i=0;i >r; a.them(r); }clrscr(); cout >m; for(int i=0;i >s; b.them(s); c.them(s);clrscr(); } clrscr(); cout >l; for(int i=0;i >A; g.them(A); clrscr(); } clrscr(); textcolor(YELLOW+RED); cprintf("%s","\t\t\tchuong trinh da gan cac so 1 cach tu dong ta duo c "); cout<<"\n\nday so thuc vua nhap "<<endl; cout<<a; cout<<"\n\nday phan so vua nhap "<<endl; cout<<b; cout<<"\n\tDay sinh vien vua nhap "<<endl; cout<<g; getch();clrscr(); d = a+c; cout<<"\n\n hop cua hai tap hop phan so va so thuc la "<<endl;; cout<<d; e=a*c; cout<<"\n\n giao cua hai tap so thuc va phan so la "<<endl; cout<<e; cout<<"\n\nhieu cua hai tap so thuc va phan so la "<<endl; f=a-c; cout<<f; 30
  31. getch(); } Tổng hai ma trận #include #include #include void congmt(float a[][10],float b[][10],float c[][10],int hang,int cot); void nhapmt(float a[][10],int hang,int cot); void inmt(float a[][10],int hang,int cot); void main() { system("color 3e"); float a[10][10],b[10][10],c[10][10]; int hang1,cot1; cout >hang1; cout >cot1; nhapmt(a,hang1,cot1); inmt(a,hang1,cot1); int hang2,cot2; cout >hang2; }while(hang2 != hang1); do { cout >cot2; }while(cot2 != cot1); nhapmt(b,hang2,cot2); inmt(b,hang2,cot2); cout<<"\nVay tong cua hai ma tran a,b la: \n"; congmt(a,b,c,hang1,cot1); inmt(c,hang1,cot1); getch(); } void congmt(float a[][10],float b[][10],float c[][10],int hang,int cot) { for (int i=0; i<hang; i++) for (int j=0; j<cot; j++) c[i][j] = a[i][j] + b[i][j]; } void nhapmt(float a[][10],int hang,int cot) { for(int i = 0;i < hang;i++) { 31
  32. for(int j = 0; j >a[i][j]; } } } void inmt(float a[][10],int hang,int cot) { for(int i = 0; i #include #include class Point { private: int x; int y; public: Point() { x = 0; y = 0; } Point(int a,int b) { x = a; y = b; } virtual void set(int a,int b) { x = a; y = b; } float gettung() { return y; } float gethoanh() { return x; } float kc(Point t) { return ((x - t.x)*(x - t.x) + (y - t.y)*(y - t.y)); } virtual void in() { cout<<"\n("<<x<<";"<<y<<")"; 32
  33. } }; class Cpoint : protected Point { private: int mau; public: Cpoint() : Point() { mau = 0; } Cpoint(int a,int b,int mau_) : Point(a,b) { mau = mau_; } void set(int a,int b,int mau_) { Point::set(a,b); mau = mau_; } void in() { Point::in(); cout in(); delete p; p = new Point(5,2); p->in(); getch(); } Một ví dụ về Đa hình #include #include #include class hinhve { public: virtual float dientich() = 0; virtual char *ten() = 0; virtual void in()=0; }; class haichieu : public hinhve { public: virtual float chuvi() = 0; void in() { 33
  34. cout<<"ten cua hinh: "<<ten() <<" ,dien tich la: "<<dientich() <<" ,chu vi la: "<<chuvi()<<endl; } }; class bachieu : public hinhve { public: virtual float thetich() = 0; void in() { cout<<"ten cua hinh: "<<ten() <<" ,dien tich la: "<<dientich() <<" ,the tich la: "<<thetich()<<endl; } }; class hinhtron : public haichieu { private: float r; public: hinhtron() { r = 0;} hinhtron(float bk) {r = bk;} float chuvi() { return 2*3.14*r; } float dientich() { return 3.14*r*r; } char *ten() { return "Hinh Tron"; } }; class hinhvuong : public haichieu { private: float a; public: hinhvuong(float x) { a = x; } float chuvi() { return a*4; } float dientich() { 34
  35. return a*a; } char *ten() { return "Hinh Vuong"; } }; class tgdeu : public haichieu { private: float a; public: tgdeu(float x) : a(x){} float chuvi() { return 3*a; } float dientich() { return a*a*sqrt(3)/2; } char *ten() { return "Hinh tam giac deu"; } }; class cau: public bachieu { private: float r; public: cau(float bk): r(bk){} float thetich() { return r*r*r*3.14;} float dientich() { return 4*3.14*r*r; } char *ten() { return "Hinh Cau"; } }; class lapphuong : public bachieu { private: float a; public: lapphuong(float x) : a(x) {} float thetich() { return a*a*a; } float dientich() { return 6*a*a; } char * ten() { return "Hinh Lap Phuong"; } }; void main() { hinhve *p; p = new hinhtron(3); p->in(); 35
  36. delete p; p = new lapphuong(3); p -> in(); delete p; p = new cau(3); p -> in(); delete p; p = new tgdeu(5); p -> in(); delete p; p = new hinhvuong(6); p -> in(); getch(); } SẮP XẾP MẢNG #include #include #include //=== void taolap(int *A,int n) { int i; printf("\n Tao lap day so:\n"); for(i=0;i A[j]) { temp=A[i]; A[i]=A[j]; A[j]=temp; } } } printf("\n Ket qua thu duoc la:"); dayso(A,n); } void luachon() 36
  37. { clrscr(); int *A,n; printf("\n \t SAP XEP KIEU LUA CHON\n"); printf("\n Nhap so phan tu n="); scanf("%d",&n); A=(int*)malloc(n*sizeof(int)); taolap(A,n); select(A,n); free(A); getch(); } //=== void in2(int *A,int n) { int i; for(i=0;i =0&&temp<A[j];j ) A[j+1]=A[j]; A[j+1]=temp; printf("\n\nKet qua lan thu %d:",i); in2(A,i+1); } free(A); getch(); } //=== void tlap(int *A,int n) { int i; printf("\n"); printf("\n Tao lap day so:\n"); for(i=0;i<n;i++) { 37
  38. printf("\n A[%d]=",i); scanf("%d",&A[i]); } } void in1(int *A,int n) { int i; for(i=0;i =i;j ) { if(A[j-1]>A[j]) { temp=A[j-1]; A[j-1]=A[j]; A[j]=temp; } } printf("\n\n Ket qua lan %d:",i); in1(A,n); } } void suibot() { clrscr(); int *A,n; printf("\n SAP XEP KIEU SUI BOT\n"); printf("\n Nhap so phan tu n="); scanf("%d",&n); A=(int*)malloc(n*sizeof(int)); tlap(A,n); bubble(A,n) ; free(A); getch(); } //=== void qs(int *A,int left,int right) { int i,j,x,y; i=left; j=right; x=A[(left+right)/2]; do { while(A[i] x&&j>left)j ; if(i<=j) { y=A[i]; 38
  39. A[i]=A[j]; A[j]=y; i++; j ; } }while(i<=j); if(left<j)qs(A,left,j); if(i<right)qs(A,i,right); } void quick(int *A,int n) { qs(A,0,n-1); } void in3(int *A,int n) { int i; for(i=0;i<n;i++) printf("%5d ",A[i]); } void nhanh() { clrscr(); int *A,n; printf("\n SAP XAP NHANH\n"); printf("\n So phan tu n="); scanf("%d",&n); A=(int*)malloc(n*sizeof(int)); printf("\n\n Tao lap day so:\n"); for(int i=0;i<n;i++) { printf("\n A[%d]=",i); scanf("%d",&A[i]); } quick(A,n); printf("\n\n"); printf("Ket qua thu duoc la:\n\n"); in3(A,n); getch(); free(A); } //=== void in4(int *A,int n) { for(int i=0;i<n;i++) printf("%5d",A[i]); } void merge(int *A,int n) { int i,k,j,low1,up1,low2,up2,size; int *ds; size=1; ds=(int*)malloc(n*sizeof(int)); while(size<n) { low1=0; 39
  40. k=0 ; while(low1+size<n) { low2=low1+size; up1=low2-1; if(low2+size-1<n) up2=low2+size-1; else up2=n-1; for(i=low1,j=low2;i<=up1 && j<=up2;k++) { if(A[i]<=A[j]) ds[k]=A[i++]; else ds[k]=A[j++]; } for(;i<up1;k++) ds[k]=A[i++]; for(;j<up2;k++) ds[k]=A[j++]; low1=up2+1; } for(i=low1;k<n;i++) ds[k++]=A[i]; for(i=0;i<n;i++) A[i]=ds[i]; size*=2; } printf("\n \n Ket qua thu duoc la:\n\n"); in4(A,n); free(ds); } void hoanhap() { clrscr(); int *A,n,i; printf("\n \t SAP XEP KIEU HOA NHAP\n"); printf("\n So phan tu n="); scanf("%d",&n); A=(int*)malloc(n*sizeof(int)); printf("\n Tao lap day so:\n"); for(i=0;i<n;i++) { printf("\nA[%2d]=",i); scanf("%d",&A[i]); } merge(A,n); printf("\n"); getch(); free(A); } //=== void in5(int *A,int n) { for(int i=0;i<n;i++) 40
  41. printf("%5d",A[i]); } void shaker(int *A,int n) { int i,j,temp,tdoi; do { tdoi=0; for(i=n-1;i>0;i ) { if(A[i-1]>A[i]) { temp=A[i-1]; A[i-1]=A[i]; A[i]=temp; tdoi=1; } } for(j=1;j A[j]) { temp=A[j-1]; A[j-1]=A[j]; A[j]=temp; tdoi=1; } } }while(tdoi); printf("\n\n Ket qua la :",tdoi); in5(A,n); } void shaker() { clrscr(); int *A,n,i; printf("\n \tSHAKER_SORT\n"); printf("\n So phan tu n="); scanf("%d",&n); A=(int*)malloc(n*sizeof(int)); printf("\n \n Tao lap day so:\n"); for(i=0;i<n;i++) { printf("\n A[%2d]=",i); scanf("%d",&A[i]); } shaker(A,n); getch(); free(A); } //=== void main() { 41
  42. while(1) { clrscr(); int key; printf("\n\tSAP XEP VA TIM KIEM\n"); printf("\n 1.Selection_sort\n");; printf("\n 2.Bubble_sort\n"); printf("\n 3.Insertion_sort\n"); printf("\n 4.Quick_sort\n"); printf("\n 5.Merge_sort\n"); printf("\n 6.Shaker_sort\n"); printf("\n 0.Tro ve"); printf("\nBam mot phim de chon chuc nang:"); scanf("%d",&key); if(key==0) break; switch(key) { case 1: clrscr(); luachon(); printf("\n\n\tAn phim bat ky de tro lai menu chinh"); getch(); clrscr(); break; case 2: clrscr(); suibot(); printf("\n\n\tAn phim bat ky de tro lai menu chinh"); getch(); clrscr(); break; case 3: clrscr(); tructiep(); printf("\n"); printf("\nAn phim bat ky de tro lai menu chinh"); getch(); clrscr(); break; case 4: clrscr(); nhanh(); printf("\n"); printf("\nAn phim bat ky de tro lai menu chinh"); getch(); clrscr(); break; case 5: clrscr(); hoanhap(); printf("\n"); printf("\nAn phim bat ky de tro lai menu chinh"); getch(); clrscr(); break; case 6: 42
  43. clrscr(); shaker(); printf("\n"); printf("\nAn phim bat ky de tro lai menu chinh"); getch(); clrscr(); break; } } // getch(); } Chuyển số La Mã sang số Ả rập #include #include #include int doigt(char chuoi[],int i); void loi(); void main() { char chuoi[20]; cout<<"Nhap chuoi:"; cin.get(chuoi,20); int nam=0; for(int i=0;i<strlen(chuoi);i++) nam+=doigt(chuoi,i); cout<<nam<<endl; getch(); } int doigt(char chuoi[],int i) { if(!(chuoi[i]=='I'||chuoi[i]=='V'||chuoi[i]=='X'||chuoi[i]=='L'| |chuoi[i]=='C'||chuoi[i]=='D'||chuoi[i]=='M')) loi(); if(chuoi[i]==chuoi[i+1]&&chuoi[i]==chuoi[i+2]&&chuoi[i]==chuoi[i+3]) loi(); if(chuoi[i]=='I') if(chuoi[i+1]=='V'||chuoi[i+1]=='X') { if(chuoi[i+2]=='V'||chuoi[i+2]=='X') loi(); else return -1; } else return 1; if(chuoi[i]=='V') return 5; if(chuoi[i]=='X') if(chuoi[i+1]=='L'||chuoi[i+1]=='C') { if(chuoi[i+2]=='L'||chuoi[i+2]=='C') loi(); 43
  44. else return -10; } else return 10; if(chuoi[i]=='L') return 50; if(chuoi[i]=='C') if(chuoi[i+1]=='D'||chuoi[i+1]=='M') { if(chuoi[i+2]=='D'||chuoi[i+2]=='M') loi(); else return -100; } else return 100; if(chuoi[i]=='D') return 500; if(chuoi[i]=='M') return 1000; } void loi() { cout #include void viet(char a,char b,char c,int so); void kytu(char &a,char &b,char &c,int so); void main() { char x,y,z; int nam; do { cout >nam; } while(nam>=4000||nam<0); cout<<"Nam "<<nam<<" viet trong he La Ma la: "; int tam=nam; int i=3; while(tam!=0) { tam=tam/pow(10.0,i); kytu(x,y,z,i); viet(x,y,z,tam); tam=fmod(nam,pow(10.0,i)); i ; } cout<<endl; } void kytu(char &a,char &b,char &c,int i) 44
  45. { if(i==0) { a='I';b='V';c='X'; } else if(i==1) { a='X';b='L';c='C'; } else if(i==2) { a='C';b='D';c='M'; } else if(i==3) a='M'; } void viet(char a,char b,char c,int so) { if(so==1||so==2||so==3) for(int i=1;i #include #include #include ////Radix sort int getMax(int a[],int n) { int max=a[0]; for(int i=1;i<n;i++) if(max<a[i]) max=a[i]; return max; } int countDigit(int n) { int count=0; while(n) { count++; 45
  46. n/=10; } return count; } int getDigit(int n,int t) { int tt=1; for(int i=0;i<t;i++)tt*=10; return ((n/tt)%10); } void send2Box(int a[],int n,int *b[10],int num[10],int t) { for(int i=0;i<n;i++) { int tt=getDigit(a[i],t); b[tt][num[tt]++]=a[i]; } } void getValue(int a[],int *b[10],int nn[10]) { int j=0; for(int i=0;i<10;i++) { if(nn[i]!=0) { for(int k=0; k<nn[i]; k++)a[j++]=b[i][k]; nn[i]=0; } } } void radixsort(int a[],int n) { int *Box[10]; int number[10]; for(int i=0;i<10;i++) { Box[i]=new int [n]; if(Box[i]==NULL) { printf("Not enough"); exit(0); } number[i]=0; } int nn=countDigit(getMax(a,n)); for(int i=0;i<nn;i++) { send2Box(a,n,Box,number,i); getValue(a,Box,number); } } void xuat(int a[], int n) { int i=0; 46
  47. printf("\n\t"); for (i=0;i 0 va n 100); for (i=0;i #include class Node { private: float data; Node *next; public: Node() { data = 0; next = NULL; } Node(float x) { data = x; next = NULL; } void setnext(Node *p) { next = p; } Node * getnext() 47
  48. { return next; } void setdata(float x) { data = x; } float getdata() { return data; } }; class List { private: Node *head; public: List() {head = NULL;} List(Node *x) {head = x;} void chensapxep(float x) Node *p,*q; p = new Node(x); q = head; if(head == NULL) head = p; else { if(p->getdata() getdata()) { p->setnext(head); head = p; } else { while ( q->getnext()!= NULL) { if ((q->getdata() getdata() && q->getnext()- >getdata() >p->getdata()) || (q->getdata()==p->getdata() && q->getnext()- >getdata() >=p->getdata())) { p->setnext(q->getnext()); q->setnext(p); break; } else q = q->getnext(); } if (q->getnext()==NULL) q->setnext(p); } 48
  49. } } void show() { Node *p = head; p = p->getnext(); if( head != NULL) { while(p != NULL) { cout getdata() getnext(); } } } }; void main() { float so; List p; do { cout >so; p.chensapxep(so); }while(so != 0); p.show(); getch(); } Quá tải toàn tử nhập xuất và sử dụng template /*Chuong trinh nay duoc viet de phuc vu va on tap lai cac kien thuc sau: qua tai toan tu nhap xuat ,su dung template de nhan moi kieu tra ve du oc truyen vao ,viet lop tuong trung cho tat ca cac lop can su dung khong can phai goi truc tiep . To viet duoi dang tong quat va de hinh dung hon .Truoc qua tai toan tu nhap xuat voi doi tuong mang gia tri thi khong co gi nhung nay qua t ai toan tu nhap xuat voi mot mang ki tu thi lai khac va duoi day la mot ba i nhu the . */ #include #include //viet lop cat class cat { private : char name[20]; int age; public: cat () { for (int i=0;i<20;i++) 49
  50. name[i]='\0'; age=0; } cat (char ten[] ,unsigned int tuoi) { for (int i=0;i > (istream & ,cat &); }; ostream & operator > (istream & in,cat &a) { cout >a.age; in.ignore(); cout<<"nhap ten:"; in.getline(a.name,20); return in; } //viet lop dog class dog { private : char name[20]; unsigned int age; public: dog () { for (int i=0;i<20;i++) name[i]='\0'; age=0; } dog (char ten[],unsigned int tuoi) { for (int i=0;i<20;i++) { name[i]=ten[i]; if (ten[i]=='\n') break; } age=tuoi; } friend ostream & operator << (ostream & ,dog &); 50
  51. friend istream & operator >> (istream & ,dog &); }; ostream & operator > (istream & in,dog &a) { cout >a.age; in.ignore(); cout class total { private : T data; public: total (total &b) { data=b.data; } total (T b) { data=b; } friend ostream & operator &); friend istream & operator >> (istream & ,total &); }; template ostream & operator &x) { out istream & operator >> (istream & in,total & x) { in>>x.data; return in; } //viet phan main() cho chuong trinh void main() { //truong hop 1 : thu truyen mot doi tuong khong thuoc cung lop vao cho lop tuong trung 51
  52. //va su dung ham in va nhap cho no //khai bao 1 con cat va nhap du lieu ,truyen cho doi tuong lop tuong tr ung sau do in ra man hinh cat a; cout >a; total b(a); cout >x; total c(x); cout d(c); cout #include #include void main() { char chuoi[80]; int i = 0, count = 0; printf("\nNhap vao mot chuoi bat ky : "); gets(chuoi); 52
  53. while (chuoi[i] != 0) { if (isalpha(chuoi[i++])) count++; } printf("So ky tu trong chuoi = %d", count); getch(); } Biểu diễn số dưới dạng bit #include #include void main() { unsigned int mang[24], i; int bit[16], k, index; printf("\nNhap vao 23 gia tri nguyen : "); for (i=0; i<23; i++) scanf("%d",&mang[i]); printf(" FEDCBA9876543210"); for (i=0; i<23; i++) { k = mang[i]; for (index = 0; index < 16; index++) bit[index] = 0; index = 15; while (k) { bit[index ] = k%2; k /= 2; } printf("\n%5d ",mang[i]); for (index=0; index<16; index++) if (bit[index] == 1) printf("*"); else printf("-"); } getch() ___ Đảo chuỗi Code: char *dnchuoi(char *s) { char *tmp, i; i = 0; tmp = (char *)malloc(strlen(s)+1); while (i<strlen(s)) *(tmp+i) = *(s + strlen(s) - i++ - 1); 53
  54. *(tmp+i) = 0; return tmp; } void main() { char hello[] = "Hello World"; char *s; printf("\nChuoi ban dau = %s", hello); s = dnchuoi(hello); printf("\nChuoi dao nguoc = %s", s); getch(); } Chương trình xem tập tin Code: #include #include void main() { FILE *fp; char filename[50], s[255], *hang[1000], c; int nline = 0, line = 0, i; printf("\nNhap ten tap tin muon xem : "); gets(filename); if ((fp = fopen(filename,"r")) == NULL) printf("\nKhong the mo tap tin %s", filename); else { while (!feof(fp)) { fgets(s, 255, fp); hang[nline] = (char *)malloc(strlen(s)); strcpy(hang[nline], s+1); nline++; } do { clrscr(); i = line; while (i 0) line ; break; 54
  55. case 80 : if (line+25 #include void main() { int tdung, tnam, tgia, phuongan=0; for (tdung = 1; tdung #include #include #pragma warn -pia char *trim(char *chuoi) { char *p; while (p = strstr(chuoi, " ")) memmove(p, p+1, strlen(chuoi) - (p - chuoi)); if (chuoi[0] == ' ') memmove(chuoi, chuoi+1, strlen(chuoi) - 1); 55
  56. if (chuoi[strlen(chuoi)-1] == ' ') chuoi[strlen(chuoi)-1] = 0; return chuoi; } void main() { char chuoi[125]; printf("\nNhap chuoi mau : "); textattr(0x1e); gets(chuoi); trim(chuoi); printf("\nChuoi sau khi da trim : "); textattr(0x1e); cputs(chuoi); getch(); } ___ Tìm tất cả các ước của một số N PHP Code: #include #include void main() { int n, i; printf("Cho gia tri N = "); scanf("%d", &n); printf("Cac uoc so cua %d la :\n", n); for (i=1; i #include unsigned USCLN (unsigned n, unsigned m) { while (n != 0 && m != 0) if (n>m) n -= m; else m -= n; if (n == 0) 56
  57. 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(); } Trộn 2 dãy giảm thành một dãy tăng PHP Code: #include #include #define MAX 10 void main() { int a[MAX], b[MAX], c[2*MAX], n1, n2, i, i1, i2; printf("\nCho biet so phan tu cua mang thu nhat : "); scanf("%d", &n1); printf("Nhap vao cac phan tu (giam dan) cua mang thu nhat : "); for (i=0; i<n1; i++) scanf("%d", &a[i]); printf("\nCho biet so phan tu cua mang thu hai : "); scanf("%d", &n2); printf("Nhap vao cac phan tu (giam dan) cua mang thu hai : "); for (i=0; i<n2; i++) scanf("%d", &b[i]); i1 = n1-1; i2 = n2-1; for (i=0; i<n1 + n2; i++) { if (i1 < 0 || i2 < 0) break; if (a[i1] < b[i2]) { c[i] = a[i1]; i1 ; } else { c[i] = b[i2]; i2 ; 57
  58. } } if (i1 >= 0) while (i1 >= 0) c[i++] = a[i1 ]; if (i2 >= 0) while (i2 >= 0) c[i++] = b[i2 ]; printf("\nCac phan tu cua mang tron : "); for (i=0; i #include #include void main() { int *a,*b,*c; int m,n; int i,j; clrscr(); //Nhap so hang so cot printf("Nhap vao m:");scanf("%d",&m); printf("Nhap vao n:");scanf("%d",&n); //Cap phat bo nho a=(int*)calloc(m*n,sizeof(int)); b=(int*)calloc(m*n,sizeof(int)); c=(int*)calloc(m*n,sizeof(int)); // Nhap so lieu va tinh toan for(i=1;i<=m;i++) for(j=1;j<=n;j++) { printf("Nhap vao a[%d,%d]=",i,j);scanf("%d",&a[(i-1+j)+((i-1)*(n- 1))]); } for(i=1;i<=m;i++) for(j=1;j<=n;j++) { printf("Nhap vao b[%d,%d]=",i,j);scanf("%d",&b[(i-1+j)+((i-1)*(n- 1))]); c[(i-1+j)+((i-1)*(n-1))]=a[(i-1+j)+((i-1)*(n-1))]+b[(i-1+j)+((i- 1)*(n-1))]; } // xuat cac mang a,b,c ra man hinh for(i=1;i<=m;i++) for(j=1;j<=n;j++) { printf("\t%d",a[(i-1+j)+((i-1)*(n-1))]); if(j==n)printf("\n"); } printf("\n===\n"); 58
  59. for(i=1;i int main(void) { int i , j , n , tong ; printf("\n Nhập vào N = "); scanf("%d",&n); for ( i = 2 ; i #include #include int songay(int,int); bool namnhuan(int nam); void InLich(int,int); int ThuDauTien(int,int); void main() { int nam; 59
  60. 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 tho at)"; 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) { 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; 60
  61. 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) { 61
  62. 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; } ___ In code we trust Bài tập kiểm tra dấu ngoặc đúng. Ví dụ: (5*8) + (4*7) có đủ 2 cái ngoặc mở và 2 cái ngoặc đóng,suy ra đây là chuỗi ngoặc đúng, hoặc (6*6)+(7*12 > đây là chuỗi ngoặc sai. Code: #include #include #include #include #define max 100 int stack[max],Top=-1; void push(int stack[],int &Top,int X) { if (Top==max-1) { puts("Stack day"); exit(3); } else { Top++; stack[Top]=X; } } int pop(int stack[],int &Top) { int tam; if (Top==-1) return Top; else { tam=stack[Top]; Top ; return tam; } } void DauNgoac(char s[],int n) { int i; for(i=0;i<n;i++) { 62
  63. if (s[i]=='(') push(stack,Top,1); if (s[i]==')'&&pop(stack,Top)==-1) { Top=-2; break; } } if (Top==-1) printf("\nDung"); else printf("\nSai"); } void main() { clrscr(); char s[max]; int n= printf("Nhap chuoi:"); gets(s); n=strlen(s); DauNgoac(s,n); getch(); } ___ Bài toán Tám Hoàng Hậu Code: #include #include int dong[8], cot[8], cheoxuoi[15], cheonguoc[15]; void print () { int i; printf("\n"); for (i=0; i<8; i++) printf("%3d", dong[i]); } void thu(int i) { int j; for (j=0; j<8; j++) { if (cot[j] == 1 && cheoxuoi[i+j] ==1 && cheonguoc[i-j+7] == 1) { dong[i] = j; cot[j] = 0; cheoxuoi[i+j] = 0; cheonguoc[i-j+7] = 0; if (i<7) thu(i+1); else 63
  64. print(); cot[j] = 1; cheoxuoi[i+j] = 1; cheonguoc[i-j+7] = 1; } } } void tim() { int i, q; for (i=0; i #include void main() { unsigned number; char hex[] = "0123456789ABCDEF"; printf("\nNhap vao mot gia tri nguyen duong 16 bit : "); scanf("%u", &number); printf("Gia tri Hex tuong ung = %c%c%c%c", hex[number/0x1000], hex[(number/0x100)%0x10], hex[(number/0x10)%0x10], hex[number%0x10]); getch(); } Liệt kê các hoán vị của N phần tử Code: 64
  65. #include #include #define MAX 10 int mang[MAX], n; void swap (int *x, int *y) { int tmp; tmp = *x; *x = *y; *y = tmp; } void hoanvi(int k) { int j; if (k==1) { printf("\n"); for (j=0; j =0; j ) { swap(&mang[k-1], &mang[j]); hoanvi(k-1); swap(&mang[j], &mang[k-1]); } } void main() { int i; printf("\nCho biet so phan tu (N #include #include void main() { char s[50]; int i, len; 65
  66. printf("\nNhap vao mot chuoi : "); gets(s); len = strlen(s); i = 0; while (i #include void main() { int n, tram, chuc, donvi; clrscr(); printf("\nNhap vao mot so tu 100 - 999 : "); scanf("%d", &n); tram = n; donvi = tram % 10; tram /= 10; chuc = tram % 10; tram /= 10; printf("\nSo hang tram = %d", tram); printf("\nSo hang chuc = %d", chuc); printf("\nSo hang don vi = %d", donvi); getch(); } ___ Tìm phần tử lớn nhất nhỏ nhất trong mảng một chiều Code: #include #include void main() { int mang[20]; int i, minval, maxval; /* Khoi tao mang ngau nhien */ 66
  67. randomize(); for (i=0; i mang[i]) minval = mang[i]; } /* In mang */ clrscr(); for (i=0; i #include unsigned long giaithua(int n) { unsigned long ketqua = 1; int i; for (i=2; i<=n; i++) ketqua *= i; return ketqua; } unsigned long to_hop_chap(int k, int n) { return giaithua(n) / (giaithua(k) * giaithua(n-k)); } void main() { int n, k; 67
  68. printf("\nNhap vao gia tri N va K : "); scanf("%d%d", &n, &k); printf("Top hop chap %d cua %d = %lu", k, n, to_hop_chap(k, n)); getch(); } ___ Chương trình đọc số có 3 chữ số. Code: /* Day la chuong trinh doc so co 3 chu so hay mot so co 2 cu so tham chi so co 1 chu so Duoc viet boi Vu Thanh Nam */ #include #include void main() { int a; cout >a; int hangtram=a/100; int hangchuc=((a/10)%10); int hangdonvi=a%10; switch(hangtram) { case 1 :cout<<"Mot tram ";break; case 2 :cout<<"Hai tram ";break; case 3 :cout<<"Ba tram ";break; case 4 :cout<<"Bon tram ";break; case 5 :cout<<"Nam tram ";break; case 6 :cout<<"Sau tram ";break; case 7 :cout<<"Bay tram ";break; case 8 :cout<<"Tam tram ";break; case 9 :cout<<"Chin tram ";break; } switch(hangchuc) { case 0: if(hangdonvi==0) cout<<""; else {if(hangchuc==0&&hangtram==0) cout<<""; else cout<<"ninh";} break; case 1:cout<<"muoi";break; case 2:cout<<"hai muoi";break; case 3:cout<<"ba muoi";break; case 4:cout<<"bon muoi";break; case 5:cout<<"nam muoi";break; case 6:cout<<"sau muoi";break; case 7:cout<<"bay muoi";break; 68
  69. case 8:cout #include #include void main() { long int thang, nam; cout >thang>>nam; if ((thang>12||thang<1)||(nam<0)) cout<<"Nhap thang hoac nam sai"; else { 69
  70. bool namnhuan=((nam%4==0&&nam%100!=0)||(nam%400==0&&nam%100==0)); int songay; if(thang==4||thang==6||thang==9||thang==11) songay = 30; else { if(thang==2) songay = namnhuan?29:28; else songay=31; } cout #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) { 70
  71. co=false; break; } } } return co; } ___ Bài tập tìm max min của 4 số. Code: #include #include #include float max(int a, int b); float min(int a, int b); void main() { int a,b,c,d; cout >a; cout >b; cout >c; cout >d; cout b) return a; else return b; } float min(int a, int b) { if(a>b) return b; else return a; } Tìm n số Fibonaci đầu tiên Code: #include #include #include long Fibonaci(long n); void main() 71
  72. { long n; cout >n; cout #include #include void main() { double sotiengui,tienlai,laixuat; int sothang; cout >sotiengui; cout >laixuat; cout >sothang; for(int i=1;i #include void main() { long a; 72
  73. do { cout >a; }while(a 0) { while (a > 0) { cout #include #include void main() { char chon; do { cout<<"\nCHUONG TRINH DOAN HON BI KHAC KHOI LUONG TRONG 8 HON BI\n"; cout<<"\n\t-Co 8 hon bi danh so tu 1 den 8\n"; cout<<"\t 1 2 3 4 5 6 7 8\n"; cout<<"\t-Co duy nhat 1 hon bi khac khoi luong khong biet nhe hay nang hon so bi con lai\n"; cout<<"\t-Chi su dung 1 chiec can 2 dia (can thang bang) de phat hien ra hon bi do \n"; cout<<"\t-Ban nghi trong dau va chon 1 trong nhung hon bi do\n"; cout<<"\t-Tra loi trung thuc nhung cau hoi sau, may tinh se doan ra hon bi ma ban da chon \n"; cout<<"\t-Luu y: may tinh chi can toi da 3 lan\n"; cout<<" \n"; cout<<"Chon -1 neu dia 1 nhe, 1 neu dia 1 nang va 0 neu 2 dia can bang \n"; cout<<" \n"; cout<<"1. CAN LAN 1:\n"; cout<<"\t-Dia 1 gom hon 1,2,3\n"; cout<<"\t-Dia 2 gom hon 4,5,6 \n"; int kq1; cout<<"Moi ban nhap ket qua can: "; 73
  74. cin>>kq1; if(kq1==0) { cout >kq2; if(kq2==0) { cout >kq3; if(kq3==1||kq3==-1) cout >kq2; if(kq2==0) { cout >kq3; if (kq3==1||kq3==-1) { if(kq1==1) cout<<((kq3==1)?"Hon 6 nhe!!\n":"Hon 5 nhe!!!\n"); else cout<<((kq3==1)?"Hon 5 nang!!\n":"Hon 6 nang!!!\n"); } else cout<<"BAN CHUA HIEU LUAT CHOI-AN GIAN KIA\n"; } 74
  75. else if(kq2==1||kq2==-1) { if(kq1!=kq2) cout >kq3; if(kq3==0) cout >chon; system("cls"); }while(chon == 'c'); } ___ Kiểm tra số đối xứng Code: /*Vu Thanh Nam Bai tap 43 */ #include #include #include long songuoc(long a); void main() { 75
  76. long n; do { cout >n; }while(n 0) { while (a > 0) { tg= a%10; a = a / 10; } } return tg; } Điền giá trị cho một mảng vuông theo chiều kim đồng hồ Code: #include #include void main() { int n, w, hang, cot, chanhangtang, chanhanggiam, chancottang, chancotgiam; int matran[12][12], tang, giam; printf("\n\nChuong trinh in ma tran dac biet."); do { printf("\nNhap kich thuoc cua ma tran (3 =3 && n tang cot tang = 1 -> tang hang tang = 2 -> giam cot tang = 3 -> giam cot */ tang = 0; for (w=0; w<n*n; w++) { 76
  77. matran[hang][cot]= w + 1; switch(tang) { case 0 : if (cot chancotgiam) cot ; else { tang++; // Chuyen sang giam hang chanhangtang ; hang ; } break; case 3 : if (hang > chanhanggiam) hang ; else { tang=0; // Chuyen sang tang cot chancotgiam++; cot++; } break; } } for (hang=0; hang 77
  78. #include void main() { int n, i, j; printf("\nNhap chieu cao cua hinh tam giac : "); scanf("%d", &n); for (i=0; i i; j ) printf(" "); for (j=0; j #define MAX 10 void main() { int a[MAX], b[MAX], c[2*MAX], n1, n2, i, i1, i2; printf("\nCho biet so phan tu cua mang thu nhat : "); scanf("%d", &n1); printf("Nhap vao cac phan tu (tang dan) cua mang thu nhat : "); for (i=0; i = n1 || i2 >= n2) break; if (a[i1] < b[i2]) { c[i] = a[i1]; i1++; } else { 78
  79. c[i] = b[i2]; i2++; } } if (i1 #include #include void main() { int a,n,m,vtdau=0,vtcuoi=0; cout >n; cout >m; do { cout >a; }while(a >a; }while(a<0); if(a==m) { if(vtdau==0) vtdau=i; vtcuoi=i; } } cout<<"Vay vi tri dau cua so "<< m<< "la: "<<vtdau<<endl; cout<<"Vay vi tri cuoi cua so "<< m<< "la: "<<vtcuoi<<endl; getch(); } Tính x^1/1! + x^2/2! + x^3/3! + + x^n/n! 79
  80. Code: #include #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 #include #include #include #define A 0 #define B 1 #define C 2 void hanoi(int from, int to, int dia) { int trunggian; if (dia == 1) printf("\nChuyen 1 dia tu coc %c sang coc %c", 'A'+from, 'A'+to); else { if ((from == A && to == C) || (from == C && to == A)) trunggian = B; else if ((from == A && to == B) || (from == B && to == A)) trunggian = C; else if ((from == C && to == B) || (from == B && to == C)) trunggian = A; hanoi(from, trunggian, dia-1); hanoi(from, to, 1); 80
  81. hanoi(trunggian, to, dia-1); } } void main() { int n; printf("\nCho biet so dia ( 3 -> 6 ): "); do { scanf("%d", &n); } while (n 6); hanoi(A, C, n); getch(); } Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 4 đĩa Code: #include #include #include #include #define A 0 #define B 1 #define C 2 #define D 3 void hanoi(int from, int to, int dia) { int tg1, tg2, dia2; if (dia <= 1) printf("\nChuyen 1 dia tu coc %c sang coc %c", 'A'+from, 'A'+to); else { if ((from == A && to == D) || (from == D && to == A)) { tg1 = B; tg2 = C; } else if ((from == A && to == B) || (from == B && to == A)) { tg1 = C; tg2 = D; } else if ((from == A && to == C) || (from == C && to == A)) { tg1 = B; tg2 = D; } else if ((from == B && to == C) || (from == C && to == B)) { 81
  82. tg1 = A; tg2 = D; } else if ((from == B && to == D) || (from == D && to == B)) { tg1 = A; tg2 = C; } else if ((from == C && to == D) || (from == D && to == C)) { tg1 = A; tg2 = B; } dia2 = dia / 2; if (dia % 2 == 1) { hanoi(from, tg1, dia2); hanoi(from, tg2, dia2); hanoi(from, to, 1); hanoi(tg2, to, dia2); hanoi(tg1, to, dia2); } else { hanoi(from, tg1, dia2); if (dia2 > 1) { hanoi(from, tg2, dia2-1); hanoi(from, to, 1); hanoi(tg2, to, dia2-1); } else hanoi(from, to, 1); hanoi(tg1, to, dia2); } } } void main() { int n; printf("\nCho biet so dia ( 3 -> 6 ): "); do { scanf("%d", &n); } while (n 6); hanoi(A, D, n); getch(); } ___ câu 12 trang 3:các ước của số n, với n nhập từ bàn phím : PHP Code: #include #include void LK_Uoc(int n)//liet ke cac uoc cua n 82
  83. { for(int i=1;i #include void Nhap_Mang(int A[],int n) { for(int i=0;i =0;i ) if(A[i]==X) return i; return 0; } void main() { int A[100]; int n,X; printf("\nMoi ban nhap so phan tu n = "); scanf("%d",&n); Nhap_Mang(A,n); printf("\nMang sau khi nhap :"); Xuat_Mang(A,n); printf("\nMoi ban nhap gia tri X ="); scanf("%d",&X); int kq=Tim_X_DT(A,n,X); 83
  84. if(kq==0) printf("\n Mang vua nhap ko co gia tri X"); else printf("\nGia tri X dau tien trong mang =%d",kq); int kq1=Tim_X_CC(A,n,X); printf("\nGia tri X cuoi cung trong mang =%d",kq1); getch(); } bai 16 :In danh sách các số hoàn hảo(hoàn hảo =hoàn thiện) nhỏ hơn số N nhập từ user #include #include int La_HT(int n)//La_HT=La_HH { int tong=0; for(int i=1;i #include int La_NT(int n) { int dem=0; for(int i=1;i<=n;i++) if(n%i==0) dem++; return(dem==2); } void main() { int n; printf("\nMoi ban nhap n ="); scanf("%d",&n); int kq=La_NT(n); if(kq==0) printf("\nso vua nhap ko phai la NT"); else printf("\nLa NT"); 84
  85. getch(); } Kiểm tra ma trận B có là ma trận con của ma trận A hay ko : #include #include #define N 2 #define M 5 void search(int b[N][N],int a[M][M]) { int i,j,k,l,m,x,y,dem,demx,demy; int timthay=1; for(k=0;k<=M-N;++k) { for(l=0;l<=M-N;++l) { dem=demx=demy=0; x=l;y=k; for(i=0;i<N;++i) { for(j=0;j<N;++j) { if(b[i][j]==a[y][x])dem++; ++x;++demx; if(demx==N){demx=0;x=l;} } ++y;++demy; if(demy==N){demy=0;y=k;} } if(dem==N*N)break; } if(dem==N*N)break; } if(dem!=N*N)timthay=0; if(timthay==0)printf("\nKo tim thay"); else printf("\nTim thay"); } void main() { clrscr(); int a[M][M]={ 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,15, 85
  86. 16,17,18,19,20, 21,22,23,24,25}; int b[N][N]={4, 5, 9,10}; search(b,a); getch(); } Bai 2:in hình sau ra màn hình(in hình tam giác cân) 1 121 12121 1212121 Code: #include #include void main() { clrscr(); short d[]={1,2}; printf("Nhap chieu cao tam giac: "); int i,num,space; scanf("%d",&i); num=2*i+1; for(int n=0;n 0) printf(" "); int index; for(int j=0;j #include //by sakervista main() { 86
  87. int i,j,k,h; printf("Nhap Chieu cao h : "); scanf("%d",&h); for(i=1;i n) return 0; return (k<=0||k==n)?1:tohop(k-1,n-1)+tohop(k,n-1); } long fibonaci(unsigned n) { return (n==1||n==2)?1: fibonaci(n-1)+fibonaci(n-2) ; 87
  88. } char nguyento(unsigned n) { if (n mang[j]) mang[i]^=mang[j]^=mang[i]^=mang[j]; } } void xapxeptgd(float mang[], int dodai) // xap xep thuc giam dan { int i,j; float temp; 88
  89. for (i=0;i mang[j]) { temp=mang[i]; mang[i]=mang[j]; mang[j]=temp; } } } PHP Code: int strlen(char *xau) { int i=0; while (xau[i]!=NULL) i++; return i; } void xoakitu(int vitri , int soluong , char *xau) { if (vitri+soluong-1>strlen(xau)) xau[0]=NULL; else { while (xau[vitri+soluong]!=NULL) { xau[vitri]=xau[vitri+soluong]; vitri++; } xau[vitri]=NULL; } } void chenkitu(int vitri, char *chen , char xau*) { int j=0,i=vitri; char temp[99]; while (xau[i]!=NULL) temp[j++]=xau[i++]; temp[j]=NULL; j=0; while (chen[j]!=NULL) xau[vitri++]=chen[j++]; j=0; 89
  90. while (temp[j]!=NULL) xau[vitri++]=temp[j++]; xau[vitri]=NULL; } //viết 1 xâu kí tự : viết từng chữ 1 ra màn hình void viet(char *xau="Quang",int tre=15); void viet(char xau[],int tre) { int i; for ( i=0 ; i ydich&&cach==1) { for (j=0 ; j = ydich ; i ) { gotoxy(xgoc,i);putch(xau[j]); gotoxy(xgoc,i+1);putch(' '); delay(tre); } else {gotoxy(xgoc,ydich);putch(' ');} xgoc++; } } if (ydich==ygoc&&xgoc>xdich&&cach==1) { for (j=0 ; j = xdich ; i ) { gotoxy(i,ygoc);cprintf("%c ",xau[j]); delay(tre); } else {gotoxy(xgoc,ydich);putch(' ');} xdich++; } } } Bài toán giải phương trình bậc nhất và giải phương trình bậc 2 90
  91. PHP Code: void bai101(void) { float a,b; printf("Nhập vào số (thực) a : ");scanf("%f", &a); printf("Nhập vào số (thực) b : ");scanf("%f", &b); if (a==0) if (b>0) printf("Bất phương trình có nghiệm với mọi x"); else printf("Bất phương trình vô nghiệm"); if (a>0) printf("Bất phương trình có nghiệm là x > %.2f" ,1.0*( -b)/a); if (a c)&&(a+c>b)&&(b+c>a)) { printf("Đây là ba cạnh của một tam giác "); if ((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a)) printf( "vuông "); if ((a==b)&&(b==c)) printf("đều "); else if ((a==b)||(b==c)||(c==a)) {printf("cân ");} s=(a+b+c)/2;printf("có :"); printf("\n\tchu vi là %.2f và diện tích là %.2f", s*2 , sqr t(s*(s-a)*(s-b)*(s-b)) ); } 91
  92. else printf("Đây không phải ba cạnh của một tam giác"); } Bài 105: Kiểm tra xem n có phải là số nguyên tố ko ? Bài 106: Nhập phân số (nhập trực tiếp ví dụ : 3/9 , 4/8 , 1/2 ). Đưa ra dạng tối giản của phân số đó. Bài 107: Tìm ước chung lớn nhất , bội chung nhỏ nhất của 2 số nhập từ bàn phím. Bài 108: Kiểm tra xem n có phải là số hoàn hảo ko ? Bài 109: Liệt kê các số Amstrong nhỏ hơn hoặc bằng 999. Bài 110: Tính tổng cách chữ số của số nguyên n. Bài 111:Bài18: Tính n! và n!!. Bài 112: Giải bài toán cổ vừa gà vừa chó. Bài 113: a. Tìm min max của 2 số b. Nhập chiều cao h, cạnh đáy a . Tính diện tích tam giác Bài 114: Nhập vào 1 số nguyên từ 0 đến 7 . Viết ra màn hình thứ tương ứng trong tuần Bài 115: Nhập 2 cạnh 1 hình chữ nhật. Tính S,P Bài 116: Tinh luy thua n cua x Bài 117: Giải bài toán cổ 100 trâu 100 cỏ Bài 118: Nhập R của hình tròn. Tính S , P Bài 119: Tính tổng các số số lẻ ” n. Bài 120: Kiểm tra 1 kí tự nhập từ bàn phím Bài 121: Tính tổ hợp chập k của n phần tử Code: void bai105(void) { int n; printf("Nhập vào số n : ");scanf("%d", &n); if (nguyento(n)) printf("Bạn vừa nhập vào 1 số nguyên tố."); else printf("%d không phải là số nguyên tố",n); } void bai106(void) { int m,n; printf("Nhập vào một phân số :\n\tTử số là : ");scanf("%d",&m); printf("\tMẫu số là : ");scanf("%d",&n); if (n!=0) { int a=UCLN(m,n); m/=a;n/=a; printf("Dạng tối giản của phân số đó là %d/%d ",m,n); } } void bai107(void) { int m,n; printf("Nhập vào số (nguyên) m : ");scanf("%d", &m); printf("Nhập vào số (nguyên) n : ");scanf("%d", &n); printf("Ước chung lớn nhất của 2 số đó là : %d ",UCLN(m,n) ); printf("\nBội chung nhỏ nhất của 2 số đó là : %d ",BCNN(m,n) ); } void bai108(void) { 92
  93. int m; printf("Nhập vào số m : ");scanf("%d", &m); if (hoanhao(m)) printf("Bạn vừa nhập vào một số hoàn hảo."); else printf("%d không phải là số hoàn hảo",m); } void bai109(void) { int a,b,c; printf("Các số Amstrong nhỏ 999 là :"); for (a=1 ; a b)?(a):(b) ,(a <b)?(a):(b)); printf("\nNhập vào chiều cao : ");scanf("%f", &a); printf("Nhập vào cạnh đấy : ");scanf("%f", &b); printf("Diện tích tam giác là : %.2f" , a*b/2); } void bai114(void) { int n; printf("Nhập vào số (nguyên) n : ");scanf("%d", &n); 93
  94. switch (n) { case 1:case 0:printf("Chủ nhật.");break; case 2:printf("Thứ hai.");break; case 3:printf("Thứ ba.");break; case 4:printf("Thứ tư.");break; case 5:printf("Thứ năm.");break; case 6:printf("Thứ sáu.");break; case 7:printf("Thứ bảy.");break; default :printf("Bạn nhập vào số “ 8 rồi");break; } } void bai115(void) { float a,b; printf("Nhập vào cạnh a : ");scanf("%f", &a); printf("Nhập vào cạnh b : ");scanf("%f", &b); printf("Chu vi của hình chữ nhật là : %.2f\n",a+b+a+b); printf("Diện tích của hình chữ nhật là : %.2f",a*b); } void bai116(void)// { float x; int n; printf("Nhập vào số (thực) x : ");scanf("%f", &x); printf("Nhập vào số (nguyên) n : ");scanf("%d", &n); printf("x^n = %.0lf", pow(x,double(n))); } void bai117(void)// { int a,b; for (a=1 ; a<=20 ; a++) for (b=1 ; b<=33 ; b++) if ( a*5 + b*3 + (100-a-b)/3 == 100 ) printf("%d trâu đứng , %d trâu nằm , %d trâu già.\n",a ,b,100-a-b); } void bai118(void) { float r; printf("Nhập vào bán kính đường tròn : "); scanf("%f",&r); printf("\nChu vi của đường tròn là : %.2f" , 3.14*r); printf("\nDiện tích của đường tròn là : %.2f" , 3.14*r*r); } void bai119(void) { int i,m=0,n; printf("Nhập vào số (nguyên) n : "); scanf("%d", &n); for (i=0; i<=n ; i++) if (i&1) m+=i; gotoxy(5,23);printf("Tổng các số lẻ ” n la %d",m); } void bai120(void) { char ch; 94
  95. printf("Nhập vào một kí tự.\n"); ch=getch(); if (ch==32) printf("Bạn vừa nhập vào một dấu cách."); else if (isalpha(ch)) printf("Bạn vừa nhập vào một chữ cái %c " ,ch); else if (isdigit(ch)) printf("Bạn vừa nhập vào một chữ số %c " ,c h); else printf("Bạn vừa nhập vào một kí tự đặc biệt : %c " , ch); } void bai121(void) { int k,n; printf("Nhập vào số (nguyên) k : ");scanf("%d", &k); printf("Nhập vào số (nguyên) n : ");scanf("%d", &n); printf("Tổ hợp chập k của n phần tử : %d" ,tohop(k,n)); } Một bài ví dụ về Hàm tạo và class Tính Tổng , Hiệu ,Thương , Tích 2 phân số #include using namespace std; class PhanSo { public: PhanSo() // Ham khoi tao gt mac dinh { tu = mau = 1; } PhanSo(int tu1, int mau1) // Ham tao de nhap vao phan so { tu = tu1; mau = mau1; } void rutGon(); // Ham rutgon phan so PhanSo cong(PhanSo p); // Cong PhanSo tru(PhanSo p); // Tru PhanSo nhan(PhanSo p); // Nhan PhanSo chia(PhanSo p); // Chia void output() // In ket qua va phan so ra man hinh { cout << tu << "/" << mau << endl; } private: int tu; int mau; }; PhanSo PhanSo::cong(PhanSo p) // Dinh nghia ham Cong phan so { PhanSo kq; kq.tu = tu * p.mau + mau * p.tu; // Quy dong phan so kq.mau = mau * p.mau; kq.rutGon(); // Rut gon phan so Tong return kq; // Roi tra ve phan so 95
  96. } PhanSo PhanSo::tru(PhanSo p) { PhanSo kq; kq.tu = tu * p.mau - mau * p.tu; kq.mau = mau * p.mau; kq.rutGon(); return kq; } PhanSo PhanSo::nhan(PhanSo p) { PhanSo kq; kq.tu = tu * p.tu; kq.mau = mau * p.mau; kq.rutGon(); return kq; } PhanSo PhanSo::chia(PhanSo p) { PhanSo kq; kq.tu = tu * p.mau; kq.mau = mau * p.tu; kq.rutGon(); return kq; } void PhanSo::rutGon() // Ham rut gon Phan so + Tim uoc so chung lon n hat cua tu va mau { int a = abs(tu); int b = abs(mau); // Tim uoc so chung lon nha t while(a != b) // if(a > b) a= a - b; // else b = b - a; tu = tu / a; mau = mau / a; } int main() { PhanSo p1(1, 3), p2(1,6); // Tao 2 phan so p1 (1/3) va p2 (1/6) cout << "Phan so p1:"; p1.output(); cout << "Phan so p2:"; p2.output(); PhanSo tong, hieu, tich, thuong; tong = p1.cong(p2); hieu = p1.tru(p2); tich = p1.nhan(p2); thuong = p1.chia(p2); cout << "Tong hai phan so:"; tong.output(); cout << "Hieu hai phan so:"; hieu.output(); cout << "Tich hai phan so:"; tich.output(); 96
  97. cout nul"); return 0; } 97