C++ Bài Tập Và Lời Giải các Bài tập Cơ Bản Những bài tập hay và thú vị dành cho các bạn
Trang 1Bài 1: Cho đoạn chương trình sau:
Trang 2int main(void)
{ int a, b, c, d, Min, Max;
printf("\nSo lon nhat : %5d", Max);
printf("\nSo nho nhat : %5d", Min);
Trang 3if ((fabs(Dx) <= 0.00001) && (fabs(Dy) <= 0.0001))
printf("\nPhuong trinh nghiem dung voi moi x va y");
Trang 6Bài 6 : Lập chương trình in lên màn hình các số từ 1 đến 6 thành hình sau:
Trang 8Bài 7 : Viết chương trình in lên màn hình các số từ 0 đến 9 thành hình sau:
1232345434567654567898765678901098767890123210987890123454321098901234567654321090123456789876543210
khai dưới dạng chuỗi như sau:
ex = 1 + x/1! + x2/2! + + xi/i! +
lời giải :
#include <stdio.h>
Trang 9#include <math.h>
#include <conio.h>
int main(void)
{ double ex, ex0, sh = 1;
Trang 10Bài 9 ; Viết chương trình tìm tất cả các số nguyên trong khoảng 1000 đến 9999 thoả mãn hệ thức sau:
Trang 11Bài 10 : Lập trình tính y = ax + by + cz với a, b, c và x, y, z là các số thực nhập từbàn phím.
scanf("%f%f%f", &x, &y, &z);
float Y = pow(a, x) + pow(b, y) + pow(c, z);
printf("\nKet qua: y = %10.3f", Y);
getch();
return 0;
}
Trang 12Bài 11 : Có 3 loại giấy bạc 5000đ, 2000đ, 1000đ Có bao nhiêu tổ hợp 3 loại giấy bạc trên để có 200000 đ sao cho tổng số tờ giấy bạc không quá 50 tờ, trong đómỗi loại giấy bạc phải có ít nhất 1 tờ?
Trang 13float LT(float, int); //Khong dung de qui
float LT1(float, int); //Dung de qui
int main(void)
{ float y, a;
Trang 15Bài 13 : Lập trình tạo bảng chọn để nhập dữ liệu và tính diện tích các hình vuông, tròn, chữ nhật, hình thang, tam giác theo nhu cầu.
char *M[30] = {"Tinh dien tich hinh vuong",
"Tinh dien tich hinh chu nhat",
"Tinh dien tich hinh tam giac",
"Tinh dien tich hinh tron",
"Tinh dien tich hinh thang",
Trang 16int Menu(char *M[30], int, int);
{ case 0: HinhVuong(); break;
case 1: ChuNhat(); break;
case 2: TamGiac(); break;
case 3: HinhTron(); break;
case 4: HinhThang(); break;
Trang 17{ int i, j;
window(1, 1, 80, 24);
textattr(WHITE + (GREEN << 4));
gotoxy(X, Y); cprintf("%c", 218);
gotoxy(X, Y+H); cprintf("%c",192);
gotoxy(X+W, Y); cprintf("%c",191);
gotoxy(X+W, Y+H); cprintf("%c",217);
for (i = X+1; i <= X+W-1; i++)
{
gotoxy(i, Y); cprintf("%c",196);
gotoxy(i, Y+H); cprintf("%c",196);
}
for (i = Y+1; i <= Y+H-1; i++)
{
gotoxy(X, i); cprintf("%c",179);
gotoxy(X+W, i); cprintf("%c",179);
}
gotoxy(X + (W - strlen(Title)) / 2, Y);
cprintf("%s", Title);
textattr(WHITE + (BLUE << 4));
Trang 18for (i = Y+1; i <= Y+H-1; i++)
{
for (j = X+1; j <= X+W-1; j++)
{
gotoxy(j, i); cprintf("%c",32);
gotoxy(j, i); cprintf("%c",32);
}
}
window(X+1, Y+1, X+W-1, Y+H-1);
}
int Menu(char *M[30], int N, int k)
{ Khung((80 - 40)/2 - 1, 2, 40, N+1, "Menu chinh");
else textattr(WHITE + (BLUE << 4));
cprintf("%2d %-34s", i+1, M[i]);
}
c = getch();
if (!c) c = getch();
Trang 20gotoxy(1, 1); cprintf("\nCho canh a va b cua hinh chu nhat: ");
cscanf("%f%f", &a, &b);
"Cho hai canh va goc xen giua",
"Cho hai goc va canh ke hai goc do",
Trang 21gotoxy(1, 1);
cprintf("\nCho canh day a va chieu cao h: ");
cscanf("%f%f", &a, &h);
Trang 22cprintf("\nCho 2 goc beta, gamma: ");
cscanf("%f%f", &beta, &gamma);
Trang 24gotoxy(1, 3); cprintf("\nCho chieu cao h: ");
Trang 25{ int n, k;
clrscr();
do {
Trang 26printf("\nCho n, k: ");
scanf("%d%d", &n, &k);
Trang 29printf("\nCho n (3 chu so tro len): ");
Trang 30Bài 17 : Bài toán người đưa thư: Piter là người đưa thư Một hôm, để phá
vỡ sự nhàm chán của công việc thường ngày, anh ta bắt đầu đi mở tất cảcác hộp thư có số chẵn Sau đó bắt đầu từ hộp thư đánh số 3 anh ta đi tìmcác hộp thư là bội số của 3, đóng lại nếu nó đang mở và mở ra nếu nó đang đóng Tiếp tục như thế cho các hộp thư có số thứ tự chia hết cho 4, cho 5 v.v Cuối cùng, anh ta vô cùng ngạc nhiên trước kết quả công việc của mình
Điều gì đã xảy ra vậy? Hãy lập trình mô phỏng công việc của Piter, để xem kết quả cuối cùng là gì
int *D = (int *) malloc((n+1)*sizeof(int));
for (int i = 1; i <= n; i++)
D[i] = 0;
Trang 33tích, chu vi và in kết quả lên màn hình
Lời giải :
diện tích xung quanh, diện tích toàn phần và in kết quả lên màn hình
Trang 34printf("\n\nTinh dien tich va the tich khoi hop chu nhat\n\n");
printf("\nChieu dai : %5d", dai);
printf("\nChieu rong : %5d", rong);
printf("\nChieu cao : %5d", cao);
printf("\nDien tich xung quanh : %5d", Sxq);
printf("\nDien tich toam phan : %5d", Stp);
printf("\nThe tich : %5d", V);
Trang 35getch();
}
3 môn lớn hơn 19, không có môn nào dưới 5 thì thông báo trúng tuyển
Trang 37void NhapMang(float *, int
;
void InMang(float *, int);
void Swap(float &, float &);
void SapXep(float *, int );
int main(void)
Trang 38void NhapMang(float *m, int *n)
{ printf("\nCho so phan tu: ");
void InMang(float *m, int n)
{ for (int i = 0; i < n; i++)
Trang 39{ for (int i = 0; i < n - 1; i++)
chương trình đó với hàm SapXep chỉ có một vòng lặp
void InMang(float *, int);
void Swap(float &, float &);
void SapXep(float *, int );
int main(void)
{ float m[100];
int n;
NhapMang(m, &n);
Trang 40printf("\n\nMang truoc khi sap xep: ");
void NhapMang(float *m, int *n)
{ printf("\nCho so phan tu: ");
Trang 41void InMang(float *m, int n)
{ for (int i = 0; i < n; i++)
Trang 43Bài 25 : Giải và biện luận hệ hai phương trình tuyến tính hai ẩn với các hệ số a, b,
Trang 45for (int i = 1; i <= 6; i++){
for (int j = 1; j <= i; j++) printf("*");
Trang 46getch();
return 0;
}
tiền mệnh giá 5 đồng, 2 đồng, 1 đồng Hỏi chị Mai có bao nhiêu phương án trả tiền
Trang 47Lời giải : #include <stdio.h>
Trang 51printf("\nCo tiep tuc khong? (Y/N)");
Trang 52do { printf("\nCho xau 1: ");
nhập vào có thể là chữ in hay chữ thường nhưng phải được chuyển đổi ngay thành chữ in
Lời giải :
#include <stdio.h>
Trang 53Lý, Hoá của một học sinh, tính điểm trung bình 3 môn và in kết quả lên màn hình
Trang 54Lời giải :
#include <stdio.h>
#include <conio.h>
{ char *HoTen, *DiaChi;
int NgaySinh, ThangSinh, NamSinh;
float DiemToan, DiemLy, DiemHoa, DiemTrungBinh;
Trang 55đó Cho biết từ ngày đó đến hết năm còn bao nhiêu ngày nữa Biết rằng số ngày của mỗi tháng trong năm như sau:
Tháng 1 2 3 4 5 6 7 8 9 10 11 12
Số ngày 31 28 31 30 31 30 31 31 30 31 30 31
riêng tháng 2 năm nhuận có 29 ngày
Năm nhuận là các năm mà số 2 tận cùng chia hết cho 4 Riêng các năm chẵn trămthì phải cả hai chữ số hàng trăm cũng phải chia hết cho 4 Ví dụ: 1984 là năm nhuận, 2000 là năm nhuận, nhưng 1900 không phải là năm nhuận
Lời giải :
#include <stdio.h>
#include <conio.h>
Trang 56void NhapNgay(Day &D)
{ printf("\nCho ngay, thang, nam (dd/mm/yy): ");
scanf("%d/%d/%d", &D.Ngay, &D.Thang, &D.Nam);
}
void InNgay(Day D)
{ printf("%d/%d/%d", D.Ngay, D.Thang, D.Nam);
}
Trang 57int SoNgayTruoc(Day D)
{ int SoNgay;
switch (D.Thang)
{ case 1: SoNgay = D.Ngay; break;
case 2: SoNgay = 31 + D.Ngay; break;
case 3: SoNgay = 59 + D.Ngay; break;
case 4: SoNgay = 90 + D.Ngay; break;
case 5: SoNgay = 120 + D.Ngay; break;
case 6: SoNgay = 151 + D.Ngay; break;
case 7: SoNgay = 181 + D.Ngay; break;
case 8: SoNgay = 212 + D.Ngay; break;
case 9: SoNgay = 243 + D.Ngay; break;
case 10: SoNgay = 273 + D.Ngay; break;
case 11: SoNgay = 304 + D.Ngay; break;
case 12: SoNgay = 334 + D.Ngay; break;
Trang 58int SoNgaySau(Day D)
{ int SoNgay = SoNgayTruoc(D);
if (LaNamNhuan(D)) return 366 - SoNgay;
else return 365 - SoNgay;
printf("\nSo ngay tinh tu dau nam: %d", SoNgayTruoc(D));
printf("\nSo ngay tinh den cuoi nam: %d", SoNgaySau(D));
Trang 59*s3 = "mua thu Ha noi";
*s3 = "mua thu Ha Noi";
int main(void)
Trang 60Ket qua khi chay
Ha noi mua thu
thu
ua thu Ha noi
Sau lenh strcpy, xau s1 bi chep de boi xau "Ha noi mua thu"
Vi xau nay dai hon vung nho da cap phat cho s1 nen da lan sang
phan bo nho danh cho s2 Ket qua la s2 bi chep de boi xau "thu"
Chinh xau "thu" cung dai hon 3 byt danh cho s2 nen co mot byte
lan sang vung nho cua s3 Byte do chinh la byte ket thuc cua
xau "Ha noi mua thu" nen dong thoi cung la xau ket thuc cua ca
ba xau, trong do xau s3 bi cham het ngay tu ky tu dau tien Thuc
te la chi co chu 'm' cua xau nay bi mat, phan con lai cua xau
nay van nguyen ven khong bi chep de nhu xau s2 Neu viet tiep
lenh:
puts(++s3);
se thay phan nay