Download as pdf or txt
Download as pdf or txt
You are on page 1of 54

BI TP MINH HA MN NHP MN LP TRNH

I HC QUC GIA TPHCM


TRNG H KHOA HC T NHIN

KHOA CNG NGH THNG TIN

BI TP MINH HA
HC PHN NHP MN LP TRNH

Mc lc:

Tun 3. CC KHI NIM C BN V K THUT LP TRNH ............................................. 2


Tun 4. CC CU TRC LP TRNH - CU TRC CHN ...................................................... 6
Tun 5. VNG LP WHILE ......................................................................................................... 11
Tun 6. VNG LP FOR .............................................................................................................. 15
Tun 7. CHNG TRNH CON ................................................................................................... 19
Tun 8. CHNG TRNH CON (tt) ............................................................................................. 21
Tun 9. KIU MNG MT CHIU V MT S K THUT C BN ................................. 22
Tun 10. TM KIM V SP XP TRN MNG MT CHIU ............................................... 27
Tun 11. MNG 2 CHIU............................................................................................................. 32
Tun 12. 13. KIU K T V KIU CHUI ............................................................................. 39
Tun 13. QUY .......................................................................................................................... 49

Trang 1
BI TP MINH HA MN NHP MN LP TRNH

Tun 3. CC KHI NIM C BN V K THUT LP TRNH

CC BI TP C BN

Bi tp 1:
Vit chng trnh in ra cc dng ch sau y:

1. In C, lowercase letters are significant.


2. main is where program execution begins.
3. Opening and closing braces enclose program statements in a routine.
4. All program statements must be terminated by a semicolon.

#include <stdio.h>
int main (void)
{
printf ("\t1. In C, lowercase letters are significant.\n");
printf ("\t2. main is where program execution begins.\n");
printf ("\t3. Opening and closing braces enclose program statements in a
routine.\n");
printf ("\t4. All program statements must be terminated by a
semicolon.\n");
return 0;
}

Ch :
1. Ngn ng C phn bit ch hoa v ch thng.
2. Mi chng trnh lun c mt v ch mt hm main. Hm main s l ni u tin chng trnh
thc hin.
3. Mi khi c m ngoc th phi c ng ngoc. vd: {} v ()
4. Cc dng lnh phi kt thc bng du chm phy ;

Bi tp 2:
Vit chng trnh tnh ra kt qu ca php tr 15 cho 87, v xut kt qu ra mn hnh.

#include <stdio.h>
int main (void)
{
int x = 15;
int y = 87;
int z = x y;
printf ("%d - %d = %d", x, y, z);
return 0;
}

Bi tp 3:
Vit on chng trnh sau y m khng c cc k t bi en, sau bin dch chng trnh (F7) v
xem thng bo li. Ghi ch li cc li m chng trnh thng bo. Sau , sa li chng trnh cho
ng v bin dch li.
Ghi ch: thng bo li s hin ra ca s pha di ca Visual C++. Nhn F4 ln lt nhy n cc li.

#include <stdio.h>
#define TWENTYFIVE 25;
int main ()
{

Trang 2
BI TP MINH HA MN NHP MN LP TRNH

int sum;
/* COMPUTE RESULT */
sum = TWENTYFIVE + 37 19;
/* DISPLAY RESULTS */
printf ("The answer is %i\n", sum);
return 0;
}

Bi tp 4:
Vit on chng trnh sau y v d on kt qu ca chng trnh. Sau bin dch v chy chng
trnh xem kt qu chnh xc. Nu kt qu khc vi mnh d on th phn tch xem ti sao li nh vy.

#include <stdio.h>
int main ()
{
int answer, result;
answer = 100;
result = answer - 10;
printf ("The result is %i\n", result + 5);
return 0;
}

The result is 95

Bi tp 5:
D on kt qu ca chng trnh sau v gii thch ti sao. Chy chng trnh v so snh kt qu tht s
vi kt qu d on.

#include <stdio.h>
#define PRINT(format,x) printf ("x = %"#format"\n", x)
int main (void)
{
int integer = 5;
char character = '5';
PRINT(d, character); PRINT(d, integer);
PRINT(c, character); PRINT(c, integer=53);
return 0;
}

x = 53
x = 5
x = 5
x = 5

Bi tp 6:
D on kt qu ca chng trnh sau v gii thch ti sao. Chy chng trnh v so snh kt qu tht s
vi kt qu d on.

#include <stdio.h>
#define PR(x) printf("x = %.8g\t", (double)x)
#define PRINT4(x1,x2,x3,x4) PR(x1); PR(x2); PR(x3); PR(x4)
int main (void)
{
double d;
float f;
long l;
int i;

Trang 3
BI TP MINH HA MN NHP MN LP TRNH

i = l = f = d = 100/3; PRINT4(i, l, f, d);


i = l = f = d = 100/3. ; PRINT4(i, l, f, d);
return 0;
}

x = 33 x = 33 x = 33 x = 33 x = 33 x = 33 x = 33 x = 33.333332 x = 33.333333

Bi tp 7:
Vit chng trnh tnh gi tr biu thc sau v gii thch kt qu.
3x3 - 5x2 + 6
Vi x = 2.55.

#include <stdio.h>
int main (void)
{
float x = 2.55;
float y = 3*x*x*x - 5*x*x + 6;
printf ("%f", y);
return 0;
}

23.231623

CC BI TP THM C KH TRUNG BNH

1. Vit chng trnh in ln mn hnh nh sau:


*************************
* THAO CHUONG BANG *
* NGON NGU C *
*************************

2. Vit chng trnh nhp vo nm sinh, in ra tui.


V d nhp 1988 in ra:
Ban sinh nam 1988 vay ban 19 tuoi.

3. Vit chng trnh thc hin cc yu cu sau (khng dng hm chuyn i):
a. Nhp vo mt k t v in ra m ASCII tng ng vi k t .
b. Nhp vo mt s nguyn (1 255) v in ra k t c m ASCII tng ng.

4. Nhp vo bn knh ca hnh trn, tnh v in ra chu vi, din tch ca hnh trn .

5. Vit chng trnh nhp vo 2 s nguyn. Xut ra min, max.


V d:
Nhp vo 5 v 7
Xut ra: min =5, max = 7

6. Tm hiu ngha cc thng bo li thng gp.

7. Tm hiu b th vin tr gip MSDN.

Trang 4
BI TP MINH HA MN NHP MN LP TRNH

CC BI TP THM C KH CAO

1. Nhp vo bn knh y R v chiu cao h ca hnh tr trn, tnh din tch y, din tch xung quanh
v th tch ca hnh tr trn theo cng thc (cc s liu l s thc, gi tr PI c C nh ngha
sn bng hng s M_PI):
a. S y R 2
b. S xungquanh 2Rh
c. V S y h

2. Nhp vo s thc x, tnh v in ra cc gi tr y1, y2, ly 2 s l:


a. y1 4( x 2 10 x x 3x 1)
sin( x 2 ) x 2 1
b. y2

e 2 x cos x
4

3. Nhp s tin nguyn N ng, i ra xem c bao nhiu t 10 ng, 5 ng, 2 ng v 1 ng.
V d:
N = 543 = 54 t 10 + 0 t 5 + 1 t 2 + 1 t 1

4. Nhp vo s nguyn c 3 ch s, tnh tng 3 ch s .


V d:
S 543 c tng 3 ch s l: 5 + 4 + 3 = 12

5. Vit chng trnh nhp gi, pht, giy v thc hin kim tra tnh hp l ca d liu nhp vo.

6. Vit chng trnh nhp 2 gi (gi, pht, giy) v thc hin tnh '+' v '-' ca 2 gi ny.

Trang 5
BI TP MINH HA MN NHP MN LP TRNH

Tun 4. CC CU TRC LP TRNH - CU TRC CHN

CC BI TP C BN

Bi tp 1
Vit chng trnh nhp vo mt s x, nu x = 100 th xut ra thng bo Gia tri cua x la 100,
ngc li, xut ra thng bo Gia tri ca x khac 100.

#include "stdafx.h"
#include <iostream.h>
int main(int argc, char* argv[])
{
int x;
cout << "Nhap x = ";
cin >> x;
if(x == 100)
cout << "\nGia tri cua x la 100 ";
if(x != 100)
cout << "\nGia tri cua x khac 100 ";
return 0;
}

Bi tp 2
Gii phng trnh bc 1: ax + b = 0

#include "stdafx.h"
#include <iostream.h>
int main(int argc, char* argv[])
{
float x, a, b;
cout << "Nhap a = ";
cin >> a;
cout << "Nhap b = ";
cin >> b;
if(a == 0)
{
if(b == 0)
cout << "\nPhuong trinh co vo so nghiem. " << endl;
else
cout << "\nPhuong trinh vo nghiem. " << endl;
}
else
{
cout << "\nPhuong trinh co nghiem duy nhat: x = " << -b/a << endl;
}
return 0;
}

Bi tp 3
Nhp vo 1 thng, nm, cho bit thng c bao nhiu ngy.

// Thang co 31 ngay: 1, 3, 5, 7, 8, 10, 12


// Thang co 30 ngay: 4, 6, 9, 11
// Thang 2 co 28 hoac 29 ngay

Trang 6
BI TP MINH HA MN NHP MN LP TRNH

#include <stdio.h>
#include <conio.h>
void main()
{
//khai bao bien
int ngay, thang, nam;
int nhuan;
//nhap du lieu
printf("Nhap vao mot thang: ");
scanf("%d",&thang);
printf("Nhap vao mot nam: ");
scanf("%d",&nam);
//kiem tra nam nhuan
nhuan = 0;
if ((nam%400 == 0) || (nam%4 == 0 && nam%100 != 0))
nhuan = 1;
ngay = 0;
switch (thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
ngay = 31;
break;
case 4:
case 6:
case 9:
case 11:
ngay = 30;
break;
case 2:
if (nhuan == 1) ngay = 29;
else ngay = 28;
break;
}
printf("So ngay cua thang %d cua nam %d la: %d",thang, nam, ngay);
getch();
}

Trang 7
BI TP MINH HA MN NHP MN LP TRNH

CC BI TP THM C KH TRUNG BNH

1. Gii phng trnh bc 2: ax2 + bx + c = 0

2. Nhp vo 3 s a, b, c. In ra mn hnh 3 s ny theo th t tng dn.

3. Nhp vo 4 s a, b, c, d.
a. In ra s ln nht v s nh nht.
b. In ra 2 s khng phi s ln nht v s nh nht.

4. Nhp vo di 3 cnh a, b, c ca 1 tam gic.


a. Cho bit 3 cnh c lp thnh mt tam gic khng ?
b. Nu c, cho bit loi tam gic ny (thng, cn, vung, u, vung cn).

5. Nhp 1 ch ci, nu l ch thng th i thnh ch hoa, ngc li i thnh ch thng.

6. Tnh tin i taxi t s km c nhp vo, bit:


1 km u gi 15000
T km th 2 n km th 5 gi 13500
T km th 6 tr i gi 11000
Nu i hn 120km s c gim 10% trn tng s tin.

7. Xp loi cc hc sinh trong lp. Nhp vo h tn, im ton, l, ha ca cc hc sinh. Tnh im


trung bnh 3 mn v phn loi nh sau:
sut xc: tb >=9.0
gii: 9.0 > tb >= 8.0
kh: 8.0 > tb >= 6.5
trung bnh: 6.5 > tb >= 5.0
yu: 5.0 > tb >= 3.0
km: 3.5 > tb

CC BI TP THM C KH CAO

1. Vit chng trnh nhp vo ngy, thng, nm. Hy cho bit ngy k tip v ngy trc ca ngy
. (c code tham kho bn di)
#include <stdio.h>
#include <conio.h>
void main()
{
//khai bao bien
int ngay, thang, nam;
int ngaytruoc, ngayke;
int nhuan;
//nhap du lieu
printf("Nhap vao mot ngay: ");
scanf("%d",&ngay);
printf("Nhap vao mot thang: ");
scanf("%d",&thang);
printf("Nhap vao mot nam: ");
scanf("%d",&nam);
//kiem tra nam nhuan
nhuan = 0;
if ((nam%400 == 0) || (nam%4 == 0 && nam%100 != 0))
nhuan = 1;

Trang 8
BI TP MINH HA MN NHP MN LP TRNH

ngaytruoc = ngay-1;
ngayke = ngay+1;
switch (thang)
{
case 1:
case 5:
case 7:
case 10:
case 12:
case 4:
case 6:
case 9:
case 11:
if (ngay == 30)
{
ngaytruoc = 29;
ngayke = 1;
}
else
{
ngaytruoc = ngay-1;
ngayke = ngay+1;
}
break;
case 2:
if (nhuan == 1)
{
if (ngay == 29)
{
ngaytruoc = 28;
ngayke = 1;
}
else if (ngay == 1)
{
ngaytruoc = 31;
ngayke = 2;
}
}
else
if (ngay == 28)
{
ngaytruoc = 27;
ngayke = 1;
}
else if (ngay == 1)
{
ngaytruoc = 31;
ngayke = 2;
}
break;
case 3:
if (ngay == 31)
{
ngaytruoc = 30;
ngayke = 1;
}
else if (ngay == 1)
{
if (nhuan == 1)
{
ngaytruoc = 29;

Trang 9
BI TP MINH HA MN NHP MN LP TRNH

ngayke = 2;
}
else
{
ngaytruoc = 28;
ngayke = 2;
}
}
break;
case 8:
if (ngay == 31)
{
ngaytruoc = 30;
ngayke = 1;
}
else if (ngay == 1)
{
ngaytruoc = 31;
ngayke = 2;
}
break;
}
printf("Ngay truoc cua ngay %d cua thang %d cua nam %d la: %d",ngay,
thang, nam, ngaytruoc);
printf("\n");
printf("Ngay ke tiep cua ngay %d cua thang %d cua nam %d la: %d",ngay,
thang, nam, ngayke);
getch();
}

Trang 10
BI TP MINH HA MN NHP MN LP TRNH

Tun 5. VNG LP WHILE

CC BI TP C BN

Bi 1: Hy tnh tng s = 1 + 2 + 3 ..... + n

Cch 1:

#include <stdio.h>
void main()
{
int n;
long s = 0;
printf("nhap vao n ");
scanf("%d", &n);
while (i <= n)
{
s += i;
i++;
}
printf("ket qua la: s= %ld", s);
}

Bi 2: Tnh tng cc s chia ht cho 4 v khng chia ht cho 5 nh hn n

#include <stdio.h>
void main()
{
int n;
long s = 0;
printf("nhap vao n ");
scanf("%d", &n);
for (int i = 1;i <=n;i++)
if(!(i%4) && i%5)
s += i;
printf("ket qua la: s= %ld", s);
}

Bi 3: Tm s nguyn t ln nht nh hn n, 0<n<50. (s nguyn t l s >=2 v ch c 2 c s l 1 v


chnh n)

#include <stdio.h>
void main()
{
int k,n;
do
{
printf("nhap so nguyen n: ");
scanf("%d",&n);
} while (n<=0 || n>=50);
k=n-1;
while (k>1)
{
int t=2;
while (k%t!=0)
t++;
if(t==k)

Trang 11
BI TP MINH HA MN NHP MN LP TRNH

{
printf("so nguyen to lon nhat nho hon %d la %d\n", n, k);
break;
}
k--;
}
if(k<=1)
printf("khong co so nguyen to nao nho hon %d",n);
}

Bi 4: Nhp vo 1 s nguyn dng, xut ra s ngc li. VD: nhp 123, xut ra 321

#include <stdio.h>
void main()
{
int n;
do
{
printf("nhap so nguyen duong n: ");
scanf("%d",&n);
} while (n<=0);
int don_vi = n%10;
while (don_vi!=0)
{
printf("%5d", don_vi);
n = n/10;
don_vi = n%10;
}
}

CC BI TP THM C KH TRUNG BNH

1. Tnh S = 13 +23 + 33 + + N3
2. Tnh S = 12 +22 + 32 + + N2
3. Tnh S = 1 + 1/2 + 1/3 + . + 1/n
4. Tnh S = 1/(1x2) + 1/(2x3) + 1/(3x4) + .. + 1/(n x (n+1))
5. Tnh S = 1 + 1.2 + 1.2.3 + . + 1.2.3.n
6. Tnh S = 1 + x + x2 + .. + xn
7. Tnh S = 1! + 2! + 3! +.. + n!
8. Tm s nguyn dng n nh nht sao cho 1 + 2 + 3 + + n > 1000
9. Tm v in ln mn hnh tt c cc s nguyn trong phm vi t 10 n 99 sao cho tch ca 2 ch s
bng 2 ln tng ca 2 ch s .
10. Tm cc c s chung nh nht ca 2 s nguyn dng
11. Kim tra 1 s c phi l s nguyn t hay khng.
12. In ra tt c cc s nguyn t nh hn s n c nhp vo t bn phm.

Trang 12
BI TP MINH HA MN NHP MN LP TRNH

CC BI TP THM C KH CAO

1. Kim tra xem cc ch s ca s nguyn dng n c gim dn/ tng dn t tri sang phi khng.
2. Kim tra xem 1 s nguyn dng n c phi l s i xng/ s ton s l/ s ton s chn khng
3. Tm ch s ln nht, nh nht ca s nguyn dng n.

4. S 2 * N 2 * ( N 1) ... 4 2

1 1 1 1
5. S
0! 1! 2! n!
x3 x5 x 2 n 1
6. S x ...(1) n vi < x <
3! 5! (2n 1)!

x2 x4 n x
2n
7. S 1 ...(1) vi < x <
2! 4! (2n)!

1
8. 1 x x 2 x 3 x n vi 1 < x < 1
1 x n 0

1 1 1 6
(1) n 2 n
9. cos(x) 1 x 2 x 4 x x vi < x <
2 24 720 n 0 ( 2n)!

1 1 1 1 (1) n 2 n 1
10. arccotan( x) x x3 x5 x7 x9 x
2 3 5 7 9 2 n 0 2n 1
1 1 1
( 1) n 1 2 n 1
11. arctan( x) x x 3 x 5 x 7 x vi 1 < x < 1
3 5 7 n 1 2 n 1


1 2 1 3 1 4 1
12. e x 1 x x x x x n vi < x <
2 6 24 n 0 n!

1 2 1 3 1 4
( 1) n 1 n
13. ln(1 x) x x x x x vi < x <
2 3 4 n 1 n

1 x 2 3 2 5 2 7
2
14. ln 2x x x x x 2 n1 vi < x <
1 x 3 5 7 n 1 2n 1

1 1 5 1 7
(1) n 2 n1
15. sin( x) x x 3 x x x vi < x <
6 120 5040 n 0 ( 2n 1)!

16. Nhp s nguyn dng n. (i) Kim tra c phi l s nguyn t; (ii) Tm cc tha s nguyn
t ca n; (iii) In cc ch s t phi qua tri, (iv) In cc ch s t tri qua phi (ch s
0); (v) In ra tt c cc cp s nguyn dng a v b (a b) sao cho: a 2 b 2 n . (vi) Nhp
s nguyn k. In ra k s thp phn ng sau du thp phn (ch : 10k c th trn s).

Trang 13
BI TP MINH HA MN NHP MN LP TRNH

17. Nhp 2 s nguyn dng a, b khc khng. (i) Tm USCLN(a, b); (ii) Tm hai s nguyn x
v y sao cho: USCLN(a, b) = a * x + b * y.
18. Nhp s nguyn dng n. Cho bit l (i) s i xng, (ii) s gn i xng, (iii) cc ch
s xp tng dn hay gim dn khng? (iv) tng cc ch s cho n khi nh hn 10, (v) ch
s ln v nh nht.
19. Xc nh phn t th k ca dy Fibonacci: f 0 0, f1 1, f k f k 1 f k 2 , vi k 2.
20. In ra bnh phng ca n s nguyn dng u tin, nhng (i) ch d ng php + v php
; (ii) Ch d ng php +.

Trang 14
BI TP MINH HA MN NHP MN LP TRNH

Tun 6. VNG LP FOR

CC BI TP C BN

Bi 1: Vit chng trnh tnh tng n s t nhin u tin


S = 1 + 2 + 3 + ... + n

#include "stdafx.h"
#include stdio.h
void main()
{
int n;
long S = 0;
printf(" Nhap gia tri n : ");
scanf("%d",&n);
if ( n <= 0)
{
printf("Gia tri n khong hop le.\n");
return;
}
for (int i=1;i<=n;i++)
S = S + i;
printf("Tong n so tu nhien dau tien la : S = %ld \n",S);
}

Bi 2: Vit chng trnh cho php ngi d ng nhp mt s nguyn N > 1. Cho bit N c phi l s
nguyn t hay khng ?

Gi :
kim tra N c phi l s nguyn t hay khng th ta kim tra xem N c c s trong on [2, n-1]
khng ? Nu c c s trong on th N khng phi l s nguyn t.

#include "stdafx.h"
#include stdio.h
void main()
{
int n,i;
printf("Nhap gia tri N :");
scanf("%d",&n);
if (n <= 1)
{
printf(" Gia tri N khong hop le.\n");
return;
}
for (i=2; i<=n -1; i++)
{
if ( n%i == 0)
{
printf("N khong phai la so nguyen to.\n");
return;
}
}
printf(" N la so nguyen to. \n");
}

Trang 15
BI TP MINH HA MN NHP MN LP TRNH

Bi 3: Vit chng trnh v mt hnh ch nht bng cc du * vi chiu di v chiu rng do ngi
d ng nhp vo.

#include "stdafx.h"
#include stdio.h
void main()
{
int m,n,i,j;
printf("Nhap chieu dai hinh chu nhat : m = ");
scanf("%d",&m);
printf("Nhap chieu rong hinh chu nhat : n = ");
scanf("%d",&n);
printf("\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
printf("*");
printf("\n");
}
}

Bi 4: Vit chng trnh o ngc mt dy s vi cc cch s dng vng lp For khc nhau.
Cch 1:

#include "stdafx.h"
#include stdio.h
int x[] = {1,2,3,4,5};
int n = sizeof(x)/sizeof(int);
void main()
{
int i,j;
int c;
for (i=0, j=n-1; i<j; ++i,--j)
{
c= x[i];
x[i] = x[j];
x[j] = c;
}
printf("\n Day ket qua la :\n");
for (i=0; i<n; i++)
printf(" %d", x[i]);
}

Cch 2:
#include "stdafx.h"
#include stdio.h
int x[] = {1,2,3,4,5};
int n = sizeof(x)/sizeof(int);
void main()
{
int i,j;
int c;
for (i=0, j=n-1; i<j; c=x[i], x[i]=x[j], x[j]=c, i++, j--)
{
// than FOR rong
}
printf("\n Day ket qua la :\n");
for (i = -1; ++i < n ;) // vang thanh phan thu 3
printf(" %d", x[i]);
}

Trang 16
BI TP MINH HA MN NHP MN LP TRNH

Cch 3:
#include "stdafx.h"
#include stdio.h
int x[] = {1,2,3,4,5};
int n = sizeof(x)/sizeof(int);
void main()
{
int i=0,j=n-1;
int c;
for ( ; ; ) // cau lenh FOR vang ca 3 thanh phan
{
c= x[i];
x[i] = x[j];
x[j] = c;
if (++i >= --j) break;
}
printf("\n Day ket qua la :\n");
for (i=0; i-n; ) // thay quan he i<n bang bieu thuc i-n
printf(" %d", x[i++]);
}

Cch 4:
#include "stdafx.h"
#include stdio.h
int x[] = {1,2,3,4,5};
int n = sizeof(x)/sizeof(int);
void main()
{
int i=0,j=n-1;
int c;
for ( ; c=x[i],x[i]=x[j],x[j]=c, ++i<--j; );

printf("\n Day ket qua la :\n");


for ( i=0 ; printf(" %d",x[i]), ++i-n ; );
}

Bi 5: Vit chng trnh tm c s chung ln nht (USCLN) ca hai s a v b, s dng vng lp FOR.

#include "stdafx.h"
#include stdio.h
void main()
{
int a,b;

printf("Nhap gia tri a : a =");


scanf("%d",&a);
printf("Nhap gia tri b : b =");
scanf("%d",&b);
for ( ; a != b ; )
{
if (a>b)
a = a-b;
else
b=b-a;
}
printf("\n Uoc so chung lon nhat cua hai so la : %d \n",a);
}

Trang 17
BI TP MINH HA MN NHP MN LP TRNH

CC BI TP THM C KH TRUNG BNH

1. Xut tt c cc k t t a n z, A n Z, 0 n 9
2. Xut ra bng m ASCII: gm 2 ct: k t v m ASCII, yu cu hin th thnh tng trang mt,
3. Tnh tng cc s nguyn t nh hn 1000
4. Vit chng trnh nhp vo 1 s nguyn , hy vit cch c s nguyn
5. Vit chng trnh in bng cu chng ra mn hnh
6. Cn c tng 20000 t 3 loi tin 10000, 20000, 50000. Hy cho bit tt c cc phng n .
7. Cc bi ton v hnh: tam gic, hnh ch nht, cy thng,
8. Lit k tt c cc c s ca s nguyn dng n. Cho bit c bao nhiu c s v tm tng ca tt
c cc s c s .
9. Tm BSCNN ca 2 s nguyn dng a, b.
10. Kim tra 1 s c phi l s nguyn t khng.
11. Tm ch s o ngc ca s nguyn dng n
12. Tm ch s ln nht/ nh nht ca s nguyn dng n
13. m s lng ch s, tnh tng cc ch s ca s nguyn dng n
14. m s lng ch s l/ chn ca s nguyn dng n.
15. Tnh dy Fibonacci:
F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2

CC BI TP THM C KH CAO
Lm li cc bi kh ca chng trc vi vng lp for

Trang 18
BI TP MINH HA MN NHP MN LP TRNH

Tun 7. CHNG TRNH CON


1. Vit hm xc nh s nh hn trong 2 s, sau s dng hm ny xc nh s nh hn
trong 3 s.
2. Vit hm tnh c s chung ln nht v bi s chung nh nht ca hai s nguyn dng a,b.
3. Vit hm tnh gi tr n! , vi n l s nguyn dng v n > 1.
n ! = 1 x 2 x ... x (n-1) x n
4. Vit hm tnh X n khng d ng quy.
n!
5. Vit chng trnh tnh hm t hp C ( n, k ) trong cn ci t hm tnh n!.
k!(n k )!
6. Vit hm tnh chu vi v din tch hnh ch nht khi bit di 2 cnh. Sau v hnh ch nht ra
mn hnh bng cc du *. Hm tnh chu vi, din tch v hm v hnh ch nht phi c lp nhau.
***************
* *
* *
* *
* *
***************
7. Vit chng trnh con xut ra tam gic Pascal nh sau :
1
11
121
1331
14641
8. Vit hm nhp vo thng bng s ri in ra tn thng bng ch ra mn hnh.
9. Vit hm kim tra mt ngy no c hp l hay khng, kim tra nm nhun.
10. Vit hm i ngy thng nm thnh th trong tun.
11. Vit hm nhn bit mt s nguyn dng c phi l s nguyn t hay khng.
12. Vit chng trnh in ra tt c cc s nguyn t nh hn s nguyn dng M cho trc ( s dng
hm kim tra s nguyn t ci t trn ).
13. Vit hm kim tra mt s nguyn dng c phi l s chnh phng hay khng. Xut tt c cc s
chnh phng trong khong A,B.

Trang 19
BI TP MINH HA MN NHP MN LP TRNH

14. Mt s t nhin c gi l s hon thin nu n bng tng tt c cc c s ca n, k c 1. Hy


vit hm kim tra mt s c phi l s hon thin hay khng, v in ra tt c cc s hon thin nh
hn s N cho trc.
15. Vit hm tnh tng nghch o ca n s nguyn.
16. Vit hm m s cc s chn trong khong t M n N, tnh tng cc s .
17. Tnh Sin ca gi tr x bt k theo cng thc :
x3 x5 x7
sin x x ... So snh kt qu vi hm sin(double) c.
3! 5! 7!
18. Vit chng trnh con xut ra mn hnh dy s Fibonanci cp n, xc nh theo cng thc :
Fib(1) = 1
Fib(2) = 1
Fib(n) = Fib(n-1) + Fib(n-2) vi n> 2.
19. Ta c cc loi tin 50.000, 20.000, 10.000, 5.000, 2.000, 1.000. Vit hm cho bit s t ca tng
loi tin tng ca chng bng mt s tin no m ngi d ng nhp vo. Cho bit tt c cc
phng n c th c, sau thng bit phng n no cho kt qu c s t t nht.
20. Cho trc mng s nguyn n phn t v s M. Tm tp hp cc phn t trong A sao cho tng ca
chng bng M.

Trang 20
BI TP MINH HA MN NHP MN LP TRNH

Tun 8. CHNG TRNH CON (tt)

CC BI TP THM V CHNG TRNH CON

1. Vit hm i mt s h 10 sang h 16 v ngc li.


2. Vit hm lm trn mt s thc vi 2 tham s u vo : s cn phi lm trn v s ch s phn
thp phn c ngha sau khi lm trn.
3. Vit chng trnh o v tr cc k s trong mt s. D liu input l mt s nguyn dng n, gi tr
ca n s thay i sau khi gi thc hin chng trnh con o k s.
V d :
void main()
{
int n = 12345;
DaoKiSo(n);
// n == 54321
}

4. Vit chng trnh con rt gn mt phn s.


5. Vit hm tnh khong cch gia 2 im trong h ta vung gc khi bit ta ca chng.
6. Vit hm tnh chu vi din tch ca mt hnh ch nht, hnh tam gic trong h trc ta vung
gc khi bit ta cc nh.
7. Trong h ta -cc vung gc, cho hai im A, B c ta ln lc l (X1, Y1) v (X2, Y2) .
Vit chng trnh xc nh hai h s a,b trong phng trnh ng thng y = ax + b i qua 2 im
A, B .
8. Cho 3 im A, B, C vi cc ta tng ng ( X1, Y1) , (X2, Y2) v (X3, Y3). Vit chng trnh
xc nh trng tm ca tam gic .
9. Cho trc trong h ta cung gc cc im A, B, C v mt im X c ta bt k. Hy xc
nh xem X c nm trong tam gic hay khng.
10. Vit chng trnh in theo trt t tng dn tt c cc phn s ti gin trong khong (0,1) c mu s
khng vt qu 7.
11. Vit chng trnh con i ch thng thnh ch hoa.

Trang 21
BI TP MINH HA MN NHP MN LP TRNH

Tun 9. KIU MNG MT CHIU V MT S K THUT C BN

CC BI TP C BN

1. Tnh tng tt c cc phn t trn mng.

#include stdafx.h
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

void NhapMang(int[], int);


void XuatMang(int[], int);

int TinhTongCacPhanTu(int[], int);

int main(int argc, char* argv[])


{
int n = 10;
int a[10];

NhapMang(a, n);
XuatMang(a, n);

int s = TinhTongCacPhanTu(a, n);


cout << "\nTong cac phan tu trong mang = " << s << "\n";

return 0;
}

/***************************************************************/
int TinhTongCacPhanTu(int a[], int n)
{
int s = 0;
for(int i=0; i<n; i++)
s = s + a[i];

return s;
}

/********************** Cac ham nhap xuat **********************/


void NhapMang(int a[], int n)
{
srand((unsigned int)time(NULL));

cout << "\n... Phat sinh tu dong cac phan tu trong mang...\n";
for(int i=0; i<n; i++)
{
a[i] = rand()%90 + 10;
}
}

void XuatMang(int a[], int n)


{
cout << "\nCac phan tu hien co trong mang: ";

for(int i=0; i<n; i++)

Trang 22
BI TP MINH HA MN NHP MN LP TRNH

{
cout << a[i] << " ";
}

cout << "\n";


}
/***************************************************************/

2. m s ln xut hin mt phn t x bt k.

#include stdafx.h
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

void NhapMang(int[], int);


void XuatMang(int[], int);

int DemSoLanXuatHienMotPhanTu(int[], int, int);

int main(int argc, char* argv[])


{
int n = 10;
int a[10];

NhapMang(a, n);
XuatMang(a, n);

int x = 0;
cout << "\nNhap phan tu x muon tim: ";
cin >> x;
int so_lan_xuat_hien = DemSoLanXuatHienMotPhanTu(a, n, x);
cout << "\nSo lan xuat hien phan tu " << x << " la "
<< so_lan_xuat_hien << " lan\n";

return 0;
}

/***************************************************************/
int DemSoLanXuatHienMotPhanTu(int a[], int n, int x)
{
int so_lan_xuat_hien = 0;
for(int i=0; i<n; i++)
{
if(a[i] == x)
so_lan_xuat_hien++;
}

return so_lan_xuat_hien;
}
/********************** Cac ham nhap xuat **********************/
/* ... */

3. Trn 2 mng mt chiu a, b cc phn t xen k nhau thnh mt mng mt chiu (a, b c th c s
phn t khc nhau).

/*********************************************************************/
/* ... */

Trang 23
BI TP MINH HA MN NHP MN LP TRNH

void Tron2Mang(int[], int, int[], int, int[]);

int main(int argc, char* argv[])


{
int n = 5, m = 7;
int a[5];
int b[7];
int c[100];

srand((unsigned int)time(NULL));

cout << "\nMang a :";


NhapMang(a, n);
XuatMang(a, n);

cout << "\nMang b :";


NhapMang(b, m);
XuatMang(b, m);

Tron2Mang(a, n, b, m, c);
cout << "\nMang c la ket qua tron 2 mang a, b :";
XuatMang(c, n + m);

return 0;
}

/***************************************************************/
void Tron2Mang(int a[], int n, int b[], int m, int c[])
{
int min = (n>m ? m:n);

int i = 0, j = 0;
for(i=0; i<min; i++, j+=2)
{
c[j] = a[i];
c[j+1] = b[i];
}

while(i<n)
{
c[j++] = a[i++];
}

while(i<m)
{
c[j++] = b[i++];
}
/* ... */
/********************************************************************/

4. Xa mt phn t bt k trn mng.

/*********************************************************************/
/* ... */

void Xoa1PhanTu(int[], int&, int);

int main(int argc, char* argv[])


{
int n = 10;
int a[10];

Trang 24
BI TP MINH HA MN NHP MN LP TRNH

srand((unsigned int)time(NULL));

cout << "\nMang a ban dau :";


NhapMang(a, n);
XuatMang(a, n);

int x;
cout << "\nNhap phan tu x muon xoa: ";
cin >> x;

cout << "\nMang a sau khi xoa phan tu " << x << " : ";
Xoa1PhanTu(a, n, x);
XuatMang(a, n);

return 0;
}

/***************************************************************/
void Xoa1PhanTu(int a[], int &n, int x)
{
int b[100];
for(int i=0; i<n; i++)
b[i] = a[i];

int m = 0;
for(i=0; i<n; i++)
{
if(b[i] != x)
a[m++] = b[i];
}

n = m;
}

/* ... */
/*********************************************************************/

5. To ra mt mng gm n phn t l cc s lin tip trong dy Fibonaci.

/*********************************************************************/
/* ... */

void TaoMangFibonaci(int[], int);

int main(int argc, char* argv[])


{
int n = 10;
int a[100];

cout << "\Nhap so phan tu cua mang (n): ";


cin >> n;

cout << "\nMang a Fibonaci: ";


TaoMangFibonaci(a, n);
XuatMang(a, n);

return 0;
}

/***************************************************************/
void TaoMangFibonaci(int a[], int n)

Trang 25
BI TP MINH HA MN NHP MN LP TRNH

{
int f1 = 0;
int f2 = 1;
int f;

a[0] = f1;
a[1] = f2;
for(int i=2; i<n; i++)
{
f = f1 + f2;
a[i] = f;

f1 = f2;
f2 = f;
}
}

/* ... */
/*********************************************************************/

CC BI TP THM C KH TRUNG BNH


1. m s ln xut hin ca cc s nguyn dng.
2. Tnh tng tt c cc phn t khng m.
3. Ni 2 mng mt chiu thnh mt.
4. m s phn t l s nguyn t v tnh tng cc phn t ny.
5. m s phn t l s chnh phng v tnh tng cc phn t ny.

CC BI TP THM C KH CAO
1. Trn 2 mng mt chiu c c ng di thnh mt mng mt chiu vi mi phn t ca mng mi
l tng ca 2 phn t tng ng t 2 mng cho trc.
2. Xa n phn t lin tc trn mng bt u t mt v tr x cho trc.
3. Nhp vo 2 mng c c ng kch thc, to mng mi gm cc phn t l UCLN ca 2 phn t
tng ng.
4. Tnh tng giai tha ca cc phn t trong mng cho trc.
5. Nhp vo 2 mng mt chiu, xa trn 2 mng ny tt c cc phn t tr ng nhau ca 2 mng.

Trang 26
BI TP MINH HA MN NHP MN LP TRNH

Tun 10. TM KIM V SP XP TRN MNG MT CHIU

CC BI TP C BN

1. Tm mt phn t x bt k trn mng theo kiu tun t.

/*********************************************************************/
/* ... */

int TimKiem(int[], int, int);

int main(int argc, char* argv[])


{
int n = 10;
int a[10];

srand((unsigned int)time(NULL));

NhapMang(a, n);
XuatMang(a, n);

int x;
cout << "\nNhap phan tu x tim: ";
cin >> x;

int kq = TimKiem(a, n, x);


if(kq == -1)
cout << "\nKhong tim thay x";
else
cout << "\nTim thay x tai vi tri so " << kq
<< " (chi so duoc tinh bat dau tu 0)";

cout << "\n\n";

return 0;
}

/***************************************************************/

/* Neu tim thay x thi tra ve vi tri xuat hien lan dau tien
cua x trong mang. Neu khong tim thay x thi tra ve gia tri -1*/
int TimKiem(int a[], int n, int x)
{
int vitri = -1;
for(int i=0; (i < n) && (vitri == -1); i++)
{
if(x == a[i])
{
vitri = i;
}
}

return vitri;
}

/* ... */
/*********************************************************************/

Trang 27
BI TP MINH HA MN NHP MN LP TRNH

2. Sp xp cc phn t trn mng tng dn hoc gim dn theo yu cu.

/* .................................................................. */
void SapXep(int[], int, bool);
void HoanVi(int&, int&);

int main(int argc, char* argv[])


{
int n = 10;
int a[100];

srand((unsigned int)time(NULL));

cout << "\nMang a ban dau :";


NhapMang(a, n);
XuatMang(a, n);

cout << "\nMang a sau khi sap xep tang dan:";


SapXep(a, n, true);
XuatMang(a, n);

cout << "\nMang a sau khi sap xep giam dan:";


SapXep(a, n, false);
XuatMang(a, n);

return 0;
}

void SapXep(int a[], int n, bool bSapTang)


{
for(int i=0; i<n-1; i++)
{
for(int j=i+1; j<n; j++)
{
// bSapTang == true -> sap tang
// bSapTang == false -> sap giam

if(bSapTang == true)
{
if(a[j] < a[i])
HoanVi(a[i], a[j]);
}
else
{
if(a[j] > a[i])
HoanVi(a[i], a[j]);
}
}
}
}

void HoanVi(int &a, int &b)


{
int temp = a;
a = b;
b = temp;
}

/* .................................................................. */

Trang 28
BI TP MINH HA MN NHP MN LP TRNH

3. Sp xp cc phn t trn mng sao cho cc s dng tng dn v cc s m gim dn.

/*********************************************************************/
/* ... */

void SapXepDuongTangAmGiam(int a[], int n)


{
for(int i=0; i<n-1; i++)
{
for(int j=i+1; j<n; j++)
{
if(a[j]>0 && a[i]>0)
{
if(a[j] < a[i])
HoanVi(a[i], a[j]);
}

if(a[j]<0 && a[i]<0)


{
if(a[j] > a[i])
HoanVi(a[i], a[j]);
}
}
}
}

/* ... */

void NhapMang(int a[], int n)


{
cout << "\n... Phat sinh tu dong cac phan tu trong mang...\n";
for(int i=0; i<n; i++)
{
a[i] = rand()%90 - 30;
}
}

/* ... */
/*********************************************************************/

4. o ngc mng (phn t u tin s v cui mng, phn t cui mng a ln u).

/*********************************************************************/
/* ... */

void DaoNguocMang(int[], int);

int main(int argc, char* argv[])


{
int n = 11;
int a[11];

srand((unsigned int)time(NULL));

NhapMang(a, n);
XuatMang(a, n);

cout << "\nMang a sau dao nguoc: ";


DaoNguocMang(a, n);
XuatMang(a, n);

Trang 29
BI TP MINH HA MN NHP MN LP TRNH

return 0;
}

/***************************************************************/
void DaoNguocMang(int a[], int n)
{
for(int i=0; i<n/2; i++)
{
HoanVi(a[i], a[n-i-1]);
}
}

/* ... */
/*********************************************************************/

CC BI TP THM C KH TRUNG BNH


1. Tm mt phn t x bt k trn mng theo kiu nh phn.
2. Kim tra xem mng c tng dn hay gim dn khng.
3. m s mng con tng dn hoc gim dn trong mng.
4. Cho mng n phn t v k < n. In ra tng ln nht ca k phn t lin tip xut hin trn mng.
5. m s lng cc phn t khc nhau xut hin trong mng.
6. C ng vi yu cu cho bit s lng phn t khc nhau, nhng bit rng, cc gi tr xut hin nm
trong khong t 1 k. (to mng t 1 k, ban u bng 0).
7. Mng x v y cha honh v tung ca cc im trn mt ph ng hai chiu. In ra khong cch
xa nht gia 2 im.

8. Mng a cha h s ca a thc


a n x n a n 1 x n 1 a0 . Nhp x. Tnh gi tr a thc.

9. Cho 2 mng a v b c m v n phn t. Nhp s q (nguyn dng). Tm tng a[i + b[j nh nht
nhng ln hn q.

CC BI TP THM C KH CAO
1. Sp xp cc phn t trn mng sao cho cc s dng tng dn v u mng, cc s m gim dn
v cui mng, cc s 0 gia.
2. Sp xp cc phn t trn mng sao cho cc s chn tng dn, cc s l gim dn.
3. Sp xp cc phn t trn mng sao cho cc s chn tng dn v u mng, cc s l gim dn v
cui mng.
4. Kim tra xem c tn ti mng con tng dn hay gim dn khng. Nu c, in mng con tng dn
di nht xut hin trong mng. Nu c nhiu mng c ng di nht th ch cn in ra mt.

Trang 30
BI TP MINH HA MN NHP MN LP TRNH

5. Cho mng c n phn t. Nhp m l s nguyn dng nh hn n. Chia mng lm 2 on a[0]


a[m 1 v a[m a[n 1 . Khng d ng thm mng ph. Chuyn ch cc phn t thnh a[m
a[n 1] a[0] a[m 1].
6. Mng a (k phn t) v b (l phn t) cha h s ca 2 a thc. Tnh tch ca 2 a thc trn.
7. Cho 2 mng a v b c m v n phn t. Cc phn t trong mi mng l khc nhau. Tm s lng
phn t chung. M rng: gi s c phn t tr ng. (while)

Trang 31
BI TP MINH HA MN NHP MN LP TRNH

Tun 11. MNG 2 CHIU

CC BI TP C BN

Bi 1: Vit chng trnh nhp, xut mt mng s nguyn hai chiu c m dng v n ct. Xc nh phn t
ln nht v nh nht trong mng.
#include stdafx.h
#include stdio.h
#define max_dong 100
#define max_cot 100
void main()
{
int m,n;
int a[max_dong][max_cot];
int i,j;

// nhap cac phan tu cho mang 2 chieu co m dong va n cot


printf(" Nhap so dong : m = ");
scanf("%d",&m);
printf("Nhap so cot : n = ");
scanf("%d",&n);
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
printf("\n A[%d,%d] = ",i+1,j+1);
scanf("%d",&a[i][j]);
}

int max = a[0][0], min=a[0][0], x_max=0, y_max=0, x_min=0, y_min=0;

// tim phan tu lon nhat va nho nhat trong mang


for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
if (max <= a[i][j])
{
max = a[i][j];
x_max = i;
y_max = j;
}
if (min >= a[i][j])
{
min = a[i][j];
x_min = i;
y_min = j;
}
}
// xuat cac phan tu cua mang 2 chieu
printf("\n Cac phan tu cua mang A:\n");
for (i=0;i<m;i++)
{
for (j=0; j<n; j++)
printf(" %d ",a[i][j]);
printf("\n");
}
// xuat vi tri va gia tri cac phan tu lon nhat, nho nhat

Trang 32
BI TP MINH HA MN NHP MN LP TRNH

printf("\n Phan tu lon nhat cua mang la %d tai vi tri (%d,%d)",


max,x_max+1,y_max+1);
printf("\n Phan tu nho nhat cua mang la %d tai vi tri (%d,%d)",
min,x_min+1,y_min+1);
}

Bi 2: Vit chng trnh sp xp ma trn cc s thc tng dn t trn xung di v t tri sang phi
bng hai phng php d ng v khng d ng mng ph.
Cch 1 : Khng s dng mng ph.

#include stdafx.h
#include stdio.h
#define max_dong 100
#define max_cot 100
void main()
{
int m,n;
int a[max_dong][max_cot];
int i,j;

// nhap cac phan tu cho mang 2 chieu co m dong va n cot


printf(" Nhap so dong : m = ");
scanf("%d",&m);
printf("Nhap so cot : n = ");
scanf("%d",&n);
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
printf("\n A[%d,%d] = ",i+1,j+1);
scanf("%d",&a[i][j]);
}
for (int k=0; k<=m*n-2; k++)
for (int l=k+1; l<=m*n-1; l++)
if (a[k/n][a%n] > a[l/n][l%n])
{
int temp = a[k/n][k%n];
a[k/n][k%n] = a[l/n][l%n];
a[l/n][l%n] = temp;
}
// xuat cac phan tu cua mang 2 chieu
printf("\n Cac phan tu cua mang A:\n");
for (i=0;i<m;i++)
{
for (j=0; j<n; j++)
printf(" %d ",a[i][j]);
printf("\n");
}

}
Cch 2 : S dng mng ph.
#include stdafx.h
#include stdio.h
#define max_dong 50
#define max_cot 50
void main()
{
int m,n;
int a[max_dong][max_cot];

Trang 33
BI TP MINH HA MN NHP MN LP TRNH

int i,j;

// nhap cac phan tu cho mang 2 chieu co m dong va n cot


printf(" Nhap so dong : m = ");
scanf("%d",&m);
printf("Nhap so cot : n = ");
scanf("%d",&n);
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
printf("\n A[%d,%d] = ",i+1,j+1);
scanf("%d",&a[i][j]);
}

//Do ma tran ra mang mot chieu b


int b[max_dong*max_cot];
int k = 0;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
b[k] = a[i][j];
k = k+1;
}

// Sap xep mang mot chieu b


for (i=0; i<k-1; i++)
for (j=i+1; j<k; j++)
if (b[i] > b[j])
{
int tmp = b[i];
b[i] = b[j];
b[j] = tmp;
}

// Do mang mot chieu b tro lai mang hai chieu a


k = 0;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
a[i][j] = b[k];
k = k+1;
}

// xuat cac phan tu cua mang 2 chieu


printf("\n Cac phan tu cua mang A:\n");
for (i=0;i<m;i++)
{
for (j=0; j<n; j++)
printf(" %d ",a[i][j]);
printf("\n");
}

Bi 3: Cho mt mng s nguyn A c m dng v n ct. Mt phn t c gi l im yn nga nu phn


t l phn t nh nht trong dng v ln nht trong ct. Vit chng trnh xc nh tt c cc m yn
nga c th c.
#include stdafx.h
#include stdio.h

Trang 34
BI TP MINH HA MN NHP MN LP TRNH

#define max_dong 50
#define max_cot 50
void main()
{
int m,n;
int a[max_dong][max_cot];
int i,j;

// nhap cac phan tu cho mang 2 chieu co m dong va n cot


printf(" Nhap so dong : m = ");
scanf("%d",&m);
printf("Nhap so cot : n = ");
scanf("%d",&n);
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
printf("\n A[%d,%d] = ",i+1,j+1);
scanf("%d",&a[i][j]);
}

// tim kiem cac phan tu yen ngua


for (i= 0; i<m; i++)
for (j=0; j<n; j++)
{
bool IsMinRow = true, IsMaxCol = true;

// kiem tra a[i][j] co phai la phan tu trong dong hay khong ?


for (int k = 0; k<n; k++)
if (a[i][k] < a[i][j])
{
IsMinRow = false;
break;
}
// kiem tra a[i][j] co phai la phan tu lon nhat trong cot khong ?
for (int l=0; i<m; l++)
if (a[l][j] > a[i][j])
{
IsMaxCol = false;
break;
}
// neu a[i][j] thao dieu kien --> a la phan tu yen ngua
if (IsMaxCol && IsMinRow)
printf("\n A[%d,%d] = %d la phan tu yen
ngua.",i+1,j+1,a[i][j]);
}
}

Bi 4: Cho ma trn cc s thc A(m x n). Hy xy dng ma trn B(m x n) t ma trn A sao cho B[i [j =
s lng phn t dng xung quanh A[i [j trong ma trn A ( B[i [j ti a l 8 v nh nht l 0).
#include stdafx.h
#include stdio.h
#define max_dong 50
#define max_cot 50
void main()
{
int m,n;
float a[max_dong][max_cot];
int i,j;

// nhap cac phan tu cho mang 2 chieu co m dong va n cot

Trang 35
BI TP MINH HA MN NHP MN LP TRNH

printf(" Nhap so dong : m = ");


scanf("%d",&m);
printf("Nhap so cot : n = ");
scanf("%d",&n);
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
printf("\n A[%d,%d] = ",i+1,j+1);
scanf("%f",&a[i][j]);
}

// phat sinh mang b


float b[max_dong][max_cot];

for (i=0; i<m; i++)


for (j=0; j<n; j++)
{
int count = 0;
for (int k=-1; k<=1; k++)
for (int l=-1; l<=1; l++)
if ((i+k>=0)&&(i+k<m)&&(j+l>=0)
&&(j+l<n)&&(a[i+k][j+l] > 0))
count = count + 1;
b[i][j] = count;
}

// xuat cac phan tu cua mang 2 chieu


printf("\n Cac phan tu cua mang B:\n");
for (i=0;i<m;i++)
{
for (j=0; j<n; j++)
printf(" %f ",b[i][j]);
printf("\n");
}
}

Bi 5: Hy sp xp ma trn sao cho dng c tng nh hn nm trn v dng c tng dng ln hn nm


di.
#include stdafx.h
#include stdio.h
#define max_dong 50
#define max_cot 50
void main()
{
int m,n;
int a[max_dong][max_cot];
int i,j;

// nhap cac phan tu cho mang 2 chieu co m dong va n cot


printf(" Nhap so dong : m = ");
scanf("%d",&m);
printf("Nhap so cot : n = ");
scanf("%d",&n);
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
printf("\n A[%d,%d] = ",i+1,j+1);
scanf("%d",&a[i][j]);
}

Trang 36
BI TP MINH HA MN NHP MN LP TRNH

// su dung mang B luu gia tri tong cac dong cua matrix A
int b[max_dong];
int k = 0;

// tinh tong cac dong va luu vao B


for (i=0; i<m; i++)
{
int tong = 0;
for (j=0; j<n ;j++)
tong = tong + a[i][j];
b[k++] = tong;
}

// sap xep lai mang A theo thong tin tong dong trong B
for (i=0; i<k-1; i++)
for (j=i+1; j<k; j++)
{
if (b[i] > b[j])
{
// hoan vi trong B
int tmp;
tmp = b[i];
b[i] = b[j];
b[j] = tmp;

// hoan vi dong trong A


for (int k = 0; k<n; k++)
{
tmp = a[i][k];
a[i][k] = a[j][k];
a[j][k] = tmp;
}
}
}
// xuat cac phan tu cua mang 2 chieu
printf("\n Cac phan tu cua mang A sau khi thay doi :\n");
for (i=0;i<m;i++)
{
for (j=0; j<n; j++)
printf(" %d ",a[i][j]);
printf("\n");
}
}

CC BI TP THM C KH TRUNG BNH


1. Tnh tng tt c cc phn t trn mng.
2. m s ln xut hin mt phn t x bt k.
3. m s ln xut hin ca cc s nguyn dng.
4. Tnh tng tt c cc phn t khng m.
5. Tnh tng cc phn t trn ng cho chnh.
6. Tnh tng cc phn t trn ng cho ph.
7. Sp xp cc phn t trn mng tng dn trn trn tng dng.
8. Tnh tng v tch 2 ma trn.

Trang 37
BI TP MINH HA MN NHP MN LP TRNH

CC BI TP THM C KH CAO
1. Sp xp cc phn t trn mng tng dn trn tng ct v gim dn trn tng dng.
2. Sp xp cc phn t trn mng tng dn ln lut trn dng v trn ct.
3. Tnh tng v tch ca n ma trn.
4. Xoay 1 ma trn theo chiu bt k.
5. Xoay 1 ma trn theo chiu bt k n bc.
6. Xa mt hng hoc mt ct bt k trn mng 2 chiu.
7. Nhp vo 2 mng 2 chiu, tm tt c cc phn t tr ng nhau ca 2 mng v thay vo l s 0.
8. Nhp vo 2 ma trn c ng kch thc n x m, in ra ma trn tng.
9. Nhp vo 2 ma trn c ng kch thc n x m, tnh ma trn tch.
10. Nhp vo 1 ma trn, xut ra ma trn nghch o.
11. Tm gi phn t ln nht v nh nht trn tng dng, tng ct, v trn ton ma trn.

Trang 38
BI TP MINH HA MN NHP MN LP TRNH

Tun 12. 13. KIU K T V KIU CHUI

CC BI TP C BN

1. Nhp mt chui S t bn phm. Kim tra xem chui c phi l chui i xng.
V d:
Nhp: S = aBCdCBa
Xut: i xng
Nhp: S = aBCdBCa
Xut: Khng di xng

tng:
Gi s chui l chui i xng. Nu pht hin 1 v tr m i xng vi n (cng v tr nhng tnh t cui
chui) th chui khng cn i xng na.

Chng trnh:
#include <stdio.h>
#include <conio.h>
#include <string.h>

// Nn nh ngha MAX c th thay i kch thc mng nhanh chng


#define MAX 100

// Nn t prototype y bit hm nhn vo ci g v tr v ci g


// u vo: Chui cn kim tra
// u ra: 1 nu l chui i xng, 0 nu l chui khng i xng
int LaChuoiDoiXung(char []);

void main()
{
char str[MAX];

printf("Nhap 1 chuoi: ");


// Nn s dng gets thay v scanf c th nhp chui c khong trng
gets(str);

int kq = LaChuoiDoiXung(str);
if (kq==1)
printf("Chuoi \"%s\" la chuoi doi xung.", str); // S dng \ xut
else
printf("Chuoi \"%s\" khong phai la chuoi doi xung.", str);
getch();
}

int LaChuoiDoiXung(char str[MAX])


{
int Flag = 1; // c gi s y l chui i xng
int l = strlen(str); // strlen ly di chui. Nn tnh 1 ln s
dng li
for (int i=0; i<l/2; i++)
if (str[i]!=str[l-i-1])
Flag = 0; // pht hin khng i xng th cp nht c

return Flag;
}

Ghi ch:

Trang 39
BI TP MINH HA MN NHP MN LP TRNH

C th khng cn s dng bin Flag kim tra m c th return 0; ngay khi kim tra thy c v tr
khng cn i xng. C th nh sau:

int LaChuoiDoiXung(char str[MAX])


{
int l = strlen(str); // strlen ly di chui. Nn tnh 1 ln s
dng li
for (int i=0; i<l/2; i++)
if (str[i]!=str[l-i-1])
return 0; // pht hin khng i xng th tr v 0 ngay!

return 1; // cha ln no pht hin v tr khng i xng chui i xng


}

2. Nhp mt chui S t bn phm. Tm k t xut hin nhiu nht trong chui v s ln xut
hin.
V d:
Nhp: S = Nguyen Thi B
Xut: n 2 ln

tng:
- Dng 2 bin lu k t xut hin nhiu nht v s ln xut hin nhiu nht .
- Ban u k t xut hin nhiu nht cha c nn s ln xut hin nhiu nht l 0.
- Xt 1 k t ti v tr i. m xem t v tr i v sau k t ny xut hin bao nhiu ln. Nu s ln xut hin
ny nhiu hn s ln hin ti th ta cp nht k t xut hn nhiu nht v s ln xut hin nhiu nht
trng vi k t va xt.

Chng trnh:
#include <stdio.h>
#include <conio.h>
#include <string.h>

// Nn nh ngha MAX c th thay i kch thc mng nhanh chng


#define MAX 100

// Nn t prototype y bit hm nhn vo ci g v tr v ci g


// u vo: Chui cn kim tra v bin cha k t xut hin nhiu nht tm c
// u ra: S ln xut hin nhiu nht ca k t. Bng 0 nu khng c k t no
int KyTuXuatHienNhieuNhat(char [], char &);

void main()
{
char str[MAX];

printf("Nhap 1 chuoi: ");


// Nn s dng gets thay v scanf c th nhp chui c khong trng
gets(str);

char chr;
int max = KyTuXuatHienNhieuNhat(str, chr);
if (max!=0) // Trng hp max khc 0 Chui khng rng
printf("Ky tu %c xuat hien nhieu nhat la %d lan.", chr, max);
else
printf("Chuoi rong! Khong co ky tu xuat hien nhieu nhat.);
getch();
}

Trang 40
BI TP MINH HA MN NHP MN LP TRNH

int KyTuXuatHienNhieuNhat(char str[], char &chr)


{
int i, j, length = strlen(str);
char curchr; // K t ang xt
int curcount; // S ln xut hin ca k t ang xt
int max = 0; // S ln xut hin nhiu nht ban u l 0 (cha c)

for (i=0; i<length; i++)


{
curchr = str[i];
curcount = 1;

// Ly k t th i ra kim tra vi cc k t sau i


for (j=i+1;j<length; j++)
if (str[j] == str[i])
curcount++;

// Tm c s ln xut hin nhiu hn max th cp nht li s ln v k


t
if (max < curcount)
{
max = curcount;
chr = curchr;
}
}

return max;
}

3. Nhp h tn ca mt ngi t bn phm. Hy chun ha chui h tn ny. (Xa cc khong


trng tha v k t u tin ca h, ch lt v tn phi vit hoa, cc k t cn li vit thng).
V du:
Nhp: NgUyen VaN A
Xut: Nguyen Van A

tng:
- Xa cc khong trng d bn tri chui.
- Xa cc khong trng d bn phi chui.
- Nu tm c 2 k t khong trng dnh nhau trong chui th xa bt 1 khong trng.
- Cho tt c thnh ch thng.
- Cp nht k t u tin v cc k t m trc n l khong trng thnh ch hoa.

Chng trnh:
#include <stdio.h>
#include <conio.h>
#include <string.h>

// Nn nh ngha MAX c th thay i kch thc mng nhanh chng


#define MAX 200

// Nn t prototype y bit hm nhn vo ci g v tr v ci g


// u vo: Chui cn chun ha
// u ra: khng c (chui a vo c cp nht sau khi chun ha)
void ChuanHoaChuoi(char []);

void main()
{
char str[MAX];

Trang 41
BI TP MINH HA MN NHP MN LP TRNH

printf("Nhap ho ten: ");


// Nn s dng gets thay v scanf c th nhp chui c khong trng
gets(str);

ChuanHoaChuoi(str);

printf("Chuoi sau khi chuan hoa: %s", str);


getch();
}

void ChuanHoaChuoi(char str[])


{
int i;

// Xa cc khong trng d bn tri


// Nu k t u tin vn l khong trng th dch chuyn chui qua tri 1 k t
while (str[0]==' ')
{
for (i=0; i<strlen(str)-1; i++)
str[i] = str[i+1];
str[strlen(str)-1] = '\0';// Cp nht li k t kt thc chui li li
}

// Xa cc khong trng d bn phi


// Nu k t cui cng vn l khong trng th di li k t kt thc chui 1 k t
while (str[strlen(str)-1]==' ')
{
str[strlen(str)-1] = '\0';
}

// Xa cc khong trng d gia


// Nu tm thy khong trng v k t k tip cng l khong trng
// Th xa khong trng tha (di chui qua tri 1 k t ti khong trng
)
i = 0;
while (i<strlen(str)-1)
{
if (str[i]==' ')
if (str[i+1]==' ')
{
for (int j=i+1; j<strlen(str)-1; j++)
str[j] = str[j+1];
str[strlen(str)-1] = '\0';
}
else
i++;
else
i++;
}

// Bin tt c k t ca chui thnh ch thng


strlwr(str);

// Ch u tin l ch hoa
str[0] = str[0]-32;

// Ch sau khong trng s c i thnh ch hoa


for (i=0; i<strlen(str)-1; i++)
if (str[i]==' ')
str[i+1] = str[i+1]-32;
}

Trang 42
BI TP MINH HA MN NHP MN LP TRNH

Lu :
- C th vit 1 hm xa 1 k t ti v tr x trong chui s dng chung (xem nh Bi tp)
- K t kt thc chui l k t \0
- Do k t thng ng sau k t hoa 32 k t trong bng max ASCII nn mun i k t thng sang
hoa th ta tr gi tr ca k t thng vi 32. n gin hn l s dng hm toupper trong th vin
ctype.h.

4. Vit chng trnh nhp mt s nguyn, xut li s dng chui nhng c du , ngn cch
hng triu, ngn.
V d:
Nhp: N = 123456789
Xut: S = 123,456,789

tng:
Chuyn s N sang chui S. i li t cui chui v c 3 k t s chn du phy vo.

Chng trnh:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

// Nn nh ngha MAX c th thay i kch thc mng nhanh chng


#define MAX 20

// Nn t prototype y bit hm nhn vo ci g v tr v ci g


// u vo: Chui cn chn, k t chn, v tr
// u ra: khng c (chn trc tip vo chui a vo)
void ChenKyTuVaoChuoi(char [], char, int);

void main()
{
unsigned int N;
printf("Nhap mot so N: ");
scanf("%d", &N);

char str[MAX];
itoa(N, str, 10); // i s N sang chui str c s 10

for (int i=strlen(str)-3;i>0;i=i-3)


ChenKyTuVaoChuoi(str, ',', i); // Gi hm chn k t , vo chui

printf("Chuoi so sau khi xu ly la: %s", str);


getch();
}

void ChenKyTuVaoChuoi(char str[], char chr, int pos)


{
int length = strlen(str);

for (int i=length; i>pos; i--) // y chui sang phi sau v tr pos
str[i] = str[i-1];

str[pos] = chr; // a k t chr vo v tr pos


str[length+1] = '\0'; // Cp nht v tr kt thc chui
}

5. Nhp 2 chui S1 v S2 ch gm cc k s t bn phm. Xut ra tng ca 2 s .

Trang 43
BI TP MINH HA MN NHP MN LP TRNH

V d:
Nhp: S1 = 2912 S2 = 176
Xut: S = 3088

tng 1:
i 2 chui sang 2 s. Cng 2 s ri i ngc sang chui. Cch ny ch lm trong trng hp chui
s ngn bin s cn sc cha.

tng 2:
Thc hin php cng nh cng bng tay. tin ta thm cc s 0 vo u chui s ngn 2 chui s di
bng nhau.

Chng trnh:
#include <stdio.h>
#include <conio.h>
#include <string.h>

#define MAX 200

void main()
{
char a[MAX];
char b[MAX];
char c[MAX];

// Chui s ny lin tc nn ta s dng ngay hm scanf thay v hm gets


printf("Nhap so thu nhat: ");
scanf(%s, &a);
printf("Nhap so thu hai: ");
scanf(%s, &b);

/*
Chn s 0 vo u chui ngn hn
i vi chui ngn hn, ta thc hin 3 bc:
- o chui
- Thm s 0 vo n khi di chui ngn = chui di
- o chui li
*/
if (strlen(a)<strlen(b))
{
strrev(a);
while (strlen(a)<strlen(b))
strcat(a, "0");
strrev(a);
}
else
{
strrev(b);
while (strlen(b)<strlen(a))
strcat(b, "0");
strrev(b);
}

int na, nb, nc, clength = 0;


int temp = 0;
for (int i=strlen(a)-1; i>=0; i--)
{
na = a[i] - 48; // i k t s sang s ta tr 48. V d: 1 48 = 1
nb = b[i] - 48;
nc = na + nb + temp;

Trang 44
BI TP MINH HA MN NHP MN LP TRNH

temp = nc/10; // Ly phn nh


nc = nc%10;
c[clength++] = nc + 48;
}
if (temp>0)
c[clength++] = temp + 48; // Nu cn nh th a tip vo
c[clength] = '\0'; // Kt thc chui

strrev(c);
printf(" %s + %s = %s", a, b, c);
getch();
}

Nu khng thm cc s 0 vo u chui s ngn, ta c th lm nh sau:


#include <stdio.h>
#include <conio.h>
#include <string.h>

#define MAX 200

void main()
{
char a[MAX];
char b[MAX];
char c[MAX];
int temp;

printf("Nhap so thu nhat: ");


scanf(%s, &a);
printf("Nhap so thu hai: ");
scanf(%s, &b);

strrev(a);
strrev(b);

int ablength;
ablength = strlen(a) < strlen(b) ? strlen(b) : strlen(a);
/*
Cu lnh trn tng ng vi cu lnh if sau (xem li ton t 3 ngi):
if (strlen(a) < strlen(b))
ablength = strlen(b);
else
ablength = strlen(a);
/*

int na, nb, nc, clength = 0;


temp = 0;
for (int i=0; i<ablength; i++)
{
na = i < strlen(a) ? a[i]-48 : 0;
nb = i < strlen(b) ? b[i]-48 : 0;

nc = na + nb + temp;
temp = nc/10;
nc = nc%10;

c[clength++] = nc + 48;
}

if (temp>0)
c[clength++] = temp + 48;
c[clength] = '\0';

Trang 45
BI TP MINH HA MN NHP MN LP TRNH

strrev(a);
strrev(b);
strrev(c);

printf("%s + %s = %s", a, b, c);


getch();
}

CC BI TP THM C KH TRUNG BNH


1. Nhp h tn ca mt ngi t bn phm. Hy chun ha chui h tn ny. (Xa cc khong trng
tha v k t u tin ca h, ch lt v tn phi vit hoa, cc k t cn li vit thng).
V du:
Nhp: NgUyen VaN A
Xut: Nguyen Van A
2. Khng s dng cc hm c sn. Vit chng trnh xa N k t ti v tr i trong chui S.
V d:
Nhp: S = Nguyen Van A i = 2 N = 3 (Xa 3 k t ti k t 2 trong chui S)
Xut: S = Nen Van A
3. Vit chng trnh nhp mt s nguyn, xut li s dng chui nhng c du , ngn cch
hng triu, ngn.
V d:
Nhp: N = 123456789
Xut: S = 123,456,789
4. Nhp mt chui S t bn phm. Kim tra xem chui c phi l chui i xng.
V d:
Nhp: S = aBCdCBa
Xut: i xng
Nhp: S = aBCdBCa
Xut: Khng di xng
5. Nhp mt chui S t bn phm. Tm k t xut hin nhiu nht trong chui v s ln xut hin.
V d:
Nhp: S = Nguyen Thi B
Xut: n 2 ln
6. Nhp mt chui S t bn phm v mt k t C. m xem k t C xut hin bao nhiu ln trong
chui S .
Nhp: Nguyen Van A C = u

Trang 46
BI TP MINH HA MN NHP MN LP TRNH

Xut: 1 ln
7. Lp trnh nhp vo t bn phm danh sch hc sinh mt lp, sp xp li danh sch theo th t abc
ca Tn, nu tr ng Tn th sp xp theo th t abc ca H.
8. Vit chng trnh nhp t bn phm 2 xu k t S1 v S2. Hy xt xem S1 c xut hin bao nhiu
ln trong S2 (hoc ngc li S2 xut hin bao nhiu ln trong S1) v ti nhng v tr no?
9. Vit chng trnh nhp mt xu S ch gm cc ch ci thng. Hy lp xu S1 nhn c t xu
S bng cch sp xp li cc k t theo th t abc.
10. Cho xu S ch gm cc du ( v ). Hy kim tra xem S c l mt biu thc ( ) hp l hay
khng.
Lp trnh tnh gi tr ca mt s vit di dng LA M.
11. V d: MDCLXVI = 1666. M:1000 ; D:500 ; C:100; L:50; X :10 ; V:5 ; I :1

CC BI TP THM C KH CAO

1. Khng s dng cc hm c sn. Vit chng trnh chn chui S2 vo chui S1 ti v tr i trong
chui S1.
V d:
Nhp: S1 = Nguyen Van A
S2 = Le
i=8 (Chn chui S2 vo chui S1 ti v tr 8)
Xut: S1 = Nguyen LeVan A
2. Nhp 2 chui S1 v S2 ch gm cc k s t bn phm. Xut ra tng ca 2 s .
V d:
Nhp: S1 = 2912 S2 = 176
Xut: S = 3088
3. Khng s dng cc hm c sn. Kim tra xem chui S2 c nm trong chui S1 hay khng v ti v
tr no.
V d:
Nhp: S1 = Nguyen Van A S2 = Van
Xut: S2 nm trong S1 ti v tr 8.
4. Nhp mt chui S t bn phm. m xem c bao nhiu t c nhiu hn n k t c trong chui S.
Nhp: Nguyen Van A n=2
Xut: 2 t
5. Cho xu k t S. Xt xem c hay khng mt xu X sao cho S l ghp ca mt s ln lin tip ca
X. V du S = abcabc th X l abc, cn nu S = abcab th khng c xu X.

Trang 47
BI TP MINH HA MN NHP MN LP TRNH

6. Nhp t bn phm mt s nguyn dng N<=1000 v in ra mn hnh xu k t S di N ch


gm cc k t 0 v 1 sao cho S khng c xu con no xut hin 3 ln lin tip trong n.
Nhp t bn phm hai s nh phn X v Y. Hy in ra mn hnh s nh phn Z c gi tr ln nht c
th c m Z nhn c t X bng cch gch i mt s ch s nh phn no v Z c ng nhn
c t Y bng cch gch i mt s ch s nh phn no .

7. Cho mt s N rt ln (khng th biu din di dng thp phn mt cc thng thng) c biu
din di dng chui nh phn. Hy tm phn d ca php chia N cho 15 trong h thp phn.
8. Cho N xu k t A1, A2, , AN, N<=100, di ca xu Ai khng qu 10, v mt xu k t S.
Hy tm mi cch biu din S di dng ghp ca cc xu k t Ai, mi xu Si c th xut hin
trong biu din d nhiu ln.
9. Xu M gi l xu con ca S nu ta c th nhn c M t S bng cch xa i mt s k t ca S.
Cho hai xu S1, S2, hy tm xu con M di nht va l xu con ca S1, va l xu con ca S2.

Trang 48
BI TP MINH HA MN NHP MN LP TRNH

Tun 13. QUY

CC BI TP C BN

1. Nhp mt s nguyn n. S dng quy tnh n! (n! = 1*2**n)


V d:
Nhp: n = 0
Xut: 0! = 1
Nhp: n = 4
Xut: 4! = 24

#include <stdio.h>
#include <conio.h>

// Nn t prototype y bit hm nhn vo ci g v tr v ci g


// u vo: n
// u ra: n!
int GiaiThua(int);

void main()
{
int n;

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

int kq = GiaiThua(n);

printf("%d! = %d", n, kq);


getch();
}

int GiaiThua(int n)
{
if (n==0) // Rt quan trng. y l im thot ca hm quy.
return 1;
else // C th b else v nu ri vo trng hp n=0 th return.
return n*GiaiThua(n-1);
}

Cn ch sc cha ca bin khi khai bo. Hm GiaiThua tr v kt qu kiu int c sc cha khng
trong cc trng hp n ln. Lc ny s xy ra hin tng trn s v dn n cho ra kt qu sai. C th
thay kiu tr v int bng kiu khc c sc cha ln hn nh float hoc double.

Trang 49
BI TP MINH HA MN NHP MN LP TRNH

2. Nhp mt s nguyn n. S dng quy in dy Fibonacy c di n.


V d:
Nhp: n = 2
Xut: 1 1
Nhp: n = 5
Xut: 1 1 2 3 5

#include <stdio.h>
#include <conio.h>

// Nn t prototype y bit hm nhn vo ci g v tr v ci g


// u vo: n
// u ra: phn t th n ca dy Fibonacy
int Fibonacy(int);

void main()
{
int n;

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

for (int i=0; i<n; i++)


printf("%4d", Fibonacy(i));
getch();
}

int Fibonacy(int n)
{
if (n==0 || n==1) // Rt quan trng. y l im thot ca hm quy.
return 1;
else // C th b else v nu ri vo trng hp n=0 hoc n = 1 th return
return Fibonacy(n-1) + Fibonacy(n-2);
}

Trang 50
BI TP MINH HA MN NHP MN LP TRNH

3. Nhp mt mng n s nguyn. S dng quy tnh tng gi tr cc phn t c trong mng.
V d:
Nhp: n = 1 v mng a = 4
Xut: Tng = 4
Nhp: n = 5 v mng a = -1 4 6 3 0
Xut: Tng = 12

#include <stdio.h>
#include <conio.h>

#define MAX 100

// u vo: bin cha mng cc s nguyn v s phn t


// u ra: tng cc phn t ca mng
int TongMang(int [], int);

void main()
{
int a[MAX];
for (i=0; i<n; i++)
{
printf("Nhap phan tu a[%d]: ", i);
scanf("%d", &a[i]);
}

if (n>0)
{
printf("Mang a vua nhap la: ");
for (i=0; i<n; i++)
printf("%4d", a[i]);
}

int kq = TongMang(a, n);


printf("Tong cac phan tu cua mang bang %d", kq);
getch();
}

int TongMang(int a[], int n)


{
if (n==0) // y l im thot ca hm quy khi mng rng.
return 0;
else // Mng khng rng th ly phn t cui + tng phn u
return a[n-1] + TongMang(a, n-1);
}

Trang 51
BI TP MINH HA MN NHP MN LP TRNH

4. Nhp 2 s nguyn dng a v b. S dng quy tnh c s chung ln nht ca 2 s .


Nhp: a = 3 b = 4
Xut: USCLN = 12

#include <stdio.h>
#include <conio.h>

// u vo: 2 s nguyn dng


// u ra: c s chung ln nht ca 2 s nguyn dng
int USCLN(int, int);

void main()
{
int a, b;

printf("Nhap 2 so nguyen a va b: ");


scanf("%d%d", &a, &b);

int c = USCLN(a,b);
printf("Uoc so chung lon nhat cua %d va %d la: %d", a, b, c);
getch();
}

int USCLN(int a, int b)


{
if (a==b) // y l im thot ca hm quy a=b
return a;
if (a>b)
return USCLN(a-b, b);
return USCLN(a, b-a);
}

Trang 52
BI TP MINH HA MN NHP MN LP TRNH

5. Nhp s nguyn dng N. S dng quy tnh in dy nh phn ca s N .


Nhp: N = 5
Xut: 101

#include <stdio.h>
#include <conio.h>

// u vo: s nguyn n
// u ra: dy biu din nh phn ca s nguyn dng n
void InNhiPhan(int);

void main()
{
int n;

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

InNhiPhan(n);
getch();
}

void InNhiPhan(int n)
{
if (n/2==0) // y l im thot ca hm quy khi khng th chia n tip
printf("%d", n%2);
else // Mun b else y th phi them return; iu kin n/2==0
{
InNhiPhan(n/2); // Ch th t in: in phn cn li trc
printf("%d", n%2); // ri in s d va tm c
}
}

CC BI TP THM C KH TRUNG BNH


1. Nhp mt s nguyn N. Tnh N!
Nhp: N = 4
Xut: N! = 24
2. Nhp 2 s nguyn a v b. S dng quy tnh c s chung ln nht ca 2 s .
Nhp: a = 3 b=4
Xut: USCLN = 12
3. Nhp mt mng gm N s nguyn. S dng quy tnh tng N s nguyn .
Nhp: [1, 5, 0, 6]
Xut: S = 12
4. Nhp mt mng gm s N s nguyn. S dng quy kim tra xem c phi l mng tng dn.
Nhp: [0, 1, 5, 6]
Xut: Tng dn
5. Nhp mt mng gm s N s nguyn. S dng quy kim tra xem c phi l mng i xng.
Nhp: [0, 1, 5, 1, 0]
Xut: Mng i xng

Trang 53
BI TP MINH HA MN NHP MN LP TRNH

6. Nhp mt s N t bn phm. In ra s theo th t ngc li.


Nhp: N = 1234
Xut: N = 4321
7. Nhp mt s nguyn N t bn phm. Tnh gi tr biu thc:

S= 2 * N 2 * ( N 1) ... 4 2

Nhp: N = 4

Xut: S = 3,299 (S = 8 6 4 2 )
8. Nhp n.
x3 x5 x 2 n 1
Tnh S x ...(1) n .
3! 5! (2n 1)!

Kim tra kt qu tm c khi n ln vi sinx


x2 x4 x 2n
9. Nhp n. Tnh S 1 ...(1) n .
2! 4! (2n)!
Kim tra kt qu tm c khi n ln vi cosx
10. QuickSort
11. Xy dng mt dy gm N k t t 3 k t 1, 2, 3 sao cho khng c hai dy con lin tip no ging
nhau. V d N = 5: 12321 (ng). Cc dy 12323, 12123 l khng ng.

CC BI TP THM C KH CAO
1. Cho n s t nhin x1, x2,, xn. Hy tm UCLN (x1, x2,,xn) bng cch s dng:
UCLN(x1,x2,,xn)= UCLN(UCLN(x1,x2,,x(n-1)),xn)
2. Bi ton m i tun
3. Bi ton 8 qun hu
4. Tm tt c cc hon v ca mt mng c n phn t
5. Dy Fibonacci
6. Cho n qu cn c trng lng m1, m2,,mn. Hy tm cch t mt s qu cn sao cho cn c
cn bng.
7. Cho 1 va li c th tch V v c n vt c cc gi tr a1, a2,, an v th tch tng ng l V1,
V2,,Vn. Hy tm cch xp cc vt vo vali sao cho gi tr ca cc hng ha l cao nht

Trang 54

You might also like