Bên cạnh các bài tập Python, Java, Quản Trị Mạng cũng 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 mục 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 cấp độ khó tăng dần. Ban đầu bạn sẽ khởi động với những bài tập C++ hết sức cơ bản, như mô phỏng phép nhân tay, in số tiền, kiểm tra một bộ 3 số xem có phải là cạnh của một tam giác không, tính chu vi, diện tích tam giác đó.
Trang 1BÀI TẬP C++ CÓ
LỜI GIẢI
Trang 2Bài 1: Mô phỏng phép nhân tay
Lập trình in ra màn hình mô phỏng phép nhân tay 2 số nguyên dương
có 3 chữ số nhập từ bàn phím Ví dụ với 2 số nhập vào là 763 và 589 thì phải in ra màn hình như sau:
Code 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 tay\n\n");
printf("%20d\n",a);
printf("%15c%5d\n",'x',b);
printf("%20s\n"," -");
printf("%20d\n",a*dv);
printf("%19d\n",a*chuc);
printf("%18d\n",a*tram);
printf("%20s\n"," -");
printf("%20ld\n",long(a)*b);
getch();
}
Bài 2 Vi t chế ương trình nh p vào 2 s nguyên, sau đó in ra t ng bình ậ ố ổ
phương c a chúng.ủ
Phân tích:
Trang 3– Nh p vào 2 s nguyên t bàn phím.ậ ố ừ
– Tính t ng theo công th c: S = a*a + b*bổ ứ
Code:
/************************************************************
* Author: VNCODING
* History
* 2014/03/17 first create VNCODING
*************************************************************/
#include <stdio.h>
#include <conio.h>
void main()
{
int a, b;
long S = 0;
printf("\n Nhap vao so nguyen thu nhat = ");
scanf("%d", &a);
printf("\n Nhap vao so nguyen thu hai = ");
scanf("%d", &b);
S = a*a + b*b;
printf("\n Tong binh phuong 2 so = %d^2 + %d^2 = %d ", a, b, S); getch();
}
K t qu : ế ả
Nhap vao so nguyen thu nhat = 3
Nhap vao so nguyen thu hai = 4
Tong binh phuong 2 so = 3^2 + 4^2 = 25
Bài 3 Vi t chế ương trình nh p vào s nguyên ch s đo đ c a m t góc và ậ ố ỉ ố ộ ủ ộ cho bi t nó thu c góc ph n t th m y trên đế ộ ầ ư ứ ấ ường tròn lượng giác
Phân tích:
– Nh p vào s đo lậ ố ượng giác b t kỳ ( x > 0).ấ
– Xác đ nh cung lị ượng giác theo đi u ki n dề ệ ưới đây:
Góc ph n t th I: (360*k) <= x < (90 + 360*k)ầ ư ứ
Trang 4Góc ph n t th II: (90 + 360*k) <= x < (180 +ầ ư ứ 360*k)
Góc ph n t th III: (180 +ầ ư ứ 360*k) <= x < (270 + 360*k)
Góc ph n t th III: (270 + 360*k) <= x < 360*(k+1)ầ ư ứ
(k = 0, 1, 2, )
Code:
/************************************************************
* Author: VNCODING
* History
* 2014/03/17 first create VNCODING
*************************************************************/
#include "stdio.h"
#include "conio.h"
void main()
{
int angle, k;
do
{
printf("\n Nhap vao so do goc (0 <= x <= 360*k) = "); scanf("%d", &angle);
}while(angle < 0);
k = angle / 360;
if(angle >= (360*k) && angle < (90 + 360*k))
printf("\n %d o goc phan tu thu I", angle);
else if (angle >= (90 + 360*k) && angle < (180 + 360*k)) printf("\n %d o goc phan tu thu 2", angle);
else if (angle >= (180 + 360*k) && angle < (270 + 360*k)) printf("\n %d o goc phan tu thu 3", angle);
else if (angle >= (270 + 360*k) && angle <= 360*(k + 1)) printf("\n %d o goc phan tu thu 4", angle);
else
printf("\n %d khong hop le");
getch();
}
K t qu : ế ả
Nhap vao so do goc (0 <= x <= 360*k) = 567
Trang 5567 o goc phan tu thu 3
Bài 4 In ra màn hình cách đ c m t s nguyên dọ ộ ố ương nh h n 1000000 Ví ỏ ơ
d s 726503 đ c là: b y mụ ố ọ ả ươi hai v n sáu ngàn năm trăm linh ba.ạ
Code 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 ";
Trang 6else 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();
}
Bài 5 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.ậ ừ
Code 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);
Trang 7if (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 6Nh p 1 s c > 0 (sai s ) và 1 s th c x r i tính :ậ ố ố ố ự ô e^x = 1 + x/1! + x^2/2! + …+x^n/n!
T ng đổ ược tính v i n đ l n sao cho |x^n/n!| < c th a man.ớ ủ ớ ỏ
Thu t toán: ậ
– Tương t nh tínhự ư sinx, cosx, chúng ta s d ng vòng l p for() đ gi i ử ụ ặ ể ả quy t bài toán này.ế
Code:
/************************************************************
* Author: VNCODING
* History
* 2014/04/02 first create VNCODING
*************************************************************/
#include "stdio.h"
#include "conio.h"
#include "math.h"
long giaithua(int N);
void main()
Trang 8float x; // goc
float c; // sai so
float e = 1;
float exp = 0;
int n = 0;
printf("\n Nhap x = ");
scanf("%f", &x);
printf("\n Nhap sai so = ");
scanf("%f", &c);
while(e >= c)
{
e = pow(float(x),n)/giaithua(n); // tinh sai so
exp += e;
n++;
}
printf("\n e^%f = %f", x, exp);
getch();
}
long giaithua(int N)
{
if(N == 0 || N == 1)
return 1;
else
return N*giaithua(N-1);
}
K t qu : ế ả
Nhap x = 2
Nhap sai so = 0.0001
e^2.000000 = 7.389047
Bài 7 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.ậ ừ
Code m u: ẫ
#include<stdio.h>
#include<conio.h>
Trang 9void 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 8 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.ậ ừ
Code m u: ẫ
#include<stdio.h>
Trang 10#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 9 In số PI tính được với sai số cho trước
Trang 11Lập trình tính số PI với sai số eps cho trước nhập 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 ra số PI tính được và số PI của Turbo C++ với 10 chữ số thập phân để so sánh
Code 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.10f\n",eps,pi);
printf("\nSo PI cua Turbo C++, PI=%12.10f\n",M_PI);
getch();
}
Bài 10 Ki m tra s chính ph ể ố ươ ng
Vi t 1 hàm ki m tra 1 s có là chính phế ể ố ương hay không (s chính phố ương
là s b ng bình phố ằ ương c a m t s nguyên nào đó); m t hàm ki m tra 1 ủ ộ ố ộ ể
s có ph i là s Pitago hay không (s Pitago là s chính phố ả ố ố ố ương và b ng ằ
Trang 12t ng 2 s chính phổ ố ương khác) Trong hàm main nh p s nguyên dậ ố ương và
s d ng các hàm trên ki m tra có là s chính phử ụ ể ố ương? s Pitago?ố
Code 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 phuong",n);
if(soptg(n))printf("\n%d la so Pitago",n);
else printf("\n%d khong phai so Pitago",n);
getch();
}
int socp(int n)
{int t=sqrt(n);
if(n==t*t)return 1;
else return 0;
}
Trang 13int soptg(int n)
{int i;
if(!socp(n))return 0;
else
{for(i=1;i<n;i++)
if(socp(i)&&socp(n-i))break; if(i<n)return 1;
else return 0;
}
}