Professional Documents
Culture Documents
Baitapnmlt 130119000117 Phpapp02 PDF
Baitapnmlt 130119000117 Phpapp02 PDF
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
#include <stdio.h>
int main (void)
{
printf ("\t1.
printf ("\t2.
printf ("\t3.
routine.\n");
printf ("\t4.
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
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
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
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 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
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;
}
}
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
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 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
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.
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
stdafx.h
<stdio.h>
<conio.h>
<iostream.h>
<stdlib.h>
<time.h>
Trang 22
BI TP MINH HA MN TIN HC C S A1
{
cout << a[i] << "
";
}
cout << "\n";
}
/***************************************************************/
stdafx.h
<stdio.h>
<conio.h>
<iostream.h>
<stdlib.h>
<time.h>
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++];
}
/* ... */
/********************************************************************/
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;
}
/* ... */
/*********************************************************************/
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 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
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 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.
Trang 31
BI TP MINH HA MN TIN HC C S A1
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");
}
}
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");
}
}
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]);
}
}
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");
}
}
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");
}
}
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
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;
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)
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>
// Gi hm chn k t , vo chui
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();
}
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();
}
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?
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
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
}
}
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)!
x2 x4
x 2n
.
...(1) n
2! 4!
(2n)!
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