You are on page 1of 54

BI TP MINH HA MN TIN HC C S A1

Trang 1
I HC QUC GIA TPHCM
TRNG H KHOA HC T NHIN

KHOA CNG NGH THNG TIN
B MN TIN HC C S


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) ............................................................................................. 20
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



BI TP MINH HA MN TIN HC C S A1


Trang 2
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 ()
{
BI TP MINH HA MN TIN HC C S A1


Trang 3
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 kq tht s vi
kq 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;
BI TP MINH HA MN TIN HC C S A1


Trang 4
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.
3x
3
- 5x
2
+ 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.
BI TP MINH HA MN TIN HC C S A1


Trang 5
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.
2
R S
y
t =
b. Rh S
xungquanh
t 2 =
c. h S V
y
=

2. Nhp vo s thc x, tnh v in ra cc gi tr y1, y2, ly 2 s l:
d. ) 1 3 10 ( 4
2
1
+ + + = x x x x y
e.
|
.
|

\
|
+
+ +
=
x e
x x
y
x
4
cos
1 ) sin(
2
2 2
2
t
t


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.



BI TP MINH HA MN TIN HC C S A1


Trang 6
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:

#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 ";
else
cout << "\nGia tri cua x khac 100 ";
return 0;
}

Bi tp 3
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;
}
BI TP MINH HA MN TIN HC C S A1


Trang 7
else
{
cout << "\nPhuong trinh co nghiem duy nhat: x = " << -b/a << endl;
}
return 0;
}

Bi tp 4
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
#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();
}


BI TP MINH HA MN TIN HC C S A1


Trang 8
CC BI TP THM C KH TRUNG BNH

1. Gii phng trnh bc 2: ax
2
+ 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

8. 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;

BI TP MINH HA MN TIN HC C S A1


Trang 9
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;
ngayke = 2;
BI TP MINH HA MN TIN HC C S A1


Trang 10
}
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();
}

BI TP MINH HA MN TIN HC C S A1


Trang 11

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++;
BI TP MINH HA MN TIN HC C S A1


Trang 12
if(t==k)
{
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 = 1
3
+2
3
+ 3
3
+ + N
3

2. Tnh S = 1
2
+2
2
+ 3
2
+ + N
2

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 + x
2
+ .. + x
n

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.


BI TP MINH HA MN TIN HC C S A1


Trang 13
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. 2 4 ... ) 1 ( * 2 * 2 + + + + = N N S
5.
!
1
! 2
1
! 1
1
! 0
1
n
S + + + + =
6.
)! 1 2 (
) 1 ...(
! 5 ! 3
1 2 5 3
+
+ + =
+
n
x x x
x S
n
n
v

i < x <
7.
)! 2 (
) 1 ...(
! 4 ! 2
1
2 4 2
n
x x x
S
n
n
+ + = v

i < x <
8.

=
= + + + + =

0
3 2
1
1
1
n
n
x x x x
x
v

i 1 < x < 1
9.

= + + =
0
2 6 4 2
)! 2 (
) 1 (
720
1
24
1
2
1
1 ) cos(
n
n
n
x
n
x x x x v

i < x <
10.

=
+
+

= + + + =
0
1 2 9 7 5 3
1 2
) 1 (
2 9
1
7
1
5
1
3
1
2
) ( arccotan
n
n
n
x
n
x x x x x x
t t

11.

= + + =
1
1 2
1
7 5 3
1 2
) 1 (
7
1
5
1
3
1
) arctan(
n
n
n
x
n
x x x x x v

i 1 < x < 1
12.

=
= + + + + + =
0
4 3 2
!
1
24
1
6
1
2
1
1
n
n x
x
n
x x x x e v

i < x <
13.

=
+

= + + = +
1
1
4 3 2
) 1 (
4
1
3
1
2
1
) 1 ln(
n
n
n
x
n
x x x x x v

i < x <
14.

= + + + + =
|
.
|

\
|

+
1
1 2 7 5 3
1 2
2
7
2
5
2
3
2
2
1
1
ln
n
n
x
n
x x x x
x
x
v

i < x <
15.

=
+
+

= + + =
0
1 2 7 5 3
)! 1 2 (
) 1 (
5040
1
120
1
6
1
) sin(
n
n
n
x
n
x x x x x v

i < x <
16. Nh p s nguyn dng n. (i) Ki m tra co

pha

i la

s nguyn t ; (ii) Tm cc tha s nguyn


t cu

a no

; (iii) In ca

c ch

s t

pha

i qua tra

i, (iv) In ca

c ch

s t

tra

i qua pha

i (ch s
0); (v) In ra t t ca

ca

c c p s nguyn dng a v b (a = b) sao cho: n b a < +


2 2
. (vi) Nh p
s nguyn k. In ra k s th p phn

ng sau d u th p phn (ch : 10


k
c th trn s).
BI TP MINH HA MN TIN HC C S A1


Trang 14
17. Nh p 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. Nh p s nguyn dng n. Cho bi t o

la

(i) s i x

ng, (ii) s g n i x

ng, (iii) cc ch
s x p tng d n hay gia

m d n khng? (iv) t ng ca

c ch

s cho n khi nho

hn 10, (v) ch


s l

n va

nho

nh t.
19. Xc nh phn t th k ca dy Fibonacci:
2 1 1 0
, 1 , 0

+ = = =
k k k
f f f f f , v

i k > 2.
20. In ra bi

nh phng cu

a n s nguyn dng u tin, nhng (i) ch dng php + va

phe

p
; (ii) Ch dng php +.


BI TP MINH HA MN TIN HC C S A1


Trang 15
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 dng 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");
}

BI TP MINH HA MN TIN HC C S A1


Trang 16
Bi 3: Vit chng trnh v mt hnh ch nht bng cc du * vi chiu di v chiu rng do ngi
dng 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]);
}
BI TP MINH HA MN TIN HC C S A1


Trang 17

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);
}


BI TP MINH HA MN TIN HC C S A1


Trang 18
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:
F
0
= 0, F
1
= 1, F
n =
F
n-1
+ F
n-2

CC BI TP THM C KH CAO
Lm li cc bi kh ca chng trc vi vng lp for
BI TP MINH HA MN TIN HC C S A1


Trang 19
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
n
X khng dng quy.
5. Vit chng trnh tnh hm t hp
)! ( !
!
) , (
k n k
n
k n C

= trong cn ci t hm tnh n!.


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
1 1
1 2 1
1 3 3 1
1 4 6 4 1
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.
BI TP MINH HA MN TIN HC C S A1


Trang 20
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 :
...
! 7 ! 5 ! 3
sin
7 5 3
+ + =
x x x
x x So snh kt qu vi hm sin(double) c.
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 dng 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.

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.
BI TP MINH HA MN TIN HC C S A1


Trang 21
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.



BI TP MINH HA MN TIN HC C S A1


Trang 22
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++)
BI TP MINH HA MN TIN HC C S A1


Trang 23
{
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).

/*********************************************************************/
/* ... */
BI TP MINH HA MN TIN HC C S A1


Trang 24

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];
BI TP MINH HA MN TIN HC C S A1


Trang 25

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)
BI TP MINH HA MN TIN HC C S A1


Trang 26
{
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 cng 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 cng 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 trng nhau ca 2 mng.

BI TP MINH HA MN TIN HC C S A1


Trang 27
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;
}

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


BI TP MINH HA MN TIN HC C S A1


Trang 28

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;
}

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

BI TP MINH HA MN TIN HC C S A1


Trang 29
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);

BI TP MINH HA MN TIN HC C S A1


Trang 30
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 ma

ng n ph n t

va

k < n. In ra t ng l

n nh t cu

a k ph n t

lin ti p xu t hi n trn ma

ng.
5. m s l ng ca

c ph n t

kha

c nhau xu t hi n trong ma

ng.
6. Cung vi yu cu cho bit s lng phn t khc nhau, nhng bi t r ng, cc gi tr xut hin nm
trong khoa

ng t

1 k. (to ma

ng t

1 k, ban u b ng 0).
7. Mng x v y cha honh v tung ca cc im trn mt phng hai chiu. In ra khoa

ng ca

ch
xa nh t gi

a 2 i m.
8. Mng a cha h s ca a thc
0
1
1
a x a x a
n
n
n
n
+ + +


. Nh p x. Tnh gi tr a th

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

n 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 d n
di nht xut hin trong mng. N u co

nhi u mng cng di nht th ch cn in ra mt.


BI TP MINH HA MN TIN HC C S A1


Trang 31
5. Cho ma

ng co

n ph n t

. Nh p m la

s nguyn dng nho

hn n. Chia ma

ng la

m 2 oa n a[0]
a[m 1] v a[m] a[n 1]. Khng du

ng thm ma

ng phu . Chuy n ch ca

c ph n t

tha

nh a[m]
a[n 1] a[0] a[m 1].
6. Mng a (k ph n t

) v b (l ph n t

) ch

a h s cu

a 2 a th

c. Tnh tch ca 2 a th

c trn.
7. Cho 2 mng a va

b co

m va

n ph n t

. Cc phn t trong mi mng l khc nhau. Tm s lng


ph n t

chung. M

r ng: gi s c phn t trng. (while)


BI TP MINH HA MN TIN HC C S A1


Trang 32
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
BI TP MINH HA MN TIN HC C S A1


Trang 33
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 dng v khng dng 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];
BI TP MINH HA MN TIN HC C S A1


Trang 34
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
BI TP MINH HA MN TIN HC C S A1


Trang 35
#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
BI TP MINH HA MN TIN HC C S A1


Trang 36
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]);
}
BI TP MINH HA MN TIN HC C S A1


Trang 37

// 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.
BI TP MINH HA MN TIN HC C S A1


Trang 38


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 trng nhau ca 2 mng v thay vo l s 0.
8. Nhp vo 2 ma trn cng kch thc n x m, in ra ma trn tng.
9. Nhp vo 2 ma trn cng 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.

BI TP MINH HA MN TIN HC C S A1


Trang 39
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:
BI TP MINH HA MN TIN HC C S A1


Trang 40
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();
}


BI TP MINH HA MN TIN HC C S A1


Trang 41
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];
BI TP MINH HA MN TIN HC C S A1


Trang 42
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;
}

BI TP MINH HA MN TIN HC C S A1


Trang 43
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 .
BI TP MINH HA MN TIN HC C S A1


Trang 44
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;
BI TP MINH HA MN TIN HC C S A1


Trang 45
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';
BI TP MINH HA MN TIN HC C S A1


Trang 46

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
BI TP MINH HA MN TIN HC C S A1


Trang 47
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 trng 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

12. 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
13. 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
14. 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.
15. 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
16. 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.
BI TP MINH HA MN TIN HC C S A1


Trang 48
17. 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 cung nhn
c t Y bng cch gch i mt s ch s nh phn no .

18. 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.
19. 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.
20. 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.

BI TP MINH HA MN TIN HC C S A1


Trang 49
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.
BI TP MINH HA MN TIN HC C S A1


Trang 50
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);
}
BI TP MINH HA MN TIN HC C S A1


Trang 51
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);
}
BI TP MINH HA MN TIN HC C S A1


Trang 52
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);
}

BI TP MINH HA MN TIN HC C S A1


Trang 53
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
BI TP MINH HA MN TIN HC C S A1


Trang 54
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 4 ... ) 1 ( * 2 * 2 + + + + N N
Nhp: N = 4
Xut: S = 3,299 (S = 2 4 6 8 + + + )
8. Nhp n.
Tnh
)! 1 2 (
) 1 ...(
! 5 ! 3
1 2 5 3
+
+ + =
+
n
x x x
x S
n
n
.

Kim tra kt qu tm c khi n ln vi sinx
9. Nhp n. Tnh
)! 2 (
) 1 ...(
! 4 ! 2
1
2 4 2
n
x x x
S
n
n
+ + = .
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

You might also like