Bài tập Lập trình C++ - Lương Trần Hy Hiến

Bài tp C++  
Lưu hành ni bộ  
MC LC  
CHƯƠNG 1.  
Bài tp mở đầu............................................................................................................. 3  
Bài tp 1:.......................................................................................................................................... 3  
Bài tp 2:.......................................................................................................................................... 3  
Bài tp 3:.......................................................................................................................................... 3  
Bài tp 4:.......................................................................................................................................... 3  
Bài tp 5:.......................................................................................................................................... 4  
Bài tp 6:.......................................................................................................................................... 4  
Bài tp 7:.......................................................................................................................................... 4  
Bài tp 8:.......................................................................................................................................... 4  
Bài tp 9:.......................................................................................................................................... 4  
Bài tp 10:........................................................................................................................................ 5  
Bài tp 11:........................................................................................................................................ 5  
Bài tp 12:........................................................................................................................................ 5  
CHƯƠNG 2.  
Cu trúc điu khin – Cu trúc lp .............................................................................. 5  
2.1. Bài tp liên quan đến cu trúc điu khin:............................................................................... 5  
Bài tp 13:........................................................................................................................................ 5  
Bài tp 14:........................................................................................................................................ 5  
Bài tp 15:  
(*):............................................................................................................................ 5  
Bài tp 16:........................................................................................................................................ 6  
Bài tp 17:  
Bài tp 18:  
(*):............................................................................................................................. 6  
(*):............................................................................................................................ 6  
Bài tp 19:........................................................................................................................................ 6  
Bài tp 20:........................................................................................................................................ 6  
Bài tp 21:........................................................................................................................................ 7  
Bài tp 22:........................................................................................................................................ 7  
Bài tp 23:........................................................................................................................................ 7  
Bài tp 24:........................................................................................................................................ 7  
Bài tp 25:........................................................................................................................................ 7  
Bài tp 26:........................................................................................................................................ 7  
Bài tp 27:........................................................................................................................................ 7  
Bài tp 28:........................................................................................................................................ 7  
2.2. Bài tp liên quan đến cu trúc lp:........................................................................................... 8  
Bài tp 29:........................................................................................................................................ 8  
Bài tp 30:........................................................................................................................................ 8  
Bài tp 31:........................................................................................................................................ 8  
Bài tp 32:........................................................................................................................................ 8  
Bài tp 33:........................................................................................................................................ 9  
Bài tp 34:........................................................................................................................................ 9  
Bài tp 35:........................................................................................................................................ 9  
Bài tp 36:........................................................................................................................................ 9  
Bài tp 37:........................................................................................................................................ 9  
Bài tp 38:........................................................................................................................................ 9  
Bài tp 39:........................................................................................................................................ 9  
Bài tp 40:...................................................................................................................................... 10  
Bài tp 41:  
Bài tp 42:  
Bài tp 43:  
Bài tp 44:  
(*)........................................................................................................................... 10  
** ............................................................................Error! Bookmark not defined.  
*** ..........................................................................Error! Bookmark not defined.  
**** ........................................................................Error! Bookmark not defined.  
CHƯƠNG 3.  
Hàm............................................................................................................................ 10  
Bài tp 45:...................................................................................................................................... 10  
Bài tp 46:...................................................................................................................................... 11  
Bài tp 47:...................................................................................................................................... 11  
Bài tp 48:...................................................................................................................................... 11  
Bài tp 49:...................................................................................................................................... 11  
Bài tp 50:...................................................................................................................................... 12  
Bài tp 51:...................................................................................................................................... 12  
Bài tp 52:...................................................................................................................................... 12  
CHƯƠNG 4.  
Mng.......................................................................................................................... 12  
4.1. Mng 1 chiu ......................................................................................................................... 12  
Bài tp 53:...................................................................................................................................... 12  
Bài tp 54:...................................................................................................................................... 13  
4.2. Mng 2 chiu ......................................................................................................................... 13  
Bài tp 55:...................................................................................................................................... 13  
CHƯƠNG 5.  
Kiu dliu có cu trúc............................................................................................. 14  
Bài tp 56:...................................................................................................................................... 14  
Bài tp 57:...................................................................................................................................... 14  
Bài tp 58:...................................................................................................................................... 14  
Bài tp 59:...................................................................................................................................... 14  
Bài tp 60:...................................................................................................................................... 14  
Bài tp 61:...................................................................................................................................... 14  
Bài tp 62:  
CHƯƠNG 6.  
(*)............................................................................Error! Bookmark not defined.  
Các kthut nâng cao................................................................................................ 15  
6.1. Con tr................................................................................................................................... 15  
Bài tp 63:...................................................................................................................................... 15  
Bài tp 64:...................................................................................................................................... 15  
6.2. Kthut đệ quy...................................................................................................................... 15  
Bài tp 65:...................................................................................................................................... 15  
Bài tp 66:...................................................................................................................................... 15  
Bài tp 67:...................................................................................................................................... 15  
Bài tp 68:...................................................................................................................................... 15  
Bài tp 69:...................................................................................................................................... 15  
6.3. Làm vic vi tp tin............................................................................................................... 16  
Bài tp 70:...................................................................................................................................... 16  
Bài tp 71:...................................................................................................................................... 16  
Bài tp 72:...................................................................................................................................... 16  
Bài tp 73:...................................................................................................................................... 16  
CHƯƠNG 7.  
Bài tp Project............................................................................................................ 16  
7.1. Chương trình dò từ đin......................................................................................................... 16  
Mô t:............................................................................................................................................. 16  
Hướng dn: .................................................................................................................................... 17  
GI Ý TỪ ĐIN ........................................................................................................................... 17  
7.2. Chương trình sp xếp dòng.................................................................................................... 18  
Mô t:............................................................................................................................................. 18  
Bài tp lp trình C++  
2/18  
GV: Lương Trn Hy Hiến  
CHƯƠNG 1. Bài tp mở đầu  
Bài tp 1:  
Viết chương trình hin ra màn hình dòng ch: “CHAO MUNG CAC BAN DEN VOI  
MON HOC C++”.  
HD:  
#include <iostream>  
using namespace std;  
int main()  
{
cout<<” CHAO MUNG CAC BAN DEN VOI MON HOC C++”;  
return 0 ;  
}
Bài tp 2:  
Viết chương trình xut ra màn hình hình vuông đặc kí t‘*’ có cnh bng a (vi a nhp từ  
bàn phím).  
HD:  
// chuong trinh ve chu nhat dac  
#include<iostream>  
using namespace std;  
int main()  
{
int a, i, j;  
cout<<”Ban hay nhap do dai canh: “;  
cin>>a;  
for (i = 1; i<= a; i++)  
{
for (j =1; j<= a; j++)  
cout<<”* “; //luu y,co mot khoang trong o day  
cout<<”\n”;  
}
return 0 ;  
}
Bài tp 3:  
Viết chương trình nhp vào bán kính ca hình tròn; xut ra din tích và chu vi ca  
hình tròn đó.  
Din tích ca hình tròn biết trước bng cách nhp vào tbàn phím, tính và in ra bán  
kính ca hình tròn đó.  
Bài tp 4:  
Viết chương trình nhp vào đáy ln, đáy nh, chiu cao ca hình thang; xut ra din tích  
ca hình thang đó.  
Bài tp lp trình C++  
3/18  
GV: Lương Trn Hy Hiến  
Bài tp 5:  
Chương trình tính giá trbiu thc y = 3ecos(t+1)  
.
HD: Hàm tính là exp(x), hàm tính cos(x) trong tp tin thư vin <cmath>  
// Chuong trinh tinh bieu thuc y= 3e^cos(t+1)  
#include<iostream>  
using namespace std;  
#include<cmath>  
int main()  
{
double t, y;  
cout<<”Moi ban nhap 1 so thuc t: ”;  
cin>>t;  
y= 3*exp(cos(t+1));  
cout<<”Gia tri cua bieu thuc can tinh la: ”<< y;  
return 0;  
}
Bài tp 6:  
Viết chương trình nhp vào 2 snguyên và các phép toán +, -, *, /, %, >,<. In ra kết quả  
phép toán đó.  
// Chuong trinh tinh + - * /  
#include<iostream>  
using namespace std;  
int main()  
{
int a, b;  
cout<<"Ban hay nhap 2 so nguyen: “;  
cin>>a>>b;  
cout<<”Tong cua 2 so vua nhap la: ”<<a+b<<”\n”;  
cout<<”Hieu cua 2 so vua nhap la: ”<<a-b<<”\n”;  
cout<<”Tich cua 2 so vua nhap la: ”<<a*b<<”\n”;  
if (b!=0)  
cout<<”Thuong cua 2 so vua nhap la: ”<<a/b;  
return 0;  
}
Bài tp 7:  
Viết chương trình nhp vào thông tin ca mt sinh viên bao gm: mã ssinh viên, htên,  
quê quán, năm sinh, đim trung bình các năm hc; xut ra thông tin ca sinh viên va  
nhp.  
Bài tp 8:  
Viết chương trình nhp vào ba cnh ca mt tam giác, tính và xut ra din tích ca tam  
giác đó.  
HD: Độ dài 3 cnh a, b, c kiu sthc. Din tích S = p(p a)(p b)(p c) vi p là na  
chu vi.  
Bài tp 9:  
Mt đon thng được biu din bi hai đim trong mt phng. Viết chương trình nhp vào  
hai đim ca mt đon thng và xut ra trung đim ca đon thng đó.  
Bài tp lp trình C++  
4/18  
GV: Lương Trn Hy Hiến  
HD:  
Ta cn 4 biến xA, yA, xB, yB để lưu ta độ 2 đim A, B trong mt phng.  
xA + x  
yA + yB  
Trung đim I ca đon AB là: xI =  
B , yI =  
2
2
Bài tp 10:  
Viết chương trình nhp vào ba đỉnh ca mt tam giác. Xut ra trng tâm ca tam giác đó.  
HD:  
Ta cn 6 biến xA, yA, xB, yB, xC, yC để lưu ta độ 3 đỉnh A, B, C ca tam giác.  
xA + xB + xC  
yA + yB + yC  
Trng tâm I là: xI =  
, yI =  
3
3
Bài t  
p 11:  
Xét tam thc bc 2 có dng ax2 + bx + c. Viết chương trình nhp vào các hsca mt  
tam thc bc 2 và giá trca biến sx; xut ra giá trca tam thc bc 2 đó.  
HD:  
f = a * x * x + b * x + c  
Bài t p 12:  
Hãy tìm các biu thc đúng trong các biu thc dưới đây:  
(i=j)++  
i+j++  
++(i+j)  
++i+++j  
Vào máy để kim tra các dự đoán ca bn.  
CHƯƠNG 2. Cu trúc điu khin – Cu trúc lp  
2.1.  
Bài tp liên quan đến cu trúc điu khin:  
Bài t p 13:  
Viết chương trình nhp vào mt s. Xut ra màn hình chui “schn” nếu số đó là schn.  
Xut ra màn hình chui “sl” nếu số đó là sl.  
HD:  
if ( N % 2 == 0) cout<<”So chan”;  
else cout<<”So le”;  
Bài t p 14:  
Viết chương trình nhp vào 2 snguyên, tìm sln nht ca 2 s.  
Bài t p 15: (*):  
Viết chương trình thhin trò chơi on tù tì vi qui ước: Búa = ‘B’; Bao = ‘O’; Kéo =‘K’.  
Nhp vào hai kí tự đại din cho hai người chơi. Xut ra màn hình câu thông báo người chơi  
nào thng hoc hòa.  
Bài tp lp trình C++  
5/18  
GV: Lương Trn Hy Hiến  
Bài t p 16:  
Viết chương trình tính lương ca nhân viên da theo thâm niên công tác (TNCT) như sau:  
Lương = hs* lương căn bn, trong đó lương căn bn là 650000 đồng.  
Nếu TNCT < 12 tháng: hs= 1.92  
Nếu 12 <= TNCT < 36 tháng: hs= 2.34  
Nếu 36 <= TNCT < 60 tháng: hs= 3  
Nếu TNCT >= 60 tháng: hs= 4.5  
HD:  
const int luongcb = 650;  
int tnct;  
double heso, luong;  
if (tnct < 12) heso = 1.92;  
else if (tnct < 36) heso = 2.34;  
else if (tnct < 60) heso = 3;  
else heso = 4.5;  
luong = luongcb * heso;  
(*)  
Bài tp 17:  
:
Mt đim KARAOKE tính tin khách hàng theo công thc sau:  
Mi gitrong 3 giờ đầu tiên tính 30 000 đồng/gi,  
Mi gitiếp theo có đơn giá gim 30% so vi đơn giá trong 3 giờ đầu tiên.  
Ngoài ra nếu thi gian thuê phòng t8 – 17 githì được gim giá 10%. Viết chương trình  
nhp vào gibt đầu, gikết thúc và in ra stin khách hàng phi trbiết rng 8 gibt  
đầu < gikết thúc 24.  
HD:  
int giobd, giokt, thoigian, tien;  
//Nhp giobd, giokt và kim tra điu kin giobd >= 8 và giokt <= 24 sdng do...while  
thoigian = giokt – giobd;  
if (thoigian > 3)  
tien = 3 * 30000 + (thoigian – 3) * 30000 * 0.7;  
else tien = thoigian * 30000;  
if (giokt <= 17) //tìm cách tính tng quát hơn  
tien *= 0.9; //Gim 10%  
Bài t p 18: (*):  
Nhp vào ngày, tháng ca mt năm hin ti. Bn hãy viết chương trình:  
Kim tra tính hp lca ngày, tháng nhp;  
Cho biết tháng này thuc quý my trong năm;  
Cho biết tháng nhp có bao nhiêu ngày;  
Cho biết ngày hôm sau ca ngày đã nhp là ngày nào;  
Cho biết ngày hôm trước ca ngày đã nhp là ngày nào.  
Bài tp 19:  
Viết chương trình nhp vào 3 s, tìm sln nht, nhnht ca 3 số đó.  
Bài t p 20:  
Viết chương trình nhp vào 4 s, tìm sln nht, nhnht ca 4 số đó.  
Bài tp lp trình C++ 6/18 GV: Lương Trn Hy Hiến  
Bài t p 21:  
Viết chương trình xếp loi thi đua cho hc sinh. (Tphân tích ngcnh và lp trình)  
Bài t p 22:  
Viết chương trình gii bt phương trình:  
ax + b > 0  
HD:  
double a, b;  
cin>>a>>b;//Kim tra a <> 0  
if(a > 0)  
cout<<”Nghiem : x > “<<-b/a;  
else  
cout<<” Nghiem : x < “<<-b/a;  
Bài t p 23:  
Viết chương trình nhp vào 2 phân s, xut ra tng hiu tích thương ca hai phân số đó.  
Lưu ý kim tra điu kin nhp mu khác 0 (dùng do …while).  
Bài t p 24:  
Viết chương trình nhp vào mt kí t. Hãy xét xem đây là có phi là kí tchin? là kí tự  
chthường? là kí ts? hay là kí tkhác nhng loi kí ttrên?  
Bài t p 25:  
Chương trình cho phép nhp vào mt snguyên dương, là lượng đin tiêu th(kWh) trong  
tháng ca nhà bn. Chương trình tính và in stin nhà bn phi trcho tháng đó được tính  
theo giá định mc như bng sau:  
100 kwh đầu tiên 50 kwh tiếp 50 kwh tiếp 100 kwh tiếp T300 kwh trlên  
550 VND  
900 VND  
1250 VND  
1450 VND  
1700 VND  
và phi đóng thuế giá trgia tăng 10%.  
Bài t p 26:  
Mt công ty trlương cho nhân viên (theo tun) như sau:  
o Nhà qun lí (mã s1) nhn mt khon lương cố định X (theo tun).  
o Công nhân làm theo gi(mã s2) nhn mt khon lương cơ bn Y đồng trong 40  
giờ đầu trong tun và 1.5 ln lương cơ bn cho mi givượt mc qui định đó.  
o Lương công nhân theo li nhun (mã s3) được nhn 500,000đ cng thêm 7% trị  
giá doanh sZ mà công nhân y bán hàng ra trong tun.  
o Lương công nhân theo sn phm (mã s4) nhn tin da vào sN sn phm mà  
người đó đã làm ra trong tun, vi mi sn phm thì người này nhn được S đồng  
(mi người chlàm ra mt loi sn phm nht định).  
Viết chương trình cho nhp vào mã s, tùy theo loi công nhân mà cho phép nhp vào  
nhng thông tin cn thiết cho công nhân đó để tính lương. Sau đó tính lương mà công ty phi  
trcho nhân viên y trong tun.  
Bài t p 27:  
Nhp vào mt snguyên có 2 chs, hãy in ra cách đọc ca nó.  
Bài t p 28:  
Nhp vào mt snguyên có 3 chs, hãy in ra cách đọc ca nó.  
HD:  
Bài tp lp trình C++  
7/18  
GV: Lương Trn Hy Hiến  
int N; //Scó 3 chscn đọc  
int tram, chuc, donvi;  
tram = N / 100;  
donvi = N % 10;  
chuc = (N – tram * 100) / 10;  
string chuoi = “”; //Khai báo lp string trong thư vin STL  
switch(tram){  
case 1: chuoi += “Mt trăm”; break;  
case 2: chuoi += “Hai trăm”; break;  
….  
}
//Tương tcho chuc, donvi  
2.2.  
Bài tp liên quan đến cu trúc lp:  
Bài t p 29:  
Viết chương trình tính n!! vi n!! = 1.3.5…n nếu n l, n!! = 2.4.6…n nếu n chn.  
HD:  
Ta cn xác định i chy t1 hay 2 phthuc vào n chn hay l?  
for(int i = (n % 2)? 1 : 2; i <= n; i += 2) gt *= i;  
Bài t p 30:  
Viết chương trình nhp vào snguyên n. Tính và in ra các tng sau:  
S =1+ 2 + 3+...+ n  
S =1+ 3 + 5 + 7 + ... + (2n +1)  
S = n!  
1
1
1
1
S =  
+
+
+ ....... +  
2.3 3.4 4.5  
n.(n +1)  
Bài tp 31:  
Viết chương trình đếm và in ra slượng các snguyên chia hết cho 3 hoc 7 nm trong  
đon 1 đến 100.  
HD:  
int Dem = 0;  
for (int i = 1; i <= 100; i++)  
if( (i % 3 ==0) || (i % 7 == 0))  
{
Dem++;  
}
Bài t p 32:  
Viết chương trình nhp vào mt snguyên dương, kim tra đó có phi là snguyên thay  
không?  
Bài tp lp trình C++  
8/18  
GV: Lương Trn Hy Hiến  
Bài t p 33:  
Viết chương trình nhp vào mt snguyên dương, xut ra dng phân tích tha snguyên  
tca số đó.  
HD:  
int n;  
cout<<”Nhap n: “;  
cin>>n;  
cout<<n<<" = ";  
int i= 2;  
while(i <= n)  
{
if(n % i == 0){  
cout<<i;  
n /= i;  
if(n != 1) cout<<"*";  
}
else i++;  
}
Bài t p 34:  
Viết chương trình nhp vào đim trung bình ca mt ssinh viên cho trước. In ra đim  
trung bình ca tt ccác sinh viên.  
Bài t p 35:  
Viết chương trình tính và in ra trung bình cng ca mt dãy số được nhp vào tbàn phím  
(không hn chế slượng snhp vào). Qui ước snhp có giá trlà 9999 là “scm canh”  
(nghĩa là nhp đến khi nhp s9999 thì dng vic nhp).  
10 + 8 +11+10 + 7  
Ví d: nhp 10 8 11 10 7 9999 gttb=  
=9.2  
5
Bài t p 36:  
Viết chương trình in ra bng cu chương.  
HD:  
for(int i = 1; i < 10; i++)  
{
for(int j = 2; j < 6; j++)  
cout<<j<<" x "<<i<<" = "<<setw(2)<<j*i<<" ";  
cout<<endl;  
}
Bài t p 37:  
Viết chương trình in ra bng lượng giác sin, cos, tan ca các góc t0..180 dãn cách 5 độ.  
Sdng hàm sin, cos, tan trong cmath.  
Bài t p 38:  
Viết chương trình tìm ước chung ln nht, bi chung nhnht ca 2 snguyên M, N nhp  
tbàn phím.  
Bài t p 39:  
Viết chương trình hin lên màn hình các kí tcó mã ASCII t33 đến 255.  
Bài t  
p l  
p trình C++  
9/18  
GV: Lương Trn Hy Hiến  
Bài t p 40:  
Viết chương trình đổi tin vi các yêu cu sau:  
Nhp vào sN là giá trtin cn đổi, in ra chi tiết sttin đổi cho khách hàng.  
Các loi tin đổi là (đơn vngàn đồng): 500, 200, 100, 50, 20, 10, 5, 2, 1.  
Ưu tiên đổi ttcó giá trcao nht đến tcó giá trthp nht.  
Bài t p 41: (*)  
Trò chơi đoán số được mô tnhư sau:  
Có hai người chơi.  
Người chơi thnht nghĩ ra mt sx ngu nhiên t1..100 và yêu cu người thứ  
hai đoán trúng smình đã nghĩ. Người thhai được quyn đoán nhiu ln nhưng  
không vượt quá n ln (n xác định trước).  
Mi ln người thhai đoán sai, người thnht sthông báo cho người thhai  
biết là sx ln hơn hay nhhơn sngười thhai đã đoán.  
Trò chơi kết thúc khi người thhai đoán trúng sx hoc người thhai không  
đoán trúng sx sau n ln đoán.  
a) Viết chương trình thhin trò chơi đoán sgia người và máy. Vi máy đóng  
vai trò là người thhai (người đoán).  
b) Viết chương trình thhin trò chơi đoán sgia người và máy. Vi máy đóng  
vai trò là người thnht (người nghĩ ra s).  
Bài tp 42: (*)  
Vi  
ết chương trình nh  
n 1 giá tr  
nguyên dài và cho hi  
n th  
ra màn hình số đó d  
ng: h 10,  
h
16, h 8, h 2.  
Bài tp 43: (*)  
Vi  
ết chương trình gi  
i phương trình b  
c 2 v  
i các h  
s
nh  
p t bàn phím (xét đầy đủ các  
trường hp).  
Bài tp 44: (*)  
Vi  
ế
t chương trình tính sin(x) theo công th  
c x  
p x  
:
x3 x5  
x2n+1  
sin  
(
x
)
= x−  
+
+.....+  
(
1 n  
)
v
i
độ chính xác 0.00001. T  
c là tính cho t i n  
3! 5!  
(
2n +1!  
)
xn  
sao cho:  
< 0.00001.  
n!  
CHƯƠNG 3. Hàm  
Bài tp 45:  
Viết chương trình nhp htên, đim Toán, đim Văn ca mt hc sinh. Tính đim trung  
bình và xut ra kết qu. (Yêu cu: Viết hàm nhp, xut, tính trung bình).  
HD:  
void Nhap(char HT[50], double &T, double &V)  
{
cout<<”Ho ten: “; cin>>HT;  
Bài tp khó  
Bài t  
p l  
p trình C++  
10/18  
GV: Lương Trn Hy Hiến  
cout<<”Toan: “; cin>>T;  
cout<<”Van: “; cin>>V;  
}
void Xuat(char HT[50], double T, double V, double DTB)  
{
cout<<”Sinh vien: “<<HT<<endl;  
cout<<”Toan: “<<T<<”, Van: “<<V<<” ==> DTB : “<<DTB<<endl;  
}
void TinhTB(T, double V, double &DTB)  
{
DTB = (T + V) / 2;  
}
Bài t p 46:  
Vi  
ết  
định ngh  
ĩa cho hàm tongLe trong C++ v  
i m u khai báo:  
long tongLe(int N);  
Hàm này tr  
v
t
ng c  
tongLe(7), k  
t chương trình cho phép đọc giá tr  
ng t đến N, hãy in ra giá tr  
a t  
t c  
s
l
t
1
tr  
đến N (g  
m c  
16; ho  
nguyên N t bàn phím, g  
ng ó.  
s
1 và s  
c khi gi tongLe(12) thì k  
i hàm để tính t ng các s  
N n  
ế
u N l  
, và ta ph  
i gi  
sN  
1). Ví d  
khi g  
i
ết qu  
v
s
ết qu  
36.  
Vi  
ế
s
lẻ  
trong kho  
1
t
đ
Bài t p 47:  
Viết các định nghĩa cho hàm:  
(a) ktNgTo, vi mu khai báo: bool ktNgTo(int N);  
Hàm thc hin vic kim tra xem mt snguyên có phi là snguyên thay không,  
nếu đúng là snguyên tthì trvgiá trtrue, nếu không phi thì trvgiá trfalse.  
(b) Hàm nhoHonM vi mu khai báo: void nhoHonM(int M);  
Hàm này thc hin vic gi hàm ktNgTo và in ra tt ccác snguyên tnhhơn  
hoc bng M. Ví dgi nhoHonM(8) thì sin ra các snguyên t: 2, 3, 5, 7.  
(c) Viết định nghĩa cho hàm MsoNgTo vi mu khai báo: void MsoNgTo(int M);  
Hàm này thc hin vic gi hàm ktNgTo và in ra M snguyên tố đầu tiên. Ví dụ  
gi MsoNgTo(8) thì sin ra 8 snguyên tố đầu tiên là: 2, 3, 5, 7, 11, 13, 17, 19.  
Viết chương trình cho đọc vào giá tr1 snguyên dương, gi các hàm nhoHonM và  
MsoNgTo để in ln lượt các snguyên tlên màn hình.  
Bài t p 48:  
Chương trình tính lương ca nhân viên  
Viết hàm nhp htên, quê quán, thâm niên công tác ca mt nhân viên.  
Viết hàm tính lương da vào thâm niên công tác  
Viết hàm xut htên, quê quán, thâm niên công tác và lương ca nhân viên.  
Viết chương trình nhp thông tin ca nhân viên, tính lương và xut thông tin ca  
nhân viên (kclương) ra màn hình bng cách sdng 3 hàm trên.  
Bài t p 49:  
Viết hàm in ra phn tthn ca dãy Fn sau: F = 1, F2 = 2, Fn = 5Fn1 + 3Fn2  
(
n 3  
)
1
int Fn(int n)//n >= 3  
{
int F1 = 1, F2 = 2, Temp;  
for(int i=3; i <= n; i++)  
Bài t  
p l  
p trình C++  
11/18  
GV: Lương Trn Hy Hiến  
{
}
Temp = F1;  
F1 = F2;  
F2 = 5 * F1 + 3 * Temp;  
return F2;  
}
Bài t  
p 50:  
Viết hàm tính giá trị đa thc bc n: F(x) = an xn + an1xn1 +....+ a1x + a0 , hàm có 3 tham slà  
mng sthc các hsai, giá trn, x. (Không được sdng hàm lũy tha sn có)  
double tinhGiaTriDT(double a[100], int n, double x)  
{
double kq = 0;  
for(int i = 0; i <= n; i++)  
{
kq = kq * x + a[n-i];  
}
return kq;  
}
Bài t p 51:  
Viết các hàm sau:  
Hàm kim tra 3 sthc có phi là 3 cnh ca tam giác hay không?  
bool isTriangle(double a, double b, double c)  
Hàm tính din tích tam giác khi bit độ dài 3 cnh:  
double area(double a, double b, double c)  
Sau đó sdng 3 hàm này vào các công vic sau:  
Nhp tbàn phím 3 sthc.  
Kim tra 3 sthc đó có phi là độ dài ca 3 cnh tam giác hay không? Nếu có  
thi in ra din tích, chu vi ca tam giác ra màn hình, nếu không xut thông báo  
Đây không phi là 3 cnh ca tam giác”.  
Bài t p 52:  
Vi  
ết  
định ngh  
ĩa hàm v  
tam giác Pascal có chi  
Ví d h= 4:  
u cao h.  
1
1 1  
1 2 1  
1 3 3 1  
Vi  
ết hàm main cho nh  
p vào 1 s  
nguyên dương, th  
c hi  
n g i hàm in ra màn hình tam giác  
Pascal có chi  
u cao tương ng.  
CHƯƠNG 4. Mng  
4.1.  
Mng 1 chiu  
Bài tp 53:  
Viết chương trình: (dng hàm)  
Nhp vào mt mng (n phn t, n nhp tbàn phím)  
Bài t  
p l  
p trình C++ 12/18  
GV: Lương Trn Hy Hiến  
Khi to mng ngu nhiên  
Xut mng đó ra màn hình  
Tìm phn tln nht, nhnht ca mng  
Tìm và in ra phn tâm đầu tiên tn cùng bng 6  
Tìm và in ra vtrí phn tdương nhnht  
Tính tng ca mng  
Tính trung bình cng ca mng  
Tìm kiếm mt phn tx cho trước (x nhp tbàn phím)  
Sp xếp mng theo thttăng dn, gim dn  
Xut dãy đảo ngược ca dãy ban đầu  
Thêm mt phn tx vào vtrí k (x, k nhp tbàn phím)  
Hy mt phn tử ở vtrí thk  
Đếm sphn tdương và in ra tng các phn tdương ca mng  
Kim tra mng có đối xng hay không?  
Kim tra mng có sp thttăng hay không?  
Bài tp 54:  
Cho mng mt chiu các sthc hãy tìm đon [a,b] sao cho đon này cha tt ccác giá trị  
trong mng (a,b: snguyên).  
4.2.  
Mng 2 chiu  
Bài t p 55:  
Viết chương trình:  
Nhp vào mng 2 chiu (kích thước m,n: nhp tbàn phím)  
Xut mng 2 chiu  
Tìm phn tMin, Max  
Sp xếp theo thtzigzag  
Sp xếp theo thttrn c xoáy vào trong  
Thêm mt dòng v vào ma trn cui ma trn  
Thêm mt dòng v vào ma trn dòng thk  
Xóa dòng thk khi ma trn  
Tìm vtrí ca phn tva là phn tln nht trên dòng ca nó đồng thi nhỏ  
nht trên ct ca nó.  
Tính tng, tích 2 ma trn  
Tính tng theo mt điu kin nào đó.  
Đếm slượng các phn tdương nm ma trn tam giác trên.  
Tính trung bình cng trên mt ct trong ma trn các sthc.  
Tính tng các phn tnm trên biên ca ma trn.  
Đếm slượng phn t"yên nga" ca ma trn, biết phn tyên nga là phn tử  
ln nht trên dòng và nhnht trên ct ti vtrí đang xét.  
Đếm slượng phn t"hoàng hu" ca ma trn, biết phn thoàng hu là phn  
tln nht trên dòng, trên ct và hai đường chéo đi qua nó.  
Bài t  
p l  
p trình C++  
13/18  
GV: Lương Trn Hy Hiến  
CHƯƠNG 5. Kiu dliu có cu trúc  
Bài t p 56:  
Chương trình thao tác trên phân s:  
Viết hàm nhp vào mt phân s.  
Viết hàm xut mt phân s.  
Viết hàm cng (tr, nhân, chia) hai phân s, kết qutrvmt phân slà tng  
(hiu, tích, thương) ca hai phân số đó.  
Viết hàm kim tra phân slà dương hay âm? Trv: 1: dương, -1: âm.  
Viết hàm so sánh 2 phân s(hàm trvmt trong 3 giá tr: -1, 0, 1).  
Viết hàm qui đồng mu sca hai phân s.  
Sdng các hàm trên viết mt chương trình thao tác trên các phân s.  
Bài t p 57:  
Hãy khai báo kiu dliu biu din hn strong toán hc và định nghĩa hàm nhp, xut  
cho kiu dliu này.  
Viết hàm rút gn hn s.  
Viết hàm tính tng, hiu, tích, thương 2 hn s.  
Bài t p 58:  
Hãy khai báo kiu dliu biu din đa thc mt biến trong toán hc và định nghĩa hàm  
nhp, xut cho kiu dliu này.  
Hãy nhp vào đa thc và giá trbiến, tính và in ra kết quca đa thc đó.  
(*)Tính tng/hiu 2 đa thc.  
(*)Tính tích/thương 2 đa thc.  
(*)Tính đạo hàm cp k = 1 ca đa thc.  
(*)Tính đa thc dư ca phép chia đa thc thnht cho đa thc thhai.  
Bài t p 59:  
Viết chương trình nhp vào ta độ tâm và bán kính ca mt đường tròn trong mt phng  
Oxy. Tính din tích và chu vi ca nó và in ra kết qulên màn hình. (HD: Định nghĩa cu  
trúc DIEM, DUONGTRON; viết hàm Nhap(), Xuat(), TinhDienTich(), TinhChuVi()).  
Bài t p 60:  
Viết chương trình nhp vào ta độ 3 đỉnh ca mt tam giác trong mt phng Oxy. Tính  
din tích, chu vi và ta độ trng tâm tam giác và in ra kết qulên màn hình. (HD: Định  
nghĩa cu trúc DIEM, TAMGIAC; viết hàm Nhap(), Xuat(), TinhDienTich(), TinhChuVi(),  
TimTrongTam()). Cho biết dng ca tam giác?  
Bài t p 61:  
Định nghĩa cu trúc dliu sphc. Hãy viết các hàm nhp/xut, tính tng, hiu, tích,  
thương, lũy tha trên sphc.  
Bài t p 62: (*)  
Xét chương trình dò vé s.  
Kết qudò sbao gm 8 gii. Mi gii là mt con s. Gii 7 là mt scó 2 chs.  
Gii 6 là mt scó 3 chs. Gii 5 là mt scó 4 chs. Gii 4, 3, 2, 1, đặc bit mi gii  
là mt scó 5 chs.  
Bài t  
p l  
p trình C++  
14/18  
GV: Lương Trn Hy Hiến  
Mt tvé số được đặc trưng bi mt con scó 6 chs.  
Mt tvé số được gi là trúng gii k có m chsnếu m chscui ca vé sging  
hoàn toàn vi số đại din cho gii k.  
Viết chương trình nhp vào kết qudò s, và mt tvé s. Xut ra màn hình thông  
báo kết qudò s: không trúng hoc trúng gii my.  
Lưu ý: không xét ngày phát hành, tnh thành phát hành, loi vé, gii khuyến khích  
và mt gii có thcó nhiu ln quay (nhiu s).  
CHƯƠNG 6. Các kthut nâng cao  
6.1.  
Con trỏ  
Bài tp 63:  
Vi  
ết hàm hoán v  
trong  
đ
ó tham s  
truy  
n vào là con tr .  
Bài tp 64:  
Minh h  
a các thao tác trên danh sách liên k  
Kh i t o danh sách,  
Thêm 01 ph n t vào danh sách,  
Xóa 01 ph n t x ra kh i danh sách,  
m ph x trên danh sách theo các tiêu chí sau:  
t s  
n nh  
bé nh  
nguyên t  
chính phương đầu tiên,  
ế
t đơn:  
ở ạ  
Tìm ki  
ế
n t  
o
o
o
o
o
o
o
M
x cho trước,  
t,  
t,  
S
S
S
S
S
S
l
du tiên,  
nguyên t  
nguyên t  
l
n nh  
t,  
bé nh  
t.  
S
p x p trên danh sách.  
ế
6.2.  
Kthut đệ quy  
Bài tp 65:  
Cài đặt bài toán tìm ph  
n t  
thn trong dãy Fibonaci theo 2 cách: Đệ quy và không để quy.  
Bài tp 66:  
Cài đặt bài toán tháp Hà N  
i. Nh  
p vào số đĩa, in ra k  
ết qu  
chuyn  
đĩa t  
ng bước v  
i s  
ct là 3.  
Bài t p 67:  
Cài đặt hàm tính l  
ũ
y th  
a nhanh. Ví d : x14 = (x7)2, x11 = x6.x5=x.(x5)2,...  
Bài t p 68:  
Nh  
k b  
p vào s  
ng cách d  
nguyên dương n và s  
nguyên k (0 <= k <= n) và in ra giá tr  
C(n,k) c  
a t  
h
p n l  
y
2
a vào công th c: C(n, k) = C(n-1, k) + C(n-1, k-1)  
Bài t p 69:  
Bài toán 8 con h  
u: S  
p x  
ếp n = 8 con h  
u trên bàn c  
vua 8 x 8 (n x n) sao cho không có b  
t k  
con h u nào có thể ăn l  
n nhau theo lu  
t cờ  
vua.  
Bài t  
p l  
p trình C++  
15/18  
GV: Lương Trn Hy Hiến  
6.3.  
Làm vic vi tp tin  
Bài t  
p 70:  
M
i
đa th  
c a0 + a1x + a2x2 + … + anxn được l  
ưu trong t  
p tin v  
ăn b  
n theo quy ước sau ây:  
đ
Vi  
nh  
Dòng 1: L  
ư
u giá tr  
u l n lượt các h  
p vào tên m  
x, chương trình tính và in ra giá tr  
c k t thúc khi người dùng nh  
n
Dòng 2: L  
ư
s
: a0, a1, a2, ..., an  
ế
t chương trình nh  
p vào giá tr  
t t p tin v n b n l  
ă
ư
u
đa th  
c, sau  
đ
ó cho phép ngườ  
i
ca  
đa th  
c t i x. Quá trình nh  
p x và  
tính giá trị đa th  
ế
p giá tr  
x = 0.  
Bài t p 71:  
Nh  
p ma tr  
n n x n t  
Dòng đầu tiên ch  
i dòng k tiếp ch  
i dung trong t p tin v  
t
p tin v  
a ch  
a n s  
n b  
ă
n b  
n INPUT.TXT có n  
i dung nh  
ư
sau:  
s n  
M
ế
t
ương  
ng v  
i m  
i dòng c  
a ma tr  
n.  
Ví d  
: N  
ă
n INPUT.TXT:  
3
45  
2
1
1
66  
2
3
67  
3
Th  
c hi n:  
Ki  
Vi  
m tra h  
p l  
m tra t  
c
a d  
li  
u.  
ết hàm ki  
ng các ph  
n t  
trên t  
ng hàng và c  
t có b ng nhau không?  
Bài t p 72:  
Vi  
ế
t chương trình đọc vào m  
t file input.txt” và th  
c hi  
ch  
dòng th  
chia h t cho 2 tìm th  
n các yêu c  
dòng ó có ph  
a mãn.  
u sau:  
Đọc t  
ương không? In ra màn hình t  
Ghi ra file “output.txt” t t c  
ng dòng, ki  
m tra xem chu  
i ký t  
a
đ
i là m  
t s  
nguyên  
txt”.  
d
ng s  
các s  
ế
y trong file “input  
.
Bài tp 73:  
Cho bi  
ết thông tin cố định v  
l
ương ca m  
i cán b  
trong trường  
Đ
HSP TpHCM g  
m nh ng thông  
tin sau:  
H
và tên  
Mã s nhân viên  
c lương  
Bậ  
Yêu c u:  
Xây d  
ng thông tin trong t  
c lương và s ngày công (nh  
ngày công) / 26. Ghi l i các k t qu  
ng t  
p tin LUONG.DAT để  
p tin LUONG.DAT để tính lương cho t  
p vào t bàn phím). Bi t r ng lương = (b  
thu được vào t p tin để u tr  
l
ư
u tr  
thông tin cố định v  
l
ương c  
ng nhân viên khi bi  
c lương * s  
a trường.  
S
d
ết  
b
ế
ế
l
ư
.  
CHƯƠNG 7. Bài tp Project  
7.1.  
Chương trình dò từ đin  
Mô t :  
Ví d  
giao di  
n ho  
t  
động c  
a chương trình như sau:  
Bài t  
p l  
p trình C++  
16/18  
GV: Lương Trn Hy Hiến  
Tra tu: a  
Nghia: Mot  
Cac tu tiep theo:  
an  
and  
angel  
angle  
apace  
apache  
apart  
ape  
are  
area  
Tra tu: ap  
Nghia: Khong tim thay  
Cac tu tiep theo:  
apace  
apache  
apart  
ape  
Tra tu: appp  
Nghia: Khong tim thay  
Cac tu tiep theo:  
Tra tu: ^Z  
Ket thuc chuong trinh. Hen gap lai lan sau!  
H
ướng d n:  
-
S
nh  
d
ng 1 vector ch  
p theo qui ước: t  
t thúc file (^Z)  
Tìm v trí c a t  
t ngh  
t các từ ở các v  
p l i vi c tra t  
a danh sách t  
trên 1 dòng, ngh  
, và 1 vector ch  
a danh sách ngh  
ĩ
a tương  
ng. D  
li  
u
ĩa trên 1 dòng, … và ti p t c nh  
ế
ư
thế, k  
ết thúc b  
ng kí t  
k
ế
-
-
-
-
cầ  
n tra trong vector t  
trí tương  
trí ti  
. N  
.  
Xu  
Xu  
Cho l  
ĩ
a
v
ng trong vector ngh  
ĩa.  
ếp theo mà có các kí t  
b
t  
đầu gi  
ng t  
cn tra.  
ếu nh  
p vào kí t  
k
ết thúc file thì k  
ết thúc chương trình.  
GỢ  
I Ý TỪ ĐIN  
1. Vi  
ết hàm nh  
p 1 vector các t  
.  
2. Vi  
ết hàm ki  
m tra xem 1 t  
có là b  
t  
đầu c  
a 1 t khác không:  
bool MayBe(string a, string b);  
Ví d : MayBe(“apart”, “apartment”); // tr  
MayBe(“apart”, “aple”); // tr false  
3. Vi t 2 hàm tìm v trí  
vtrue  
về  
ế
typedef vector<string>::size_type vec_sz;  
vec_sz Find(const vector<string>& wordlist, string word);  
vec_sz FindR(const vector<string>& wordlist, string word);  
Hàm Find tr  
v
v
trí c  
a t  
x
đầu tiên trong vector wordlist mà MayBe(word, x) cho giá tr true. Hàm  
tr -1 n u không tìm th  
v
ế
y.  
Bài t  
p l  
p trình C++  
17/18  
GV: Lương Trn Hy Hiến  
Hàm FindR tr  
v
ế
v
trí c  
u không tìm th  
t chương trình nh p vào 1 t  
p vào kí t t thúc file thì k  
a t  
x cu  
i cùng trong vector wordlist mà MayBe(word, x) cho giá tr true.  
Hàm tr  
v
-1 n  
y.  
4. Vi  
ế
và xu  
t t  
v
a nh  
p ra màn hình, và ti  
ếp t  
c nh  
ư
th  
ế
. N u  
ế
nh  
k
ế
ết thúc chương trình.  
5. S  
d
ng các ph  
n trên để vi  
ế
t chương trình từ đi n.  
7.2.  
Chương trình sp xếp dòng  
Mô t :  
Vi  
ết chương trình s  
p x  
ếp các dòng ở đầu vào, lo  
i b  
các dòng gi  
ng nhau và  
đ
ánh s các dòng, sau  
đó in ra màn hình. V  
i ví dụ đầu vào là:  
hey Jude!  
don’t make it bad  
take a sad song  
and make it beter  
take a sad song  
and make it beter  
take a sad song  
and make it beter  
thì s in ra là:  
1 and make it beter  
2 don’t make it bad  
3 hey Jude!  
4 take a sad song  
S
S
ố ỏ đầu dòng ph  
i
được ghi th  
ng c  
t.  
a l i chương trình trên để đánh số ở cu  
i dòng nh  
ưng v  
n th  
ng c t.  
Bài t  
p l  
p trình C++  
18/18  
GV: Lương Trn Hy Hiến  
pdf 18 trang baolam 06/05/2022 7240
Bạn đang xem tài liệu "Bài tập Lập trình C++ - Lương Trần Hy Hiến", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_tap_lap_trinh_c_luong_tran_hy_hien.pdf