Bài tập C ++ có lời giải (mã mẫu)

Bên cạnh bài tập Python và Java, TipsMake.com còn tổng hợp cho các bạn một số bài tập C ++ cơ bản để luyện tập thêm trong quá trình học ngôn ngữ lập trình C ++.

Danh sách bài tập C ++ này được chia thành 9 phần, mỗi phần có từ 3 đến 5 bài, với mức độ khó tăng dần. Ban đầu bạn sẽ “khởi động” với những bài tập C ++ rất cơ bản, chẳng hạn như mô phỏng phép nhân bàn tay, in tiền, kiểm tra bộ 3 số nếu là cạnh của một tam giác, tính chu vi, diện tích của tam giác đó.

Dần dần sẽ là các công việc khó hơn như tạo và quản lý danh sách sinh viên, tài liệu, in ấn hoặc thực hiện các công việc khác theo yêu cầu của chủ đề. Vẽ đều đồ thị của hàm số lượng giác.

Danh sách các bài tập C ++

Bài tập C ++ số 1

Câu hỏi 1: Mô phỏng phép nhân đôi bàn tay

Lập trình in ra màn hình mô phỏng phép nhân 2 số nguyên dương với 3 chữ số được nhập từ bàn phím. Ví dụ với 2 số đầu vào là 763 và 589 thì phải in ra màn hình như sau:

Bài tập C ++ số 1

Mã mẫu:

#include<stdio.h>
#include<conio.h>
void main()
{int a,b;char dv,chuc,tram;
clrscr();
printf("Nhap so bi nhan co 3 chu so a="); scanf("%d",&a);
printf("Nhap so nhan co 3 chu so b="); scanf("%d",&b);
dv=b%10; chuc=b%100/10; tram=b/100;
printf("nMo phong phep nhan taynn");
printf("%20dn",a);
printf("%15c%5dn",'x',b);
printf("%20sn","-------");
printf("%20dn",a*dv);
printf("%19dn",a*chuc);
printf("%18dn",a*tram);
printf("%20sn","-------");
printf("%20ldn",long(a)*b);
getch();

}

Câu 2: Nhập số lượng, in số tờ, mệnh giá

Một người cần rút một số tiền T từ ngân hàng và muốn tổng số hóa đơn tối thiểu. Cho biết có các mệnh giá 100, 20, 5 và 1. Nhập số tiền T từ bàn phím và in ra số tờ tiền của mỗi mệnh giá và tổng số tờ tiền đã nhận.

Mã mẫu:

#include <stdio.h>
#include <conio.h>
void main()
{int t,t100,t20,t5;
clrscr();
printf("Nhap so tien t=");scanf("%d",&t);
t100=t/100;t-=100*t100; t20=t/20;t-=20*t20; t5=t/5;t-=5*t5;
printf("So to cac loai menh gia la :n");
printf("Loai 100 : %d ton",t100);
printf("Loai 20 : %d ton",t20);
printf("Loai 5 : %d ton",t5);
printf("Loai 1 : %d ton",t);
printf("Tong so to cac loai la : %dn",t+t5+t20+t100);
getch();
}

Câu 3: Chuyển số sang chữ số La mã

Hãy lập trình nhập số nguyên dương nhỏ hơn 1000 và chuyển sang số La mã tương ứng, in kết quả ra màn hình.

Mã mẫu:

#include<conio.h>

#include<iostream.h>

void main()

{int n,dv,ch,tr;

clrscr();

cout<<"Nhap so nguyen duong <1000 :n"; cin>>n;

cout<<"So "<<n<<" doi sang so La ma la :n";

tr=n/100;n=n%100; ch=n/10;dv=n%10;

switch (tr)

{case 1:cout<<"C";break;

case 2:cout<<"CC";break;

case 3:cout<<"CCC";break;

case 4:cout<<"CD";break;

case 5:cout<<"D";break;

case 6:cout<<"DC";break;

case 7:cout<<"DCC";break;

case 8:cout<<"DCCC";break;

case 9:cout<<"CM";

}

switch (ch)

{case 1:cout<<"X";break;

case 2:cout<<"XX";break;

case 3:cout<<"XXX";break;

case 4:cout<<"XL";break;

case 5:cout<<"L";break;

case 6:cout<<"LX";break;

case 7:cout<<"LXX";break;

case 8:cout<<"LXXX";break;

case 9:cout<<"XC";

}

switch (dv)

{case 1:cout<<"I";break;

case 2:cout<<"II";break;

case 3:cout<<"III";break;

case 4:cout<<"IV";break;

case 5:cout<<"V";break;

case 6:cout<<"VI";break;

case 7:cout<<"VII";break;

case 8:cout<<"VIII";break;

case 9:cout<<"IX";

}

getch();

}

Câu 4: In cách đọc số

In ra màn hình cách đọc số nguyên dương nhỏ hơn 1000000. Ví dụ số 726503 đọc là: bảy mươi hai nghìn sáu nghìn năm trăm lẻ ba.

Mã mẫu:

#include<iostream.h>

#include<conio.h>

void main()

{ char doc[9][5]={"mot","hai","ba","bon","nam","sau","bay","tam","chin"};

int van,ngan,tram,chuc,donvi,chv,dv;

long so;

clrscr();

cout<<"Nhap so nguyen duong <1000000 can doc = ";cin>>so;

cout<<"Cach doc so "<<so<<" la:n";

van=so/10000; ngan=so/1000%10; tram=so/100%10; chuc=so/10%10; donvi=so%10;

if(van)

{chv=van/10; dv=van%10;

if(chv==1)cout<<"muoi ";

else if(chv>1)cout<<doc[chv-1]<<" muoi ";

if(dv)cout<<doc[dv-1];

cout<<" van ";

}

if((ngan==0)&&van)cout<<" khong ngan ";

else if(ngan)cout<<doc[ngan-1]<<" ngan ";

if((tram==0)&&(van||ngan))cout<<" khong tram ";

else if(tram)cout<<doc[tram-1]<<" tram ";

if((chuc==0)&&donvi&&(van||ngan||tram))cout<<"le ";

else if(chuc==1)cout<<" muoi ";

else cout<<doc[chuc-1]<<" muoi ";

if(donvi)cout<<doc[donvi-1];

getch();

}

Câu 5: Giải phương trình bậc hai

Lập trình giải phương trình ax2 + bx + c = 0, các hệ số thực a, b, c nhập từ bàn phím.

Mã mẫu:

#include<stdio.h>

#include<conio.h>

#include<math.h>

void main()

{float a,b,c,d;

clrscr();

printf("Nhap cac he so a, b, c : "); scanf("%f%f%f",&a,&b,&c);

if (a)

{d=b*b-4*a*c;

if (d<0) printf("Vo nghiem !");

if (d==0) printf("Nghiem kep x=%4.2f",-0.5*b/a);

if (d>0)

{printf("Hai nghiem phan biet :n");

printf("x1=%4.2f",0.5*(-b-sqrt(d))/a);

printf(" x2=%4.2f",0.5*(-b+sqrt(d))/a);

}

}else if (b) printf("Mot nghiem x=%4.2f",-c/b);

else if (c) printf("Vo nghiem !");

else printf("Vo so nghiem !");

getch();

}

Bài tập C ++ số 2

Câu 1: Kiểm tra 3 số đó có phải là cạnh của tam giác không, nếu có thì là tam giác gì, tính chu vi, diện tích

Nhập vào 3 số thực a, b, c và kiểm tra xem 3 số đó có phải là 3 cạnh của một tam giác không? Nếu là 3 cạnh của một tam giác thì cho biết tam giác nào sau đây là: tam giác đều, cân vuông, vuông cân, pháp tuyến và tính chu vi, diện tích tam giác đó. In kết quả ra màn hình.

Mã mẫu:

#include<stdio.h>

#include<conio.h>

#include<math.h>

void main()

{float a,b,c,p,s;

int deu,vuong,can;

clrscr();

printf("Nhap cac so thuc a, b, c : "); scanf("%f%f%f",&a,&b,&c);

if (a+b>c&&a+c>b&&b+c>a)

{printf("La ba canh mot tam giac ");

deu=(a==b)&&(b==c);

vuong=(a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a);

can=(a==b)||(a==c)||(b==c);

if(deu)printf(" deun");

else if(vuong&&can)printf(" vuong cann");

else if(vuong)printf(" vuongn");

else if(can)printf(" cann");

else printf(" thuongn");

p=(a+b+c)/2;

printf("Chu vi = %4.2f, Dien tich = %4.2f",2*p,sqrt(p*(p-a)*(p-b)*(p-c)));

}else printf("Khong phai la ba canh mot tam giacn");

getch();

}

Câu 2: Tính số năm cần tiết kiệm

Một người cần có một số tiền T, được tích lũy bằng cách gửi tiết kiệm một số tiền ban đầu là S với lãi suất hàng năm là P% theo phương pháp lũy tiến (tiền lãi của mỗi năm được cộng vào tiền gốc). Hãy nhập các số thực T, S, P và xác định số năm cần tiết kiệm.

Mã mẫu:

#include <stdio.h>

#include <conio.h>

void main()

{ float s,t,p; int n;

clrscr();

printf("Nhap so tien ban dau : "); scanf("%f",&s);

printf("Nhap so tien can co : "); scanf("%f",&t);

printf("Nhap lai suat %% nam : "); scanf("%f",&p);

for (p=0.01*p,n=0;s<t;s+=s*p,n++);

printf("So nam can gui tiet kiem = %dn",n);

printf("Sau %d nam gui tiet kiem, so tien co la : %4.2f",n,s);

getch();

}

Câu hỏi 3: In PI tính được với một sai số cho trước

Lập trình tính toán số PI với đầu vào lỗi eps nhất định từ bàn phím. Biết rằng số PI tính theo công thức: PI = 4 – 4/3 + 4/5 – 4/7 + … tính tổng các số hạng có giá trị không nhỏ hơn eps. In PI và Turbo C ++ PI được tính toán với 10 chữ số thập phân để so sánh.

Mã mẫu:

#include<stdio.h>

#include<conio.h>

#include<math.h>;//chua hang so pi la M_PI

void main()

{float pi,t,n,eps,dau;

clrscr();

printf("Nhap sai so eps=");scanf("%f",&eps);

pi=0;t=4;n=dau=1;

do

{pi+=dau*t; n=n+2;

dau=-dau; t=4/n;

}while (t>=eps);

printf("nSo PI tinh duoc voi sai so %12.10f, PI=%12.10fn",eps,pi);

printf("nSo PI cua Turbo C++, PI=%12.10fn",M_PI);

getch();

}

Câu 4: Tìm và in ra số hoàn hảo

Tìm và in ra màn hình tất cả các số hoàn hảo không vượt quá số n đã cho được nhập từ bàn phím. Một số hoàn hảo là một số có giá trị bằng tổng các ước số của nó, không bao gồm ước số của chính nó. Ví dụ 6 là một số hoàn hảo vì 6 = 1 + 2 + 3.

Mã mẫu:

#include <stdio.h>

#include<conio.h>

void main()

{ int n,i,j,s,ts;

clrscr();

printf("Nhap n="); scanf("%d",&n);

printf("Cac so hoan hao khong vuot qua %d la :",n);

for (ts=0,i=2; i<=n; i++)

{ s=1;

for(j=2;j<=i/2;j++)

if(i%j==0)s+=j;

if(s==i)

{ ts++;

printf("n %d = 1", i);

for(j=2;j<=i/2;j++) if(i%j==0)printf(" + %d",j);

}

}

if(ts)printf("nCo tat ca %d so hoan hao",ts);

else printf("nKhong co so hoan hao nao");

getch();

}

Câu 5: Tìm và in ra các số nguyên tố nhỏ hơn n

Tìm và in ra màn hình tất cả các số nguyên tố không vượt quá số n cho trước được nhập từ bàn phím. Số nguyên tố là số có ước chỉ là 1 và chính là số đó.

Mã mẫu:

#include<stdio.h>

#include<conio.h>

void main()

{ int n,i,j,d;

clrscr();

printf("Nhap gia tri N : "); scanf("%d", &n);

printf("Cac so nguyen to khong vuot qua %d la :n",n);

for (d=0,i=2;i<=n;i++)

{for (j=2;j<=i/2; j++)

if(i%j==0)break;

if (j==i/2+1)

{d++;

printf(" %d",i);

}

}

printf("nTong so co %d so nguyen to",d);

getch();

}

Bài tập C ++ số 3

Câu hỏi 1: Kiểm tra hình vuông hoàn hảo

Viết hàm kiểm tra xem một số có hoàn thiện hay không (bình phương là một số bằng bình phương của một số nguyên nào đó); một hàm kiểm tra xem một số có phải là số Pitago hay không (một số Pitago là một hình vuông hoàn hảo và bằng tổng của hai hình vuông hoàn hảo khác). Trong hàm main hãy nhập một số nguyên dương và sử dụng các hàm trên để kiểm tra xem nó có phải là một hình vuông hoàn hảo hay không? Số Pitago?

Mã mẫu:

#include<stdio.h>

#include<conio.h>

#include<math.h>

int socp(int);

int soptg(int);

void main()

{ clrscr();

int n;

printf("Nhap so nguyen duong n="); scanf("%d",&n);

if(socp(n))printf("n%d la so chinh phuong",n);

else printf("n%d khong phai so chinh...