You are on page 1of 54

BI TP MINH HA MN TIN HC C S A1

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

Trang 1

BI TP MINH HA MN TIN HC C S A1

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.
2.
3.
4.

In C, lowercase letters are significant.


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

#include <stdio.h>
int main (void)
{
printf ("\t1.
printf ("\t2.
printf ("\t3.
routine.\n");
printf ("\t4.
semicolon.\n");
return 0;
}

In C, lowercase letters are significant.\n");


main is where program execution begins.\n");
Opening and closing braces enclose program statements in a
All program statements must be terminated by a

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
int main ()
{

25;

Trang 2

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

=
=
=
=

53
5
5
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;

Trang 3

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

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 yh
2. Nhp vo s thc x, tnh v in ra cc gi tr y1, y2, ly 2 s l:
d. y1 4( x 2 10 x x 3x 1)
e.

y2

sin(x 2 ) x 2 1

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 TIN HC C S A1

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

Trang 6

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

Trang 7

BI TP MINH HA MN TIN HC C S A1

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

Trang 8

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

Trang 9

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

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

Trang 11

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

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
5. S

1 1 1
1

0! 1! 2!
n!

6. S x

x3 x5
x 2 n 1
vi < x <

...(1) n
3! 5!
(2n 1)!

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

8.

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

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

10. arccotan( x)

1
1
1
1
(1) n 2 n1
x x3 x5 x7 x9
x
2
3
5
7
9
2 n 0 2n 1

1
1
1
(1) n1 2 n1
11. arctan(x) x x 3 x 5 x 7
vi 1 < x < 1
x
3
5
7
n 1 2n 1

12. e x 1 x

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

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

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

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

16. Nh p s nguyn dng n. (i) Ki m tra co phai la s nguyn t ; (ii) Tm cc tha s nguyn
t cua no; (iii) In cac ch s t phai qua trai , (iv) In cac ch s t trai qua phai (ch s
0); (v) In ra t t ca cac c p s nguyn dng a v b (a b) sao cho: a 2 b 2 n . (vi) Nh p
s nguyn k. In ra k s th p phn ng sau d u th p phn (ch : 10k c th trn s).

Trang 13

BI TP MINH HA MN TIN HC C S A1

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 xng, (ii) s g n i xng, (iii) cc ch
s x p tng d n hay giam d n khng? (iv) t ng cac ch s cho n khi nho hn 10, (v) ch
s ln va nho nh t .
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 binh phng cua n s nguyn dng u tin, nhng (i) ch dng php + va phep
; (ii) Ch dng php +.

Trang 14

BI TP MINH HA MN TIN HC C S A1

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

Trang 15

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

Trang 16

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

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 TIN HC C S A1

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

n!
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 TIN HC C S A1
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 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.
Trang 20

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

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
#include
#include
#include
#include
#include

stdafx.h
<stdio.h>
<conio.h>
<iostream.h>
<stdlib.h>
<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 TIN HC C S A1
{
cout << a[i] << "

";

}
cout << "\n";
}
/***************************************************************/

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


#include
#include
#include
#include
#include
#include

stdafx.h
<stdio.h>
<conio.h>
<iostream.h>
<stdlib.h>
<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 TIN HC C S A1
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 TIN HC C S A1
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 TIN HC C S A1
{
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.

Trang 26

BI TP MINH HA MN TIN HC C S A1

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 TIN HC C S A1
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 TIN HC C S A1
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 TIN HC C S A1
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 mang n ph n t va k < n. In ra t ng ln nh t cua k ph n t lin ti p xu t hi n trn mang.
5. m s l ng cac ph n t khac nhau xu t hi n trong mang.
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 khoang t 1 k. (to mang 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 khoang cach
xa nh t gia 2 i m.
8. Mng a cha h s ca a thc

an x n an1 x n1 a0 . Nh p x. Tnh gi tr a thc.

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 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 d n
di nht xut hin trong mng. N u co nhi u mng cng di nht th ch cn in ra mt.

Trang 30

BI TP MINH HA MN TIN HC C S A1
5. Cho mang co n ph n t. Nh p m la s nguyn dng nho hn n. Chia mang lam 2 oa n a[0]
a[m 1] v a[m] a[n 1]. Khng dung thm mang phu . Chuy n ch cac ph n t thanh a[m]
a[n 1] a[0] a[m 1].
6. Mng a (k ph n t) v b (l ph n t) cha h s cua 2 a thc. Tnh tch ca 2 a thc 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)

Trang 31

BI TP MINH HA MN TIN HC C S A1

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 TIN HC C S A1
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];

Trang 33

BI TP MINH HA MN TIN HC C S A1
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 TIN HC C S A1
#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
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
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
if (IsMaxCol && IsMinRow)
printf("\n A[%d,%d] = %d la phan
ngua.",i+1,j+1,a[i][j]);
}
}

trong dong hay khong ?

lon nhat trong cot khong ?

phan tu yen ngua


tu yen

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 TIN HC C S A1
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 TIN HC C S A1
// 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 TIN HC C S A1

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.

Trang 38

BI TP MINH HA MN TIN HC C S A1

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 TIN HC C S A1
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 TIN HC C S A1
int KyTuXuatHienNhieuNhat(char str[],
{
int i, j, length = strlen(str);
char curchr;
// K t ang
int curcount;
// S ln xut hin
int max = 0;
// S ln xut hin

char &chr)
xt
ca k t ang xt
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
Xut: Nguyen Van A

VaN

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 TIN HC C S A1
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 TIN HC C S A1
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
#include
#include
#include

<stdio.h>
<conio.h>
<string.h>
<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--)
str[i] = str[i-1];
str[pos] = chr;
str[length+1] = '\0';

// y chui sang phi sau v tr pos


// a k t chr vo v tr pos
// 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 TIN HC C S A1
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 TIN HC C S A1
temp = nc/10;
// Ly phn nh
nc = nc%10;
c[clength++] = nc + 48;
}
if (temp>0)
c[clength++] = temp + 48;
c[clength] = '\0';

// Nu cn nh th a tip vo
// 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 TIN HC C S A1
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 TIN HC C S A1
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.
Trang 47

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

Trang 48

BI TP MINH HA MN TIN HC C S A1

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 TIN HC C S A1
2. Nhp mt s nguyn n. S dng quy in dy Fibonacy c di n.
V d:
Nhp: n
Xut: 1
Nhp: n
Xut: 1

= 2
1
= 5
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 TIN HC C S A1
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 TIN HC C S A1
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 TIN HC C S A1
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 TIN HC C S A1
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.
Tnh S x

x3 x5
x 2 n 1
.

...(1) n
3! 5!
(2n 1)!

Kim tra kt qu tm c khi n ln vi sinx


9. Nhp n. Tnh S 1

x2 x4
x 2n
.

...(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