Bài tập C++ cơ bản đến nâng cao

Tục ngữ xưa đã có câu: “Học đi đôi với hành”, “Chăm hay không bằng tay quen”. Triết lý này đã trường tồn theo thời gian trong mọi lĩnh vực của cuộc sống. Với công việc lập trình cũng không ngoại lệ, người lập trình cũng giống như người công nhân, là người trực tiếp làm ra sản phẩm. Do vậy, kinh nghiệm và kỹ năng nghề là rất quan trọng. Để đạt được kĩ năng lập trình siêu việt không phải điều đơn giản. Chúng ta cần phải thường xuyên luyện tập code, update các kiến thức về lập trình, tư duy logic và thuật toán.

Dưới đây, tôi xin giới thiệu 1000 bài tập lập trình C/C++ từ cơ bản tới nâng cao cho các bạn luyện tập. 

Bài viết này dành cho các bạn đã có kiến thức cơ bản về ngôn ngữ lập trình C/C++

Phần I: Bài tập C cơ bản

(Trước khi làm bài tập phần này, các bạn nên bổ sung và xem lại kiến thức về câu lệnh if/else, vòng lặp for, while,)

In ra màn hình dòng chữ Hello World

Chuyển đổi từ nhiệt độ Fahreneit sang Selsius

Tính tổng bình phương của 2 số

Xác định góc phần tư thứ mấy trên đường tròn lượng giác

Tính tổng nguyên: S = 1 + 1/2 + 1/3 + 1/4 +… 1/n

Tính tổng S(n) = 1+2+3+4+ … +n

Tính tổng S(n) = 1^2 + 2^2 + … + n^2

Tính tổng S(n) = 1/2 + 1/4 + 1/6 + 1/8 + 1/2n

Tính tổng S(n) = 1 + 1/3 + 1/5 + 1/(2n+1)

Tính tổng S(n) = 1/(1*2) + 1/(2*3) + … +1/(n*(n+1))

Tính tổng S(n) = 1/2 + 3/4 + 5/6 +…+ (2n+1)/(2n+2)

Tính tổng S(n) = 1 + 1.2 + 1.2.3 + … + 1.2…n

Tính tổng S(x, n) = x + x^2 + x^3 +…+ x^n

Tính tổng S(x, n) = x^2 + x^4 + x^6 +…+ x^2n

Tính tổng S(x, n) = x + x^3 + x^5 +…+ x^(2n+1)

Tính tổng S(n) = 1 + 1/(1+2) + 1/(1+2+3) +…+ 1/(1+2+3+…+n)

Kiểm tra số nguyên 4 byte có dạng 2^k không?

Tìm giá trị lớn nhất của 2 số

Tìm giá trị lớn nhất của 4 số a,b,c,d

Kiểm tra sự tồn tại của 1 tam giác

Giải phương trình bậc nhất

Giải phương trình bậc hai

Tìm ước số chung và bội số chung nhỏ nhất của 2 số a,b

Tách các chữ số thuộc hàng trăm, hàng chục, hàng đơn vị

In ra số Hex của số nguyên dương tương ứng

Tìm số Amstrong

Tính giai thừa số nguyên dương

Tính giai thừa cách

Tính diện tích, chu vi tam giác, đường tròn, hcn

Kiểm tra số N có phải là số nguyên tố không?

Liệt kê các số nguyên tố nhỏ hơn N

Tìm số hoàn hảo

In dãy số Fibonanci

Tính cước taxi

Giải hệ phương trình bậc nhất

In ra bảng cửu chương

Tính sinx

Tính cosx

Tính e mũ x

Tính hằng số PI = 3.14

Hiển thị tam giác pascal

Hiển thị hình sao

Chuyển đổi từ số la mã sang số thập phân

Hàm swap

Tính tổng các chữ số trong 1 số

Đổi từ hệ nhị phân sang hệ thập phân

Đổi từ hệ thập phân sang nhị phân

Kiểm tra năm nhuận

Đảo ngược các chữ số trong 1 số

Kiểm tra số đối xứng hay không?

Lịch vạn niên

Hướng dẫn đọc số bằng tiếng anh

Phần II: Bài tập phần mảng 1 chiều

(Trước khi làm bài tập phần này, các bạn nên bổ sung và xem lại kiến thức về  mảng 1 chiều, câu lệnh if/else, vòng lặp for, while, break)

Phần III: Bài tập về ma trận

Phần IV: Bài tập xử lí chuỗi

Phần V: Bài tập struct

Sử dụng struct để biểu diễn và hiển thị giờ, phút, giây

Biểu diễn số phức bằng struct

Biểu diễn phân số bằng struct

Quản lý sinh viên bằng struct

Phần VI: Bài tập đọc/ghi file

Tạo 1 tệp tin văn bản chứa dãy số nguyên bất kì

 Đọc ghi file nhị phân

Chương trình đọc ghi file chứa các số nguyên

Tính tổng các phần tử trong mảng và ghi ra file

Phần VII: Bài tập hướng đối tượng C++

Xây dựng lớp hình tròn dẫn xuất từ lớp điểm

Xây dựng lớp Nguoi, lớp dẫn xuất Nhanvien kế thừa từ lớp Nguoi

Xây dựng lớp tam giác và hình chữ nhật kế thừa từ đa giác

Xây dựng 1 lớp biểu diễn xâu kí tự có các hàm tạo và hàm hủy cần thiết

Xây dựng lớp đối tượng sách trong thư viện

Viết 1 lớp biểu diễn hình chữ nhật có các thuộc tính là 2 cạnh

Xây dựng lớp Date mô tả thông tin ngày, tháng, năm

Xây dựng một lớp Time mô tả thông tin về giờ, phút giây

Xây dựng hàm bạn để tính diện tích hình chữ nhật

Xây dựng lớp stack cho số nguyên

Xây dựng lớp mô tả bảng thi đấu bóng đá

Tóm tắt nội dung tài liệu

  1. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Các bài tập xuất nhập giá trị Bài 1: Nhập 2 số nguyên x và y, sau đó in ra màn hình kết quả x + y, x- y, phần nguyên x chia y, phần dƣ của x cho y và phép chia của x cho y Bài làm: #include #include void main() { //Khai bao x va y la 2 so nguyen int x,y; float c; printf("Nhap x: "); scanf("%d",&x); //%d là định dạng kiểu nguyên printf("Nhap y: "); scanf("%d",&y); //&x, &y la dia chi cua bien x va bien y printf("%d + %d = %d\n",x,y,x+y); //gan %d thu nhat la x, %d thu 2 la y, thu 3 la x+y printf("%d - %d = %d\n",x,y,x-y); //ky tu \n la xuong dong tiep theo printf("%d * %d = %d\n",x,y,x*y); printf("%d / %d = %5.2f \n",x,y,(float)5/2); // %5.2f la de 5 khoang trong in x/y, trong do co 2 khoang trong in phan thap phan getch(); //cho an 1 phim de ket thuc chuong trinh } Kết quả: Bài 2: Nhập từ bàn phím tên của bạn, sau đó xuất ra câu: “Chao ” trong đó ten ban là xâu mà bạn nhập vào bàn phím Bài làm: #include #include void main() { //Khai bao str la kieu xau do dai 30 char str[30]; printf("Ten cua ban: "); fflush(stdin); gets(str); //Không nên dùng scanf, hàm gets dùng để đọc xâu printf("Chao %s",str); //%s sẽ được gán bởi str getch(); //Chờ ấn phím bất kỳ để kết thúc } Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 1 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  2. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Kết quả: Sau đây là sự khác biệt khi ta thay lệnh gets(str) bằng scanf(“%s”,&str), kết quả in ra màn hình sẽ nhƣ sau: Nhƣ vậy, màn hình in ra chỉ có từ “Do” Tức là khi dùng scanf để đọc xâu, trong xâu đó có ký tự cách trống (space) thì nó sẽ dừng lại Bài 3: Nhập từ bàn phím 1 số nguyên x, 1 số thực y, sau đó in ra màn hình theo quy cách sau: - Dòng 1, in số nguyên căn lề phải với 5 khoảng trống - Dòng 2, in số nguyên căn lề trái 5 khoảng trống - Dòng 3, in số nguyên căn phải 3 khoảng trống - Dòng 4, in số thực làm tròn 2 số thập phân - Dòng 5, in số thực với 6 khoảng trống, căn phải, làm tròn 3 chữ số thập phân - Dòng 6, in số thực 6 khoảng trống, căn trái, làm tròn theo quy cách. Bài làm #include #include void main() { // Khai bao cac bien can dung int x; float y; printf("Nhap vao so nguyen x: "); scanf("%d",&x); printf("Nhap vao so thuc y: "); scanf("%f",&y); printf("%5d\n",x); //Dong 1,%5d printf("%-5d\n",x); //Dong 2,%-5d printf("%3d\n",x); //Dong 3,%3d printf("%.2f\n",y); //Dong 4,%.2f, tuc la lam tron 2 chu so printf("%6.3f\n",y); //Dong 5, 3 khoang trong de y bao gom ca dau . va chu so thap phan printf("%6.0f\n",y); //Dong 6, lam tron theo quy cach, la 6.o getch(); //cho an 1 phim de ket thuc chuong trinh } Kết quả: Bài 4: Viết chƣơng trình nhập vào 4 số nguyên a,b,c,d. Tính giá trị trung bình cộng của 4 số trên và in ra kết quả. Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 2 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  3. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Bài làm: Trƣớc tiên, ta cần lƣu ý, 4 số nhập vào từ bàn phím là 4 số nguyên, mà giá trị trung bình cộng có thể là số thực, nên trong phép tính trung bình cộng, ta cần ép kiểu (float)(a+b+c+d)/4 Bài làm chi tiết nhƣ sau: #include #include void main() { int a,b,c,d; //Nhap gia tri printf("Nhap a: "); scanf("%d",&a); printf("Nhap b: "); scanf("%d",&b); printf("Nhap c: "); scanf("%d",&c); printf("Nhap d: "); scanf("%d",&d); printf("(%d + %d + %d + %d)/4 = %5.2f",a,b,c,d,(float)(a+b+c+d)/4); //%5.2f vi gia tri trung binh cong kieu so thuc getch(); } Kết quả: Bài 5: Viết chƣơng trình nhập xuất ra màn hình thông tin mỗi sinh viên theo mẫu sau: Ho ten: Ma so sinh vien: Lop: So dien thoai: Gioi tinh: Hƣớng giải: Nhập từ bàn phím giá trị cho các biến: hoten (kiểu xâu, độ dài lớn nhất là 20), mssv (kiểu int), lop (kiểu xâu), sdt (kiểu xâu vì có số 0 đầu tiên, nếu in số nguyên thì sẽ không hiển thị) gioitinh (kiểu xâu) #include #include void main() { char hoten[20],lop[10],gioitinh[3],sdt[12]; int mssv; //Nhap gia tri printf("Nhap ho ten: "); gets(hoten); //ham gets dung de doc xau, ko nen dung scanf printf("Lop: "); gets(lop); printf("Gioi tinh: "); gets(gioitinh); printf("So dien thoai: "); gets(sdt); printf("mssv: "); scanf("%d",&mssv); // in ra man hinh printf("\n\n\nHo ten: %s\n",hoten); Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 3 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  4. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 printf("Ma so sinh vien: %d Lop: %s\n",mssv,lop); printf("So dien thoai: %s Gioi tinh: %s",sdt,gioitinh); getch(); } Bài Kết quả: Trong bài này, các bạn chú ý cách đọc 1 xâu ký tự (dùng hàm gets thay cho scanf) Thay vì viết scanf(“%s”,&hoten); thì ta phải viết là gets(hoten); Các bài tập về lệnh rẽ nhánh Bài 1: Nhập vào 2 số nguyên từ bàn phím, in ra màn hình số nguyên lớn nhất Bài làm: #include #include void main(void) { int a,b; printf(" CHUONG TRINH TIM SO LON NHAT\n"); printf("Nhap so nguyen thu nhat: "); scanf("%d",&a); printf("Nhap so nguyen thu hai: "); scanf("%d",&b); if(a>b) printf("%d la so lon nhat\n",a); else printf("%d la so lon nhat\n\n",b); printf(" Hay nhan 1 phim bat ky de thoat chuong trinh"); getch(); } Kết quả: Bai 2: Nhập vào 3 số nguyên từ bàn phím, tìm giá trị lớn nhất. Thuật giải: Gán lấy 1 giá trị bất kỳ làm max, sau đó đem max đem so sánh với các giá trị còn lại, nếu max nhỏ hơn giá trị nào, thì gán max bằng giá trị mới Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 4 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  5. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Bài làm: #include #include void main() { int a,b,c,max; printf("nhap 3 so nguyen a,b,c: "); scanf("%d%d%d",&a,&b,&c); max=a; if (max
  6. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 #include #include #include void main() { float a,b,c,delta; //Ta cho cac he so la cac so thuc //Nhap du lieu printf("A= "); scanf("%f",&a); printf("B= "); scanf("%f",&b); printf("C= "); scanf("%f",&c); // tinh gia tri delta delta=b*b - 4*a*c; if (delta==0) //Neu delta = 0 thi pt co 1 nghiem duy nhat printf("Nghiem kep, x= %6.2f",-b/(2*a)); else if (delta>0) //Delta duong, pt co 2 nghiem phan biet { printf("Co 2 nghiem phan biet: \n"); printf("X1= %6.2f\n X2= %6.2f",(-b-sqrt(delta))/(2*a),(-b+sqrt(delta))/(2*a)); } else if (delta
  7. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Bài 4: Nhập 3 số a,b,c. In 3 số theo thứ tự tăng dần Thuật toán nhƣ sau: Bƣớc 1: Thêm 2 biến max và min, sau đó tìm giá trị max, min trong 3 số a,b,c Bƣớc 2: Kiểm tra từng biến, nếu biến đó thỏa mãn điều kiện min
  8. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 #include #include void main() { int a,b,c,d,max,min; printf("a= "); scanf("%d",&a); printf("b= "); scanf("%d",&b); printf("c= "); scanf("%d",&c); printf("d= "); scanf("%d",&d); max=a; min=a; // Tim so lon nhat if (max=d) min=d; //In ra 2 so max va min printf("So lon nhat: %d\nSo nho nhat: %d\n",max,min); //Tim 2 so ko bang max, ko bang min va in luon ra man hinh if(a!=max && a!=min && b!=max && b!=min) printf("%d & %d la 2 so khong lon nhat, khong nho nhat",a,b); else if(a!=max && a!=min && c!=max && c!=min) printf("%d & %d la 2 so khong lon nhat, khong nho nhat",a,c); else if(a!=max && a!=min && d!=max && d!=min) printf("%d & %d la 2 so khong lon nhat, khong nho nhat",a,d); else if(b!=max && b!=min && c!=max && c!=min) printf("%d & %d la 2 so khong lon nhat, khong nho nhat",b,c); else if(b!=max && b!=min && d!=max && d!=min) printf("%d & %d la 2 so khong lon nhat, khong nho nhat",b,d); else if(c!=max && c!=min && d!=max && d!=min) printf("%d & %d la 2 so khong lon nhat, khong nho nhat",c,d); else printf("Khong ton tai 2 so khong nho nhat, khong lon nhat"); getch(); } Kết quả hiện ra màn hình sẽ là: Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 8 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  9. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Bài 6: Nhập độ dài 3 cạnh 1 tam giác a. Cho biết 3 cạnh đó có lập thành 1 tam giác không b. Nếu có, cho biết là tam giác loại gì (thƣờng, cân, vuông, đều, vuông cân) Thuật giải: a. Điều kiện để a,b,c là 3 cạnh 1 tam giác: a>b+c và b>a+c và c>a+b b. - Nếu là tam giác đều thì a=b=c - Nếu là tam giác cân tam giác không đều và a=b hoặc a=c hoặc c=b - Nếu là tam giác vuông cân thì tam giác phải cân và a 2  b 2  c 2 hoặc b 2  a 2  c 2 hoặc c2  a2  b2 - Nếu tam giác vuông thì không cân và chỉ vuông - Nếu tam giác thƣờng thì không thỏa mãn các điều kiện trên Bài làm chi tiết: #include #include #include void main() { float a,b,c; Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 9 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  10. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 // Nhap du lieu cho 3 canh tam giac ABC printf("\nNhap vao canh A: "); scanf("%f",&a); printf("Nhap vao canh B: "); scanf("%f",&b); printf("Nhap vao canh C: "); scanf("%f",&c); // Bat dau qua trinh kiem tra if(a+b>c && a+c>b && b+c>a && a*b*c>0) { printf("3 canh %.2f %.2f %.2f la 3 canh 1 tam giac\n",a,b,c); // neu a=b=c thi la tam giac deu if (a==b && b==c) printf("Tam giac canh %.2f %.2f %.2f la tam giac deu \n",a,b,c); // neu ko la tam giac deu nhung 2 canh trong 3 canh bang nhau thi la tam giac can hoac vuong can else if(a==b || b==c || a==c) { // truong hop 1: 2 canh bang nhau va binh phuong canh nay bang tong binh phuong 2 canh con lai // thi la tam giac vuong can if (a==sqrt(b*b +c*c) || b==sqrt(a*a + c*c) || c==sqrt(b*b + a*a)) printf("Tam giac canh %.2f %.2f %.2f la tam giac vuong can \n",a,b,c); // nguoc lai, thi la tam giac vuong else printf("Tam giac canh %.2f %.2f %.2f la tam giac can \n",a,b,c); } //Neu binh phuong 1 canh bang binh phuong 2 canh con lai thi chi la tam giac vuong else if (a==sqrt(b*b + c*c) || b==sqrt(a*a + c*c) || c==sqrt(b*b + a*a)) printf("Tam giac canh %.2f %.2f %.2f la tam giac vuong \n",a,b,c); else // truong hop cuoi cung la tam giac thuong printf("Tam giac canh %.2f %.2f %.2f la tam giac thuong \n",a,b,c); } else printf("Khong ton tai tam giac co 3 canh da nhap tren\n"); printf(" NHAN 1 PHIM BAT KY DE THOAT"); getch(); } Kết quả hiện ra màn hình: Bài 7: Nhập 1 chữ cái, nếu là chữ thƣờng thì đổi thành chữ hoa và ngƣợc lại. Thuật giải: Nhập vào 1 ký tự, lƣu trong biến ch (kiểu char), sau đó kiểm tra: - Nếu „a‟
  11. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 #include #include #include //thu vien ctype.h de xu ly xau va ky tu void main() { char ch; printf("Nhap vao 1 ky tu: "); scanf("%c",&ch); if('a'
  12. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Kết quả hiện trên màn hình: Bài 9: Xếp loại học sinh trong lớp. Nhập họ tên, điểm toán, lý, hóa của học sinh Tính điểm trung bình 3 môn và phân loại nhƣ sau: - Xuất sắc: dtb >= 9.0 - Giỏi: 9.0 > dtb >=8.0 - Khá: 8.0 > dtb >=6.5 - Trung bình: 6.5 >dtb >=5.0 - Yếu: 5.0 > dtb >=3.0 - Kém: 3.5 > dtb Bài làm chi tiết: #include #include void main() { char hoten[20]; float toan,ly,hoa,dtb; printf("Nhap ho ten: "); gets(hoten); printf("Toan= "); scanf("%f",&toan); printf("Ly = "); scanf("%f",&ly); printf("Hoa = "); scanf("%f",&hoa); if(toan10) printf("Gia tri diem nhap sai, chuong trinh ket thuc"); else { printf("Hoc sinh %s doat loai ",hoten); dtb=(toan + ly + hoa)/3; if (dtb
  13. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Bài 10: Viết chƣơng trình nhập 1 số nguyên gồm 3 chữ số, sau đó xuất ra màn hình số lớn nhất là bao nhiêu và ở vị trí nào. Thuật toán: - Bƣớc 1: ta phải tách phần trăm, phần chục và phần đơn vị của số nguyên n nhập từ bàn phím - Bƣớc 2: Tìm số lớn nhất trong 3 số, chục, trăm, đơn vị Cách tách nhƣ sau: Phần trăm = n chia lấy phần nguyên cho 100 Phần chục = n chia lấy phần dƣ cho 100, sau đó chia lấy phần nguyên cho 10 Phần đơn vị = n sau khi chia dƣ cho 100, ta chia dƣ tiếp cho 10 - Bƣớc 3: So sánh, nếu chữ số nào trùng với số lớn nhất thì in ra màn hình Bài làm: #include #include void main(void) { int n,donvi,chuc,tram,max; printf("Vui long nhap cho minh 1 so nguyen 3 chu so: "); scanf("%d",&n); donvi=n%10; // Tách số hàng đơn vị chuc=n/10; tram=chuc/10; // Tách số hàng trăm chuc=chuc%10; // Tách số hàng chục max=donvi; if(max
  14. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 - Bƣớc 3: So sánh xem max min trùng với 2 số nào trong 3 số phần trăm, chục và đơn vị, khi đó in ra theo thứ tự min tenbien max (trong đó tenbien là 1 trong 3 phần tử: trăm, chục, đơn vị Bài làm: #include #include void main() { int n,tram,chuc,donvi,max,min; printf(" CHUONG TRINH SAP XEP LAI SO\n"); printf("Vui long nhap so 3 chu so (so nguyen): "); scanf("%d",&n); donvi=n%10; chuc=n/10; tram=chuc/10; chuc=chuc%10; max=donvi; if(max=chuc) min=chuc; printf("So sau khi xu ly: "); if(max==tram && min==chuc) printf("%d%d%d",chuc,donvi,tram); else if(max==tram && min==donvi) printf("%d%d%d",donvi,chuc,tram); else if(max==chuc && min==tram) printf("%d%d%d",tram,donvi,chuc); else if(max==chuc && min==donvi) printf("%d%d%d",donvi,tram,chuc); else if(max==donvi && min==chuc) printf("%d%d%d",chuc,tram,donvi); else if(max==donvi && min== tram) printf("%d%d%d",tram,chuc,donvi); printf("\n\n Nhan 1 phim bat ky de thoat"); getch(); } Kết quả: Bài 12: Nhập vào ngày, tháng, năm. Kiểm tra xem ngày tháng năm nhập có hợp lệ không Thuật toán: - Khai báo các biến ngay, thang, nam, kq (biến kq có giá trị 1 khi hợp lệ, giá trị 0 nếu ko hợp lệ) - Kiểm tra các biến nhập vào nguyên dương hay ko, sau đó kiểm tra các điều kiện sau: Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 14 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  15. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 + Điều kiện hợp lệ: Tháng 1, 3, 5, 7, 8, 10, 12 phải 31 ngày Tháng 4, 6, 9, 11 phải 30 ngày Tháng 2: Nếu năm nhuận (năm chia hết cho 4 và ko chia hết cho 1000) thì 29 ngày Ngƣợc lại, 28 ngày + Điều kiện không hợp lệ: Các trƣờng hợp còn lại Bài làm cụ thể: #include #include void main() { int ngay,thang,nam,kq; // Nhap gia tri printf("Nhap ngay: "); scanf("%d",&ngay); printf("Nhap thang: "); scanf("%d",&thang); printf("Nhap nam: "); scanf("%d",&nam); // Kiem tra kq=1; //Neu la ngay thi ket qua nhan 1, nguoc lai la 0 if (thang>=1 && thang =1 && ngay 0) { if (thang==1 || thang ==3 || thang == 7 || thang ==5 || thang==8 ||thang==10) { if (ngay
  16. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 else kq=0; // In ket qua ra man hinh if(kq==0) printf("Ngay %d thang %d nam %d khong hop le",ngay,thang,nam); else printf("Ngay %d thang %d nam %d hop le",ngay,thang,nam); getch(); } Kết quả: Bài 8. Viết chƣơng trình nhập vào ngày, tháng, năm. In ra màn hình ngày kế tiếp và ngày trƣớc của ngày đó. Bài làm #include #include void main() { int ngay,thang,nam,kq,nextday,lastday,lastmonth,nextmonth,nextyear; printf(" CHUONG TRINH KIEM TRA NGAY THANG NAM\n"); // Nhap gia tri printf("Nhap ngay: "); scanf("%d",&ngay); printf("Nhap thang: "); scanf("%d",&thang); printf("Nhap nam: "); scanf("%d",&nam); // Kiem tra kq=1; //Neu la ngay thi ket qua nhan 1, nguoc lai la 0 if (thang>=1 && thang =1 && ngay 0) { if (thang==1 || thang ==3 || thang == 7 || thang ==5 || thang==8 ||thang==10) { if (ngay
  17. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 else kq=0; } if(thang==2 && nam%4!=0) { if(ngay12) { nextmonth=1; nextyear=nam+1; } else nextyear=nam; printf("\nNgay tiep theo: %d/ %d /%d \n\n ",nextday,nextmonth,nextyear); } // Neu la ngay binh thuong else printf("\nNgay tiep theo: %d / %d / %d \n\n",ngay+1, thang, nam); // Ngay truoc do printf("Ngay truoc do la: "); if(ngay==1) { thang--; if(thang==0) printf("31/12/%d",nam-1); else { switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: lastday=31; break; case 4: case 6: case 9: case 11: lastday=30; break; case 2: Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 17 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  18. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 if(nam%4==0 && nam%1000!=0) { lastday=29; break; } else lastday=28; printf("%d/%d/%d",lastday,thang,nam); } } } else printf("%d/%d/%d",ngay-1,thang,nam); } getch(); } Trƣờng hợp 1: Ngày đầu năm Trƣờng hợp 2: Ngày cuối năm Trƣờng hợp 3: cuối tháng 2 Trƣờng hợp 4: cuối tháng 4 (30 ngày) Trƣờng hợp 5: cuối tháng 5 (31 ngày) Mọi thắc mắc, “ý kiến” xin liên hệ Đỗ Đức Hùng, 18 ĐT: 01656.221.314 MAIL: yahoo: duc_hungcntt
  19. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 Chương 3: Vòng lặp 1. Tính S= 13 + 23 + 33 + .... + N3 Cách dùng for: #include #include void main() { int i,n,s; printf("Nhap N= "); scanf("%d",&n); s=0; for (i=1;i
  20. ĐỀ CƢƠNG LẬP TRÌNH C LỚP CNT50DH1 2. Tính S= 12 + 22 + 32 + .... + N2 Bài làm: CÁCH DÙNG FOR #include #include void main() { int i,n,s; printf("Nhap N= "); scanf("%d",&n); s=0; for (i=1;i


Page 2

YOMEDIA

Bài 1: Nhập 2 số nguyên x và y, sau đó in ra màn hình kết quả x + y, x- y, phần nguyên x chia y, phần dƣ của x cho y và phép chia của x cho y.Bài 2: Nhập từ bàn phím tên của bạn, sau đó xuất ra câu: “Chao ” trong đó ten ban là xâu mà bạn nhập vào bàn phím.Bài 3: Nhập từ bàn phím 1 số nguyên x, 1 số thực y, sau đó in ra màn hình theo quy cách sau: Dòng 1, in số nguyên căn lề phải với 5...

25-07-2013 314 80

Download

Bài tập C++ cơ bản đến nâng cao

Giấy phép Mạng Xã Hội số: 670/GP-BTTTT cấp ngày 30/11/2015 Copyright © 2009-2019 TaiLieu.VN. All rights reserved.