1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bai giang mon Cơ sở lập trình

78 508 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 1,31 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

tài liệu tham khảo cho những người đang cần những kiến thức cơ bản về lập trình C++ Trong bộ môn Cơ sở lập trình CỦA TIẾN SĨ KIM. Chúc các bạn thành công. Xin chào và hẹn gặp lại các bạn trong những tài liệu tiếp theo.

Trang 1

[3] Ph m V n Dt, “K thu t l p trình C - C s và nâng cao”, NXB khoa h c k/ thu t, 2007

[4] Tr n &an Th ,“Ngôn ng l p trình C t p 1&2”, Tr ng &H KHTN &HQG TPHCM, 2005

[5] Tr n V n H o, Hu2nh Minh Trí, Phan T n Qu c, “Giáo trình tuy n t p các bài t p lâp trình

c n b n”, Tr ng & i H c Sài Gòn, 2011

Trang 2

Tìm chu i s2 trong chu i s1 tr v v trí chu i s2 trong chu i s1

int atoi(char *s);

&)i chu i s thành s ki u int

int atol(char *s);

&)i chu i s thành s ki u long

int atof(char *s);

&)i chu i s thành s ki u float

void flushall();

Xoá vùng m bàn phím, l nh này th ng c s d ng tr c các l nh nh p

li u nh gets ho c scanf

H to trên màn hình nh n i m g c trên bên trái làm i m g c, tr c hoành là tr c n"m ngang ch y t trái sang ph i, tr c tung là tr c th ng ng t trên xu ng d i Các t a màn hình th ng c ký ki u là x và y, v i x là ch s c t; còn y ch s hàng Góc trái bên trên

c a màn hình có t a (1:1); góc ph i bên d i có t a (80:25) – gi i h n này tùy thu c l i màn hình Ta có th di chuy n con tr' t i m t v trí m i trên màn hình b"ng l nh gotoxy(x,y)

Giá tr b ng màu

BLACK = 0

BLUE = 1

GREEN = 2

CYAN = 3

RED = 4

MAGENTA = 5

BROWN = 6

LIGHTGRAY = 7

DARKGRAY = 8

LIGHTBLUE = 9

LIGHTGREEN = 10

LIGHTCYAN = 11

LIGHTRED = 12

LIGHTMAGENTA = 13 YELLOW = 14

WHITE = 15

BLINK = 128 Cách ghi giá tr màu là chu i in hoa nh trên hay s t ng ng là t ng ng

L i nói u

C s l p trình là h c ph n u tiên, óng vai trò quan tr ng i v i các sinh viên thu c

các ngành Công ngh thông tin, Toán ng d ng, i n t vi n thông,… C s l p trình nh m

cung c p ki n th c n n t ng và các k n ng th c hành v l p trình cho sinh viên; C s l p

trình nh m giúp sinh viên h c t t các h c ph n v l p trình ti p theo Ngoài ra, nó c ng là n i

dung quan tr ng trong kh i ki n th c các k thi hoàn ch nh i h c và thi cao h c ngành

công ngh thông tin

Giáo trình c s l p trình này trình bày các v n Thu t toán, M u v ngôn ng l p

trình C/C++, C u trúc i u khi n, Ch ng trình con, quy, M ng, M t s ki u d li u có

c u trúc Giáo trình chia thành 7 ch ng g m các n i dung ki n th c theo c ng chi ti t

h c ph n C s l p trình c!a tr ng i h c Sài Gòn, kèm theo các thi m"u M#i ch ng

g m 3 ph n:

Ph n lý thuy t: $c trình bày ng%n g n, có các ví d minh ho

Ph n bài t p: G m nhi u bài t p $c chia làm hai m c c b n và luy n t p nâng

cao, bài t p có ánh d u * là bài t p khó dành cho sinh viên luy n t p thêm

Giáo trình này $c biên so n làm tài li u gi ng d y cho h c ph n C s l p trình

h i h c và cao &ng Quy n giáo trình này c ng có th làm tài li u tham kh o cho các giáo

viên ang gi ng d y ki n th c l p trình c n b n b c ph' thông, và giúp cho sinh viên t h c

có k t qu

Chúng tôi trân tr ng gi i thi u v i b n c quy n giáo trình C s l p trình này và hy

v ng r ng nó s( giúp cho vi c gi ng d y và h c t p môn C s l p trình $c thu n l$i h n

Cu i cùng, chúng tôi xin g i l i c m n chân thành n các ng nghi p trong khoa

công ngh thông tin tr ng i H c Sài Gòn ã có nhi u óng góp quý báu, ã cùng chúng

tôi chia s( n i dung t p bài gi ng C s l p trình này trong su t th i gian qua

Trang 3

Ch ng 1

THU T TOÁN

Trong ph m vi tài li u này, bài toán c quan ni m là vi c nào ó ta mu n máy tính

th c hi n, ch ng h n vi t m t dòng ch ra màn hình, gi i ph ng trình b c hai, qu n lí i m trong tr ng h c v.v…

Khi dùng máy tính gi i bài toán, ta c n quan tâm n hai y u t : a vào máy thông tin gì (Input) và c n l y ra thông tin gì (Output) Do ó phát bi u m t bài toán ta c n ph i

ch rõ Input và Output c a bài toán ó

Ví d 1.1:

Gi i ph ng trình b c nh t ax + b = 0

Input: Các giá tr th c a,b

Output: Nghi m là giá tr x ho c thông báo không có nghi m

Ví d 1.2:

Qu n lí l ng trong m t doanh nghi p

Input: Thông tin cá nhân c a t ng nhân viên trong doanh nghi p Output: Thông tin c n khai thác v m t nhân viên, m t phòng ban, hay toàn

doanh nghi p

Kh n ng khai thác máy tính ph thu c r t nhi u vào s hi u bi t c a ng i s d ng

Vi c gi i bài toán trên máy tính c ti n hành qua các b c sau:

unsigned *strlen(const char *str);

Xác nh chi u dài c a chu i str

char* strcpy(char *dest, const char * src);

Sao chép n i dung trong src vào trong dest Hàm tr v con tr' tr' t i a ch

u c a chu i ích (con tr' dest)

int strcmp(char *s1, char *s2);

(so sánh có phân bi t ch hoa và ch th ng)

Tr v k t qu so sánh hai chu i s1 và s2

N u giá tr tr v > 0 thì chu i s1 ch a chu i s1

N u giá tr tr v < 0 thì chu i s2 ch a chu i s1

N u giá tr tr v = 0 thì chu i s2 gi ng chu i s1

int stricmp(char *s1, char *s2);

(so sánh không phân bi t ch hoa và ch th ng)

Trang 4

Ki m tra c là ch s hay không ?

int isalower (int ct);

Ki m tra c là ch cái th ng hay không ?

B mã ASCII g$m 256 ký t c phân b nh sau:

-32 ký t u tiên là các ký t i u khi n không in c nh ký t enter (mã 13), ký tESC (mã 27), 32 là ký t kho ng tr(ng

-Các mã ASCII 33-47,58-64,91-96 và 123-127 là các ký t c bi t nh d u ch m, d u ph!y, d u cách, d u ngo c, d u móc, d u h'i,…

-Các mã ASCII 48-57 là 10 ch s -Các mã ASCII 65-90 là các ch cái hoa t A n Z

-Các mã ASCII 97-122 là các ch cái th ng t a n z

M i bài toán có th gi i b"ng nhi u ph ng pháp khác nhau Vi c ch n ph ng pháp

nào cho bài toán c n gi i quy t ph thu c ng i l p trình, tuy nhiên m t ph ng pháp t t là

ph ng pháp v a gi n d và cho hi u qu cao khi gi i bài toán ó

B c 3: Thi t k thu t toán

Thi t k thu t toán ph thu c vào b c l a ch n ph ng pháp gi i M i ph ng pháp

gi i có th t ng ng v i nhi u thu t toán khác nhau B c thi t k thu t toán là b c quan

tr ng nh t gi i m t bài toán M i thu t toán ch gi i m t bài toán nào ó, nh ng có th có

nhi u thu t toán khác nhau cùng gi i m t bài toán C n ch n m t thu t toán phù h p gi i

bài toán ã cho Thu t toán có th c bi u di#n b"ng ngôn ng t nhiên, mã gi , l u $-s $

kh i, hay b"ng m t ngôn ng l p trình c th

Khi l a ch n thu t toán ng i ta th ng quan tâm n các tài nguyên nh th i gian th c

thi trên máy tính, s l ng b nh c n dùng, Hai tài nguyên v th i gian và b nh th ng

mâu thu!n nhau, nói cách khác yêu c u v th i gian và b nh là t% l ngh ch nhau &i u này

òi h'i ng i l p trình ph i cân nh(c gi a hai yêu c u này Trong các lo i tài nguyên, ng i ta

quan tâm nhi u nh t n th i gian vì ó là d ng tài nguyên không tái t o c

Trong th c t , khi l a ch n thu t toán ng i ta còn quan tâm t i vi c vi t ch ng trình

cho thu t toán ó c d# dàng

Vi c thi t k và l a ch n thu t toán gi i m t bài toán c th c n c n c vào l ng tài

nguyên mà thu t toán òi h'i và l ng tài nguyên th c t cho phép

Vi c vi t ch ng trình là m t t)ng h p h u c gi a vi c l a ch n c u trúc d li u và

ngôn ng l p trình di#n t úng thu t toán

Khi vi t ch ng trình ta c n l a ch n m t ngôn ng b c cao, ho c h p ng , ho c

ngôn ng máy, ho c m t ph n m m chuyên d ng thích h p cho thu t toán ã l a ch n

Sau khi c vi t xong, ch ng trình v*n còn có th có nhi u l i khác nhau Các l i

c phân làm hai lo i là các l i v cú pháp và các l i v ng ngh+a

Vi t ch ng trình trong ngôn ng nào ta c n ph i tuân theo úng quy nh cú pháp c a

ngôn ng ó Ch ng trình d ch có th giúp ta phát hi n và thông báo y các sai sót v m t

cú pháp

Trang 5

Ch ng trình có th không cho k t qu úng m c dù ã không còn l i v cú pháp Các

l i này là l i v ng ngh+a & phát hi n các l i v ng ngh+a, c n ph i th ch ng trình b"ng cách th c hi n nó v i m t s b Input tiêu bi u ph thu c vào c thù c a bài toán Các b Input này g i là các b Test N u có sai sót, ta ph i s a ch ng trình r$i th l i Quá trình này c g i là hi u ch nh ch ng trình

B c 6: Vi t tài li u

Tài li u ph i mô t chi ti t bài toán, thu t toán, ch ng trình, k t qu th nghi m

và h ng d*n s d ng Tài li u này r t có ích cho ng i s d ng ch ng trình và cho vi c

xu t nh ng kh n ng hoàn thi n thêm

Các b c trên có th l p i l p l i nhi u l n cho n khi mà ta cho là ch ng trình

ã làm vi c úng (n

Hình 1.1 Các b c gi i bài toán b"ng máy tính

! " #$ %& $'

Thu t toán là m t chu i các ch d*n (hay các qui t(c) c n th c hi n theo t ng b c xác

nh nh"m gi i quy t m t v n , hay bài toán Thu t toán có th c mô t b"ng ngôn ng tnhiên, mã gi , s $, ho c th m chí là m t ngôn ng l p trình

Tr v s nguyên trong kho ng 0 n n-1

unsigned int rand();

Cho m t giá tr ng*u nhiên trong kho ng 1 32767

Trang 6

void gotoxy(int x, int y);

& a i m nháy n to x,y trên màn hình

void textcolor(int color)

u vào (Input): M i thu t toán có th không có ho c có m t s d li u ban u

u ra (Output): M i thu t toán ph i có ít nh t m t d li u k t qu

Tính xác +nh: Các ch d*n, qui t(c m i b c ph i rõ ràng

Tính k t thúc: Thu t toán ph i d ng sau m t s h u h n b c

Tính úng %n: Thu t toán ph i cho ra k t qu chính xác theo yêu c u c a bài

toán

Tính t'ng quát: Thu t toán ph i áp d ng c cho các bài toán cùng lo i

Tính kh thi: M i thu t toán ph i có th th c hi n thành công trong kho ng

th i gian h u h n

Nh ng thu t toán có các c tr ng trên g i là các thu t toán có l i gi i úng (các thu t

toán cho l i gi i g n úng nh : x p x , ng*u nhiên, heuristic, metaheuristic, th ng c g i

là các thu t gi i, và không c c p trong giáo trình này)

Trang 7

Cho dãy a g$m n s nguyên d ng ao,a1,a2, ,a n-1 Vi t m t ch ng trình hoàn ch nh th c hi n

Trang 8

#$ KI(M TRA TH)C HÀNH H*C PH+N C% S& L'P TRÌNH (90 phút- s 17)

Cho m ng có n phân s , gi thi t t s và m*u s c a m i ph n s là các s nguyên d ng CÂU 1 (2 i m)

10 2/3 8/6 10/12 7/2 10/4 5/2 7/10 13/11 8/12 4/6 OUTPUT

Cau 1 : 2/3 4/3 5/6 7/2 5/2 5/2 7/10 13/11 2/3 2/3 Cau 2 : 3

Cau 3 : 5 Cau 4 : 7/2 5/2 13/11

Trang 9

test 1 0 0 Ph ng trinh v s nghi m

test 3 1 3 Ph ng trinh có nghi m duy nh t x=3 test 4 1 -4 Ph ng trinh có nghi m duy nh t x=4

sai

#$ KI(M TRA TH)C HÀNH H*C PH+N C% S& L'P TRÌNH (90 phút- s 16)

Cho m ng m t chi u a ch a n s nguyên d ng (ki u unsigned long)

Hãy th c hi n các công vi c sau:

Trang 10

#$ KI(M TRA TH)C HÀNH H*C PH+N C% S& L'P TRÌNH (90 phút- s 15)

Cho m ng 1 chi u a ch a n s nguyên d ng (ki u unsigned long)

Hãy th c hi n các công vi c sau:

CÂU 1 (2 i m) Tìm giá tr l n nh t, giá tr nh' nh t c a m ng a

CÂU 2 (2 i m) Tìm t ng các ch s c a t t c các s c a m ng a

CÂU 3 (2 i m) Tìm s nguyên t l n nh t c a m ng a; n u m ng a không có s nguyên t nào thì xu t giá tr

10

101 11 33 44 55 66 77 88 97 102 OUTPUT

Cau 1: 102 11 Cau 2: 89 Cau 3: 101 Cau 4: 3

& u tiên s, th c hi n <bi u th c 1>, sau ó ki m tra < i u ki n> N u < i u ki n> là

úng thì s, th c hi n <công vi c> r$i n th c hi n <bi u th c 2>; sau khi th c hi n xong <bi u

th c 2> thì c u trúc này quay tr l i ki m tra < i u ki n> và b(t u m t vòng l p m i,…c

nh th n khi < i u ki n> nh n giá sai thì c u trúc l p này s, k t thúc

L u ý:

<bi u th c 1> th ng là phép gán giá tr+ kh i u c!a bi n i u khi n vòng l-p, <bi u

th c 2> th ng là phép gán thay 'i giá tr+ c!a bi n i u khi n vòng l-p, còn < i u ki n>

th ng là m t phép so sánh bi n i u khi n vòng l-p v i s l n l-p Trong quá trình l-p l i

này, <công vi c> n m t lúc nào ó ph i nh n giá tr+ sai vòng l-p k t thúc

sai úng

Trang 11

what if it can not buy happiness

do time on a man who is not willing to waste their time on you

it yourself that makes you happy or unhappy

a someone who reaches for your hand and touches your heart

CAU 5:

buy can good happiness if is it money not what

a do is man not not on on their time time to waste waste who willing you your

happy in is is it makes or that unhappy what you yourself

a and for friend hand heart is reaches someone touches true who your your

H;T

Trang 12

#$ KI(M TRA TH)C HÀNH H*C PH+N C% S& L'P TRÌNH (90 phút- s 14)

VI;T CH<=NG TRÌNH HOÀN CH>NH TH?C HI@N CÁC YÊU CAU SAU:

Cho file THI.INP có nhi u chu i, m i chu i trên m t dòng, m i chu i ch a các ký t ch cái

th ng ti ng Anh và kho ng tr(ng, gi a các t có úng m t kho ng tr(ng, u và cu i m i chu i không có kho ng tr(ng

Hãy l p trình th c hi n các công vi c sau:

what good is money if it can not buy happiness

do not waste your time on a man who is not willing to waste their time on you

it is what is in yourself that makes you happy or unhappy

a true friend is someone who reaches for your hand and touches your heart THI.OUT

CAU 1:

do not waste your time on a man who is not willing to waste their time on you

77 CAU 2:

N u < i u ki n> là úng thì s, th c hi n <công vi c>, sau khi th c hi n xong <công

vi c> thì s, quay tr l i ki m tra < i u ki n> và b(t u m t vòng l p m i,…c nh v y vòng

l p ti p t c n khi nào < i u ki n> nh n giá tr sai thì k t thúc

Rõ ràng v i c u trúc này thì trong <công vi c> ph i có m t giai o n mà ó < i u

ki n> ph i mang giá tr sai vòng l p k t thúc nh ã phân tích trên

úng

i u ki n

sai

Trang 13

happiness buy not can it if money is good what

you on time their waste to willing not is who man a on time your waste not do

unhappy or happy you makes that yourself in is what is it

heart your touches and hand your for reaches who someone is friend true a

Trang 14

#$ KI(M TRA TH)C HÀNH H*C PH+N C% S& L'P TRÌNH (90 phút- s 13)

VI;T CH<=NG TRÌNH HOÀN CH>NH TH?C HI@N CÁC YÊU CAU SAU:

Cho file THI.INP có nhi u chu i, m i chu i trên m t dòng, m i chu i ch a các ký t ch cái

th ng ti ng Anh và kho ng tr(ng, gi a các t có úng m t kho ng tr(ng, u và cu i m i chu i không có kho ng tr(ng

Hãy l p trình th c hi n các công vi c sau:

CÂU 1 (2.0 ):

& m xem file THI.INP có t t c bao nhiêu t ?

CÂU 2 (2.0 ):

Tìm t n s xu t hi n c a m i ký t (khác kho ng tr(ng) trong file THI.INP? (Ký t a xu t

hi n bao nhiêu l n ? Ký t b xu t hi n bao nhiêu l n ? )

K t qu ghi vào file THI.OUT theo c u trúc nh minh h a b test tham kh o sau

BB TEST THAM KHCO THI.INP

what good is money if it can not buy happiness

do not waste your time on a man who is not willing to waste their time on you

it is what is in yourself that makes you happy or unhappy

a true friend is someone who reaches for your hand and touches your heart THI.OUT

CAU 1:

54 CAU 2:

công vi c

Trang 16

#$ KI(M TRA TH)C HÀNH H*C PH+N C% S& L'P TRÌNH (90 phút- s 12)

VI;T CH<=NG TRÌNH HOÀN CH>NH TH?C HI@N CÁC YÊU CAU SAU:

Cho file THI.INP ch a các s nguyên trong ph m vi 0 n 99999 Các s cách nhau ít nh t m t kho ng tr(ng

CÂU 1 (2.0 )

THI.INP có bao nhiêu s chính ph ng ? Bao nhiêu s hoàn ch nh ? Bao nhiêu s Armstrong

? Bao nhiêu s nguyên t ? Bao nhiêu s i x ng ?

CÂU 2 (2.0 )

Trong THI.INP tìm s chính ph ng l n nh t, s hoàn ch nh l n nh t, s Armstrong l n nh t,

s nguyên t l n nh t, s i x ng l n nh t (s có tính ch t nào không c tìm th y thì giá tr

THI.INP có bao nhiêu b 3 s x,y,z (x < y < z) th'a mãn x2 + y2 = z2 ?

K t qu câu 1 g$m 5 s nguyên c ghi trên m t dòng; là k t qu t ng ng tìm c

K t qu câu 2 g$m 5 s nguyên c ghi trên m t dòng; là k t qu t ng ng tìm c

K t qu câu 3 g$m 2 s nguyên c ghi trên m t dòng; là k t qu t ng ng tìm c

K t qu câu 4 g$m 1 s nguyên; là k t qu t ng ng tìm c

K t qu câu 5 g$m 1 s nguyên; là k t qu t ng ng tìm c

K t qu ghi vào file THI.OUT

BB TEST THAM KHCO THI.INP

Trang 17

Mô t ho t ng

N u < i u ki n> là úng thì s, th c hi n <công vi c 1>, ng c l i n u < i u ki n> là sai thì <công vi c 2> s, c th c hi n

else // b=0 và c-0

cout<<”Pt có vô nghi m”;

else // a=0 và b-0 {

else // Delta>=0

if (Delta=0) { x=-b/(2*a);

cout << “Pt có nghi m kép: ”<<x;

} else

Trang 18

#$ KI(M TRA TH)C HÀNH H*C PH+N C% S& L'P TRÌNH (90 phút- s 11)

VI;T CH<=NG TRÌNH HOÀN CH>NH TH?C HI@N CÁC YÊU CAU SAU:

Cho file THI.INP ch a các s nguyên trong ph m vi 0 n 99999 Các s cách nhau ít nh t m t kho ng tr(ng

CÂU 1 (2.0 )

S nguyên t Palindrome là s mà khi vi t các ch s c a nó theo chi u t trái qua ph i hay t

ph i qua trái thì ta cùng c m t k t qu Ví d 2, 3, 151, 19891, 19991 là các s nguyên tPalindrome & m xem file THI.INP có bao nhiêu s nguyên t ? Bao nhiêu s nguyên tPalindrome?

S nguyên t i x ng là m t s nguyên t b"ng trung bình c ng c a hai s nguyên t li n tr c

và li n sau nó V i là s nguyên t th n, m t s nguyên t là i x ng khi tho :

& m xem file THI.INP có bao nhiêu s nguyên t i x ng ?

CÂU 4 (2.0 )

& m xem file THI.INP có bao nhiêu s nguyên t khác nhau (m i giá tr nguyên t ch c tính là m t l n)

CÂU 5 (2.0 )

S Mersenne là s bi u di#n c d i d ng 2n − 1 S nguyên t Mersenne là s th'a hai tính

ch t: là s Mersenne và là s nguyên t Ví d 31 là s nguyên t Mersenne vì 31 = 25 − 1, và

31 là s nguyên t L u ý r"ng, trong bi u di#n s Mersenne, n u n là s nguyên t thì 2 n – 1 là

s nguyên t Mersenne & m xem file THI.INP có bao nhiêu s nguyên t Mersenne ?

K t qu ghi vào file THI.OUT theo c u trúc nh minh h a b test tham kh o sau

BB TEST THAM KHCO THI.INP

& u tiên s, th c hi n <bi u th c 1>, sau ó ki m tra < i u ki n> N u < i u ki n> là

úng thì s, th c hi n <công vi c> r$i n <bi u th c 2>; sau khi th c hi n xong <bi u th c 2>

thì c u trúc này quay tr l i ki m tra < i u ki n> và b(t u m t vòng l p m i,…c th v y

n khi < i u ki n> nh n giá tr sai thì c u trúc l p này s, k t thúc

N u < i u ki n> là úng thì s, th c hi n <công vi c>, sau ó quay tr l i th c hi n

< i u ki n> Vòng l p while này s, k t thúc khi < i u ki n> là sai

Trang 19

<công vi c>;

} while (< i u ki n>);

Tr c h t <công vi c> s, c th c hi n, sau ó ki m tra < i u ki n> N u < i u ki n>

là úng thì quay tr l i th c hi n <công vi c> và b(t u m t vòng l p m i Vòng l p do while này s, k t thúc khi < i u ki n> nh n giá tr sai

Ví d 1.13:

Vi t ch ng trình ki m tra password (s d ng ngôn ng s mã gi )

do { cin>>p;

if (p - password) cout<< “B n ã nh p sai password Hãy nh p l i!!”

Cho m ng g$m n s nguyên d ng Hãy th c hi n các yêu c u sau:

a.Ki m tra xem trong m ng có t$n t i s chính ph ng nào hay không ? N u có tr v giá tr 1,

n u không có tr v giá tr 0

b.Tìm k giá tr khác nhau l n nh t c a m ng

c.Hãy tìm h ng c a các ph n t

CÂU 4 (3 i m)

Cho file v n b n songuyen.inp ch a các s nguyên d ng

c & nh ngh+a s i x ng là s mà khi vi t các ch s c a nó theo chi u ng c l i thì ta c

chính s ó; ch ng h n 6, 131, 1991 là các s i x ng & m xem file songuyen.inp ch a

bao nhiêu s i x ng ?

d & m xem trong file songuyen.inp có bao nhiêu s v a là s nguyên t v a là s i x ng ?

K t qu xu t ra file songuyen.out ghi hai s nguyên là k t qu tìm c

Trang 20

c.Tìm các c p s nguyên t sinh ôi trong dãy (là các c p s mà kho ng cách giá tr c a chúng

a Tìm s l n nh t và s l n th nhì trong file songuyen.inp

b S nguyên t x c g i là s nguyên t i x ng n u nó b"ng trung bình c ng c a hai snguyên t k tr c (ký hi u là p) và k sau c a nó (ký hi u là q), t c là p+q=2*x & m xem

trong file songuyen.inp có bao nhiêu s nguyên t i x ng ? Ghi k t qu vào file ketqua.out g$m hai dòng:

-Dòng th nh t ghi s l n nh t và s l n th nhì

-Dòng th hai ghi s l ng s nguyên t i x ng tìm c

Ví d : songuyen.inp

n ph c t p không gian c a thu t toán & ph c t p th i gian và không gian c a m t

thu t toán là m t v n h t s c quan tr ng i v i các thu t toán & ph c t p th i gian c a

m t thu t toán có th là m t micro giây, m t phút, m t n m ho c m t t n m, là h t s c

quan tr ng vì i u này nói lên tính kh thi c a m t thu t toán T ng t , dung l ng b nh

mà thu t toán òi h'i ph i là kh d ng gi i m t bài toán,vì v y ph c t p không gian

c.ng c n ph i tính n Vì vi c xem xét ph c t p không gian g(n li n v i các c u trúc

d li u c bi t c dùng th c hi n thu t toán nên trong tài li u này ta s, ch t p trung

xem xét ph c t p th i gian

& ph c t p th i gian c a m t thu t toán th ng ph thu c vào các y u t nh k/

n ng l p trình, ch ng trình d ch, t c th c hi n các phép tính trên máy tính, kích th c c a

d li u u vào,…

Do s l ng các phép tính và kích th c d li u u vào trong gi i thu t là không ph

thu c vào t c tính toán c a các máy tính c th nên ph c t p th i gian c a m t thu t

toán c bi u di#n qua s l ng các phép toán c dùng b i thu t toán ó khi các d li u

u vào có m t kích th c xác nh H n n a, phân tích t t c các phép toán thành các phép

tính bit s c p mà máy tính s d ng là i u r t ph c t p Do ó ta có th i n khái ni m v

th i gian thu t toán nh sau

Th c o th i gian c a m t thu t toán là m t hàm bi u di#n s phép toán s c p (phép

toán s h c, phép toán logic, phép so sánh) trong khi th c hi n thu t toán và th ng ph thu c

kích th c các giá tr d li u u vào là n, kí hi u hàm này là T(n)

Ví d 1.14:

N u th i gian th c hi n m t thu t toán là T1(n) = n2 và th i gian th c hi n c a m t

thu t toán khác là T2(n) = 50n thì khi n l n th i gian th c hi n c a gi i thu t T2 rõ ràng

nhanh h n T1, ch ng h n n=50 thì T1(n) = 502 = T2(n) nh ng v i n>50, T1(n) = n2 > 50n=T2(n)

Khi ó, th i gian th c hi n thu t toán t l thu n v i n hay t l thu n v i n2 c.ng cho ta m t

cách ánh giá t ng i v t c th c hi n c a thu t toán ó khi n khá l n

Do ó, ta th ng quan tâm n t ng c a hàm T(n) khi n khá l n Sau ây, ta s,

c p n các khái ni m liên quan n v n này Cách ánh giá th i gian th c hi n c a thu t

toán c l p v i máy tính và các y u t liên quan t i máy tính nh v y s, d*n t i khái ni m

g i là ph c t p c a thu t toán

Trang 21

- Th i gian th c hi n thu t toán v i b d li u t)ng quát

- S d ng các công c xác su t ánh giá th i gian th c hi n

- & ph c t p tính toán c a thu t toán

do ó f(n) 0 18n3 v i m i n 11 nên f(n)=O(n3)

Hình 1.14 &$ th minh h a cho khái ni m O

#$ THI C% S& L'P TRÌNH (90 phút- s 08)

CÂU 1 (2 i m)

Vi t ch ng trình nh p m t thông tin ngày (ngày/tháng/n m) - là các s nguyên d ng)

Hãy cho bi t ngày ó là ngày th bao nhiêu trong n m ? (ngày 1 tháng 1 là ngày th nh t c a

a.Hãy tìm phân s có giá tr l n nh t

b.Hãy s(p x p các phân s theo chi u t ng d n

CÂU 4 (3 i m)

Cho m t file v n b n có tên là “DAYSO.INP” có c u trúc nh sau:

-Dòng u ghi s nguyên d ng n

-Trong các dòng ti p theo ghi n s nguyên d ng

Hãy c d li u t file và th c hi n các công vi c sau

a.Tìm giá tr l n nh t c a n s có trong dãy

b.Hãy m s l ng s nguyên t có trong dãy

Trang 22

#$ THI C% S& L'P TRÌNH (90 phút- s 07)

CÂU 1 (2 i m)

Gi s n ≥1 và x là s th c Hãy vi t hàm tính giá tr c a bi u th c sau ây :

n x x

x x n x S

n n

++++

−++++

−++

=

321)1(

32121),(

3 2

Cho dãy n s nguyên d ng a1, a2, , a n Hãy vi t hàm th c hi n các công vi c sau:

a Tìm chi u dài c a o n con liên ti p dài nh t ch a toàn s ch4n N u không có thì tr vgiá tr 0

b Tìm các s nguyên t sao cho khi o ng c các ch s c a nó ta c.ng thu c m t snguyên t (ví d s 13, s 149, )

CÂU 4 (3 i m)

Cho file v n b n songuyen.inp ch a các s nguyên d ng

a & nh ngh+a s i x ng là s mà khi vi t các ch s c a nó theo chi u ng c l i thì ta c chính s ó; ch ng h n 6, 131, 1991 là các s i x ng & m xem file songuyen.inp ch a bao nhiêu s i x ng ?

b & m xem trong file songuyen.inp có bao nhiêu s v a là s nguyên t v a là s i x ng ?

K t qu xu t ra file songuyen.out ghi hai s nguyên là k t qu tìm c

& nh ngh+a t ng t các kí pháp l n t ng ng, thay ≤, ≥ b"ng <, > t ng ng

Xem thêm Thomas’s book, ch ng 3, m c 3.1

Hình 1.15 &$ th minh h a cho khái ni m Ω

Hình 1.16 &$ th minh h a cho khái ni m Θ

Trang 23

L u ý:

Kí pháp O (O l n) ánh giá tr ng h p x u nh t, quan tâm t i hàm c n trên nh' nh t

Kí pháp Ω (Omega l n) ánh giá tr ng h p t t nh t, quan tâm t i hàm c n d i l n nh t

Kí pháp Θ (theta) ánh giá tr ng h p trung bình, cùng v i kí pháp O (O l n) cho ánh giá chung v ph c t p thu t toán.

Quan h gi a các hàm qua các ký pháp O, Ω, hay Θ c g i là quan h ti m c n Sau ây

Tính b c c u :

f(n) = Θ(g(n)) & g(n) = Θ(h(n)) f(n) = Θ(h(n)) f(n) = O(g(n)) & g(n) = O(h(n)) f(n) = O(h(n)) f(n) = Ω(g(n)) & g(n) = Ω(h(n)) f(n) = Ω(h(n))

Ch ng h n thu t toán gi i ph ng trình b c nh t, b c hai…

Hàm logn (logarit – O(logn))

Các thu t toán có th i gian th c hi n t ng theo kích th c d li u vào v i t c hàm logarit

Ch ng h n thu t toán tìm ki m trên dãy s ã c s(p x p

x x n x S

n

+++++++++++

=

321

32121),(

3 2

a.Hãy cho bi t có bao nhiêu kh i l p ph ng có giá tr c a các m t là các s khác nhau ?

b.Hãy cho bi t giá tr nào xu t hi n nhi u l n nh t ? Bao nhiêu l n ?

H t

Trang 24

cout<<test(a,b,c)+a+b+c;

} int test(int a, int &b, int &c) { a=a+1;b=b+2;c=c+3;

Cho m t dãy g$m n ph n t nguyên d ng Vi t các hàm th c hi n các công vi c sau:

a.Tìm giá tr nh' nh t c a dãy

b.Hãy m xem trong dãy có bao nhiêu s hoàn ch nh ? (s hoàn ch nh là s b"ng t)ng các c s th c s c a nó, ch ng h n 6 là s hoàn ch nh vì 6 = 1 + 2 + 3)

c.Tìm s nguyên d ng l n nh t là c s c a t t c các s c a dãy

d.Tìm chi u dài c a dãy con t ng dài nh t

CÂU 4 (2 i m)

Hãy tìm các s p,q (0<p<q<n) sao cho t)ng các c s th c s c a p b"ng q và t)ng các c

s th c s c a q b"ng p Tìm m t thu t toán hi u qu khi n l n

H t

Ch ng h n thu t toán tìm ki m (ph n t , max, min…) trên m t dãy s

Hàm nlogn (tuy n tính logarit – O(nlogn))

Các thu t toán gi i các bài toán b"ng cách chia thành các bài toán nh' h n, gi i m t cách c

l p r$i h p l i nh n c k t qu c a bài toán l n

Ch ng h n thu t toán s(p x p nhanh m t dãy s

Hàm n 2 ( a th c – O(nm))

Các thu t toán v i các thao tác c th c hi n v i trong các vòng l p l$ng nhau Tr ng h p

t)ng quát nm Thông th ng ánh giá thu t toán n n=3,4

Ch ng h n thu t toán nhân ma tr n

Hàm 2 n (l.y th a – O(mn))

&ây là l p thu t toán có ph c t p l n Thông th ng là các thu t toán quy v i l ng d

li u u vào l n Khi n l n, có th xem nh bài toán không gi i c theo ngh+a là không

nh n c l i gi i trong m t th i gian h u h n

Ch ng h n thu t toán tháp Hà N i

Thu t toán v i th i gian th c hi n có c p hàm a th c c coi là nh ng thu t toán hi u qu

N u m t bài toán có ph c t p là a th c (ngh+a là có thu t toán th i gian a th c gi i) thì

ta có th tìm c l i gi i úng cho bài toán trong m t kho ng th i gian ch p nh n c Nh ng

bài toán nh v y c g i là d# gi i Bên c nh ó còn r t nhi u bài toán mà cho n nay v*n

ch a tìm c thu t toán a th c gi i, mà ng i ta th ng g i là các bài toán khó gi i Các

thu t toán gi i úng hi n bi t i v i các bài toán nh v y u có th i gian tính hàm m & gi i

nh ng bài toán nh v y trong th i gian thích h p, nên phát tri n thu t toán theo h ng ti p c n

các thu t toán g n úng

& có thói quen l p trình t t, khi i di n v i m t v n bài toán, sinh viên nên chú ý

n v n tìm thu t toán hi u qu cho bài toán

B ng sau ây cho ta th y s t ng tr ng c a các hàm ánh giá ph c t p c a thu t

Trang 25

Suy ra: f(x)=O(g(x)

Xác nh ph c t p tính toán c a m t thu t toán có th d*n t i nh ng bài toán ph c

t p Tuy nhiên trong th c t , i v i m t s thu t toán, ta có th phân tích c ph c t p c a

m t thu t toán b"ng m t s quy t(c sau ây

)) ( ( ) (

)) ( ( ) (

)) ( ( ) ( 0

) ( ) ( lim

kxd

n g n f const

n g n f

n g O n f

n g n fn

#$ THI C% S& L'P TRÌNH (90 phút- s 04)

VI;T CH<=NG TRÌNH HOÀN CH>NH TH?C HI@N CÁC YÊU CAU SAU:

Câu 1 (2 i m)

Cho S s, c tính theo công th c S=1+3+5+ +(2n+1) v i n 1 0 và s nguyên M

Hãy tìm giá tr n nh' nh t sao cho S > M v i M c cho tr c

Cho dãy n s nguyên d ng Hãy vi t các hàm th c hi n các công vi c sau:

a S(p x p các s nguyên t trong dãy t ng, còn các s khác v*n gi nguyên giá tr và v trí

b Xóa t t c các s nguyên t trong dãy

Thông tin cho n thí sinh trong m t k2 thi tuy n sinh cao h c nh sau:

- S báo danh (chu i, t i a 8 ký t )

- H và tên (chu i, t i a 32 ký t )

- &i m ngo i ng (s - &i m môn c s (s nguyên)

- &i m môn chuyên ngành (s nguyên)

Hãy th c hi n các công vi c sau ây :

a Hãy mô t c u trúc cho bài toán

b Vi t hàm nh p thông tin cho n thí sinh

c Vi t hàm tìm nh ng thí sinh có i m thi môn ngo i ng 1 5 và có t)ng i m môn c s và

môn chuyên ngành 1 12

H;T

Trang 26

Cho dãy n s nguyên d ng ao,a1,…,a n-1 Hãy vi t các hàm th c hi n các công vi c sau:

a & m xem trong m ng có bao nhiêu s nguyên t có hai ch s ?

b Bi n )i các s c a m ng v m ng toàn s nguyên t theo nguyên t(c: Các s không ph i là

x x x n S

n n

1

2

11)1(

3

12

112

111),

3 2

+++

−+

−++++

T1(n) = O(f(n)) và T2(n) = O(g(n)) Thu t toán P g$m vi c th c hi n P1 r$i ti p theo n P2 khi

ó th i gian thu t toán P s, là T(n) = O(max(f(n), g(n))

Ví d 1.20:

Thu t toán P1 có th i gian th c hi n T1(n)=O(n2) và P2 có th i gian th c hi n T2(n)=O(n3) Gi

s thu t toán P g$m vi c th c hi n P1 rôì th c hi n P2 Theo quy t(c c ng, th i gian th c hi n

c a P là T(n)=O(max(n2,n3))=n3

N u T1(n) và T2(n) là th i gian th c hi n c a hai thu t toán P1và P2 và T1(n) = O(f(n)), T2(n) =

O(g(n)) thì th i gian th c hi n P1và P2 l$ng nhau là T(n) = O(f(n).g(n))

Tr ng h p c th th ng g p c a quy t(c nhân

N u thu t toán P c th c hi n b"ng cách th c hi n n l n thu t toán P’ thì ph c t p c a

thu t toán P là T(n) b"ng tích n l n ph c t p T’ c a thu n toán P’, t c là T(n) = n T’(n)

Trong h c ph n c s l p trình này, khi vi t xong m t ch ng trình cho m t v n bài

toán thì sinh viên th ng ch th ch ng trình c a mình v i m t vài d li u u vào và th y k t

Trang 27

Q ; R F (9 +, E $'

& ki m tra tính úng c a m t thu t toán, ch ng trình, ta c n ki m th l i thu t toán

và ch ng trình qua m t s b test m*u; t ó có th phát hi n sai sót ho c có th c i ti n

c m t ch ng trình hi u qu h n v m t th i gian ho c không gian l u tr d li u,… Các

b test m*u c n ph i có tính ch n l c, có kh n ng phát hi n l i cao; các b test không nên quá

ph c t p c.ng không nên quá n gi n Vi c tìm ra các b test m*u t t ki m th th ng là công o n thú v và m t nhi u th i gian

& ki m tra tính úng c a m t thu t toán, ch ng trình, ta s d ng toán h c

i v i thu t toán quy: dùng quy n p

i v i thu t toán không quy: tính úng n"m các vòng l p, s d ng b t bi n vòng

Là l p các bài toán gi i c b"ng thu t toán n nh (deterministic) trong th i gian

a th c &ây là l p các bài toán th c t gi i c

Ch ng h n các thu t toán thu c l p P nh S(p x p; Nhân ma tr n, Tìm ng i ng(n

nh t,…

L p NP:

Là l p các bài toán gi i c b"ng thu t toán không n nh (nondeterministic) trong

th i gian a th c, còn n u gi i b"ng thu t toán n nh thì ph c t p c a nó là hàm m

Ch ng h n các thu t toán thu c l p NP nh : X p balo, tháp Hà N i, bài toán phân ho ch

m t t p h p

Nhi u l p ph c t p c nh ngh+a thông qua khái ni m phép quy v M t phép

quy v là m t bi n )i t m t bài toán A thành m t bài toán B Khái ni m này cho bi t bài toán

322

−+

−++

+

=

n n x x

Cho dãy a g$m n ph n t là các s nguyên Hãy vi t các hàm th c hi n các công vi c sau:

a & m s các o n con liên ti p t ng

Xây d ng c u trúc cho bài toán qu n lý các s thuê bao i n tho i b"ng c u trúc m ng M i

ph n t ch a các thông tin: h tên (chu i, t i a 32 ký t ), a ch (chu i, t i a 48 ký t ), s

i n tho i (chu i, t i a 11 ký t )

Vi t các hàm nh p, xu t và tìm h tên, a ch c a ch thuê bao khi bi t s i n tho i là X

H;T

Trang 28

c Hãy s(p x p sao cho các s ch4n v u m ng, các s l5 v cu i m ng

d Tìm dãy con liên ti p dài nh t ch a toàn các s nguyên t

b Hãy cho bi t có bao nhiêu kh i l p ph ng có giá tr c a các m t là các s khác nhau ?

c Hãy cho bi t giá tr nào xu t hi n nhi u l n nh t ? Bao nhiêu l n ?

H;T

B là khó h n hay b"ng bài toán A N u bài toán A có th c gi i b"ng thu t toán cho bài toán

B thì A không khó h n B, và ta nói A quy v B Có nhi u ki u quy v khác nhau, tùy theo

ph ng pháp quy v , ch ng h n nh phép quy v Cook, phép quy v Karp, phép quy v Levin,

và tùy theo ph c t p c a phép quy v , ch ng h n nh quy v trong th i gian a th c, ho c

quy v trong b nh lôgarit

Phép quy v ph) bi n nh t là quy v trong th i gian a th c &i u này có ngh+a là thu t

toán quy v ch y trong th i gian a th c Ví d nh bài toán tính bình ph ng c a m t s

nguyên có th c quy v bài toán nhân hai s nguyên Có ngh+a là thu t toán nhân hai s

nguyên có th dùng tính bình ph ng m t s b"ng cách dùng s nguyên c n tính bình ph ng

làm c hai th a s cho thu t toán nhân s Do ó, tính bình ph ng không khó h n phép nhân,

b i vì tính bình ph ng có th quy v phép nhân

Bài toán A quy v trong th i gian a th c t bài toán B, kí hi u A ∝ B, n u m t khi B

gi i c b"ng thu t toán n nh a th c thì A c.ng gi i c b"ng thu t toán n nh a

th c, do ó A “d# h n” B

Bài toán A t ng ng a th c v i B (A ~ B ) n u A ∝ B và B ∝ A

& nh ngh+a trên d*n t i khái ni m khó cho m t l p ph c t p

MV5 W

M t bài toán A là khó cho l p bài toán NP n u m i bài toán trong l p NP có th quy

v A Khi ó, không có bài toán nào trong l p NP là khó h n A do m t thu t toán cho A có th

gi i b t kì bài toán nào trong l p NP T p h p các bài toán khó cho lóp NP là t p h p các bài

toán NP-khó

MV(X (+

N u bài toán A n"m trong NP và là khó cho NP, thì A là y cho NP &i u này có

ngh+a là A là bài toán khó nh t trong NP Do có th có nhi u bài toán cùng khó, có th nói

là A là m t trong nh ng bài toán khó nh t trong NP Do v y, l p NP- y ch a nh ng bài

toán khó nh t trong NP, theo ngh+a chúng là nh ng bài toán có nhi u kh n ng nh t không gi i

c trong P Do bài toán P = NP v*n ch a c gi i, n u có th quy m t bài toán NP- y

T ng t nh v y, do m i bài toán trong NP u có th quy v các bài toán NP- y , n u có

th gi i c m t bài toán NP- y trong th i gian a th c thì P = NP

Trang 29

BT1-7

Cho s t nhiên n và m t s th c x Hãy tính t'ng sau:

S(n,x) = sin x + sin(sin x) + + sin (sin( (sin(sin x)) )) n l n sin

b.In danh sách nh ng nhân viên có m c l ng c b n th p nh t

c.&ê8m sô8 l 6ng nhân viên có m c th ng >= 1200000

d.In danh sách các nhân viên t ng dâ9n theo phòng ban, n u phòng ban trùng nhau thì gia:m dâ9n

theo mã nhân viên

e.Câ6p nhâ 6t t ng l ng cu:a tâ8t ca: ca8c nhân viên lên 5%

BT7-4

Cho n hình ch nh t có các c nh song song v i các tr c t a , m i hình ch nh t bi t to

d i trái, trên ph i là x1[i],y1[i],x2[i],y2[i] (i=1 n) Hãy tính di n tích c a hình c ph b i N

hình trên

BT7-5

a.Vi t ch ng trình t o m t file v n b n có tên là “SONGUYEN.INP” ch a n s nguyên ng*u

nhiên trong kho ng t 1 n 32767, m i dòng ghi 10 s

Hãy m xem trong file SONGUYEN.INP có bao nhiêu s nguyên t , bao nhiêu s chính

ph ng? bao nhiêu s hoàn ch nh K t qu ghi vào file v n b n “SONGUYEN.OUT”

b.Cho file ch a các ký t ; trong ó m i ký t cách nhau úng m t kho ng tr(ng Hãy t o ra file

ch a mã ASCII c a t ng ký t ó, m i dòng ghi úng 10 s

c.Cho file ch a n s th c nh' h n 1000, m i s th c có úng 2 s ph n th p phân Hãy t o

file ch a các s chính ph ng t file các s th c này

BT7-6.

Hãy t o file ch a các s nguyên t nh' h n 1 tri u Cho m t file ch a các ký t ch cái (có th

là ch hoa ho c ch th ng), m i ký t cách nhau ít nh t m t kho ng tr(ng Hãy cho bi t t n

s xu t hi n c a m i ký t

BT7-7.

Cho hai file v n b n SOLIEU1.INP, SOLIEU2.INP ch a các s nguyên ã c s(p t ng d n

Hãy tr n hai file này thành m t file v n b n SOLIEU.OUT mà các ph n t c.ng c s(p t ng

d n (không dùng bi n m ng)

Trang 30

Vi t ch ng trình cho các bài toán sau ây BT7-1

Khai báo ki u d li u phân s , vi t ch ng trình th c hi n các công vi c sau:

a Nh p, xu t phân s Khi xu t thì phân s luôn d ng t i gi n

b T i gi n m t phân s

c Tính t)ng, hi u, tích, th ng hai phân s , và ngh ch o m t phân s khác không

d Quy $ng hai phân s

Cho m t danh sách l u thông tin c a các nhân viên trong m t công ty, thông tin g$m:

- Mã nhân viên (chu i, t i a là 8 ký t )

- H và tên (chu i, t i a là 20 ký t )

- N m sinh (sô8 nguyên)

- Phòng ban (chu i, tô8i a 10 ký t )

- L ng c b n (s nguyên)

- Th ng (s nguyên)

- Th c lãnh (s nguyên, trong ó th c lãnh = l ng c b n + th ng ) Hãy th c hi n yêu c u sau:

a.Tính t)ng th c lãnh tháng c a t t c nhân viên trong công ty

Khi vi t ch ng trình ta không c s d ng b t c ký hi u nào khác ngoài các ký t trên

T khoá : T khóa là t có ý ngh+a xác nh dùng khai báo các ki u d li u, vi t các toán

t và vi t câu l nh… Trong C có các t khoá sau:

asm const else for interrupt return sizeof void

break continue enum goto long short switch volatile

case default extern huge near static typedef while

cdecl do far if pascal struct union

char double float int register signed unsigned

Các t khóa ph i vi t b"ng ch th ng Không c dùng t khoá t tên cho các h"ng,

bi n, m ng, hàm, …

Tên : Khái ni m tên r t quan tr ng trong quá trình l p trình, nó không nh ng th hi n rõ ý

ngh+a trong ch ng trình mà còn dùng xác nh các i t ng khác nhau khi th c hi n

ch ng trình Tên th ng c t cho h"ng, bi n, m ng, hàm, con tr', nhãn, tên file, tên struct

… Chi u dài t i a c a tên là 32 ký t

Tên bi n h p l là m t chu i ký t liên t c g$m: Ký t ch , s và d u g ch d i Ký t u

c a tên ph i là ch ho c d u g ch d i Khi t tên không c t trùng v i các t khóa

Ví d 2-1

Các tên h p l : delta, a_1, x1, Num_ODD, Case

Các tên không h p l :

3xyz _1 (do ký t u là s ) num-odd (do s d ng d u g ch ngang)

Trang 31

r#3 (do s d ng ký t #) int (do t tên trùng v i t khóa) del ta (do có kho ng tr(ng) f(x) (do có d u ngo c tròn)

Trang 32

long double 80 bits 3.4 * (10-4932) n 1.1 * (104932)

L u ý: Trên mi n s th c không có phép toán chia l y d

- M i câu l nh có th vi t trên m t hay nhi u dòng nh ng ph i k t thúc b"ng d u ; Trong

khi l p trình c n ph i ghi chú gi i thích các bi n, h"ng, thao tác x lý giúp cho ch ng

trình rõ ràng d# hi u, d# nh , d# s a ch a và ng i khác c vào d# hi u Trong C có các

ghi chú sau: // ho c /* n i dung ghi chú */

- Không nên nh m l*n gi a h"ng ký t và h"ng chu i :

“a” c l u tr g$m 2 ký t là a và \0

‘a’ c l u tr là a mà thôi

- Có m t s ký t c bi t không in c trên màn hình : ‘\n’ (xu ng dòng ); ‘\0’ (ký t

NULL ); ‘\r’ (Enter)…

Trang 33

Ví d 2-2

int main() {int a, b; //khai bao 2 bien a,b kieu int

Xu t ra màn hình giá tr c a các bi u th c theo m t khuôn d ng nào ó

printf (<các h ng chu i nh d ng>, <bi u th c 1>, <bi u th c 2>, .);

Trang 34

85 if (a[i][j]>gtlonnhi && a[i][j]!=gtlonnhat) gtlonnhi=a[i][j];

86 printf("\n Gia tri lon nhat, nho nhat la :%d\t%d",gtlonnhat,gtlonnhi);

Khi ó câu l nh này s, dành 4 kho ng tr(ng ghi giá tr a và 6 kho ng tr(ng ghi giá tr b

trong ó ã tính c d u ch m th p phân và 2 ch s ph n th p phân

Trang 35

& xu t, nh p d li u chúng ta hoàn toàn có th s d ng hai l nh trong th vi n stdio.h là printf,

scanf nh ã c p các ví d trên Tuy nhiên chúng ta có th s d ng các l nh cout, cin trong

th c t ng ng, còn khi th c hi n phép gán m t s th c cho m t bi n nguyên, thì ph n nguyên

c a s th c ó s, c gán cho bi n (m t s ngôn ng l p trình òi h'i hai v c a câu l nh gán

ph i có cùng ki u)

cout << <bi u th c1> [ <<bi u th c2>] [ ]

L nh này cho phép xu t giá tr c a các bi u th c ra màn hình Các <bi u th c i> c.ng có th

là các hàm, các h"ng, các bi n,…

M t s l nh sau ây (trong th vi n iomanip.h) có th c s d ng chung v i l nh cout:

int setw(int n); quy nh r ng trên màn hình xu t giá tr là n c t

int setprecision(int n); quy nh s l ng ch s sau d u ch m th p phân c n xu t ra màn hình là n

cin >> <bi n 1> [ >> <bi n 2> ] [ ];

L nh này cho phép nh p t bàn phím giá tr cho các bi n (riêng bi n ki u chu i không s d ng

l nh cin nh p), sau m i l n nh p giá tr ph i nh n enter ho c phím kho ng cách

Trang 36

69 if (sv[i].diemtb>=5 && sv[i].diem1>=5 && sv[i].diem2>=5 && sv[i].diem3>=5)

70 in_sv(sv[i]);

71 }

Ví d 7.10:

Vi t ch ng trình t o file v n b n có tên là “matran.inp” có c u trúc nh sau:

- Dòng u ghi hai s m,n ch s hàng và s c t c!a ma tr n, hai s này cách nhau b i ít nh t

m t kho ng tr ng

- Trong m dòng ti p theo m#i dòng ghi n s nguyên các s cách nhau ít nh t m t kho ng tr%ng

- T t c các s c!a ma tr n này $c t o ng"u nhiên t1 1 n 1000

a c file m i t o và xu t ma tr n lên màn hình

b Hãy tìm giá tr+ l n nh t, giá tr+ l n nhì c!a ma tr n

c Bi n 'i m i s h ng c!a ma tr n thành các s nguyên t g n s ó nh t n u s h ng ó không ph i là s nguyên t

d L u ma tr n c!a câu c lên file matran.out

11 void taofile(int a[max][max], int &m, int &n);

12 void docfile(int a[max][max], int &m, int &n);

13 void timgiatri(int a[max][max], int m, int n);

14 void biendoimatran(int a[max][max], int m, int n);

15 void xuatmatran(int a[max][max], int m, int n);

16 void luufile(int a[max][max], int m, int n);

Ngôn ng C/C++ a ra hai phép toán m t ngôi t ng ho c gi m các bi n (nguyên và

th c) Toán t t ng ++ s, c ng 1 vào toán h ng c a nó, toán t gi m s, tr i 1 Ch ng h n

n u n ang có giá tr b"ng 5 thì sau phép tính ++ n, n có giá tr 6, còn sau phép tính n, n có

giá tr 4

D u phép toán ++ và có th ng tr c ho c ng sau toán h ng, nh v y có th có

t t c 4 cách vi t sau: ++n, n++, n, n

S khác nhau gi a ++ a và a ++ ch : trong khi phép n ++ thì n c t ng sau khi giá

tr c a nó ã c tính trong bi u th c, còn trong phép ++n thì n c t ng tr c khi giá tr c a

Trang 37

Ý ngh a: N u <bi u th c i u ki n> là úng thì tr v giá tr c a <bi u th c 1> ng c l i

int m = a>b ? a++ : b++;

int n = a<b ? a : b;

cout << n + (++m);

Khi th c hi n các phép tính toán s h c th ng x y ra nhu c u chuy n )i ki u các toán

h ng tính toán theo cú pháp chuy n )i ki u nh sau:

(ki u d li u) bi u th c

Ch ng h n v i a,b là hai s nguyên C n xu t giá tr c a phân s a / b thì c n ph i chuy n )i

d li u c a k t qu có k t úng Có b n cách sau ây th c hi n: (float)a / b, float(a) / b,

35 cout<<"Ngay sinh: "; fflush(stdin);gets(sv[i].ngaysinh);

57 for (int i=0;i<n-1;i++)

58 for (int j=i+1;j<n;j++)

Trang 38

16 void xuat(sinhvien sv[], int n);

17 void sapxep(sinhvien sv[], int n);

18 void xuatkq(sinhvien sv[], int n);

33 cout<<"Ma sinh vien: ";fflush(stdin);gets(sv[i].masv);

34 cout<<"Ho va ten: "; fflush(stdin);gets(sv[i].hoten);

a / float(b); riêng tr ng h p n u a ho c b là h"ng s thì vi c chuy n a ho c b thành s th c có

th th c hi n b"ng cách ghi thêm 0 phía sau h"ng ó (ví d 1 / b ghi thành 1.0 / b)

Khi vi t ch ng trình nên a vào các dòng chú thích ch ng trình d# c, d# hi u &i u

này c.ng giúp cho vi c s a )i nâng c p ch ng trình v sau c thu n l i Có hai cách sau

ghi l i chú thích:

Cách 1: t d u // tr c dòng mu n chú thích

Cách 2: bao o n l nh c n chú thích gi a hai d u /* … */

L i chú thích có th t b t k2 v trí nào trong ch ng trình N u ch ng trình dài ph c t p

nên a chú thích vào tr c m i o n l nh ho c tr c m i ch ng trình con

M t ch ng trình trên C/C++ th ng có c u trúc nh sau:

Khai báo các th vi n c s d ng trong ch ng trình

& nh ngh+a các h"ng s

Khai báo các bi n toàn c c

Khai báo các tiêu hàm

Ch ng trình chính

Thi t k chi ti t t ng hàm t t o

M t ch ng trình n gi n m*u c mô t sau ây

Ví d 2-4

Trong m-t ph&ng t a OXY cho 3 i m A,B,C l n l $t có t a là (xa,ya), (xb,yb), (xc,yc)

Hãy tính chu vi, di n tích và t a tr ng tâm c!a tam giác này

)()

2 2

)()

2 2

)()

Trang 39

Áp d ng công th c Heron tìm di n tích c a tam giác khi bi t chi u dài 3 c nh c a tam giác, ta có:

v i p là n a chu vi c a tam giác: p = cv / 2

G i (xg,yg) là t a tr ng tâm c a tam giác ABC, ta có công th c:

9 cout << "Nhap toa do cua diem A(xa,yq):";cin >> xa >> ya;

10 cout << "Nhap toa do cua diem B(xb,yb):";cin >> xb >> yb;

11 cout << "Nhap toa do cua diem C(xc,yc):";cin >> xc >> yc;

12 /* hay ta dùng khi khai báo #include <stdio.h>

13 printf (“Nhap toa do cua diem A(xa,ya):”); scanf (“%d, %d”,&xa &ya);

14 printf (“Nhap toa do cua diem A(xb,yb):”); scanf (“%d, %d”,&xb, &yb);

15 printf (“Nhap toa do cua diem A(xc,yc) :”); scanf (“%d, %d”,&xc &yc);

25 cout << "\nChu vi cua tam giac la : " << cv;

26 cout << "\nDien tich cua tam giac la: " << s;

))(

)(

(p a p b p c p

81 for (int i=0;i<n-1;i++)

82 for (int j=i+1;j<n;j++)

b.Hãy in lên màn hình nh ng sinh viên có i m trung bình 4 5 và không có môn nào d i i m

5; danh sách này ph i $c s%p theo th t i m trung bình gi m d n

Ngày đăng: 07/03/2016, 14:29

HÌNH ẢNH LIÊN QUAN

Hình 1.1  Các b c gi i bài toán b&#34;ng máy tính - Bai giang mon Cơ sở lập trình
Hình 1.1 Các b c gi i bài toán b&#34;ng máy tính (Trang 5)
Hình 1.2   Các s $ kh i thông d ng - Bai giang mon Cơ sở lập trình
Hình 1.2 Các s $ kh i thông d ng (Trang 7)
Hình 1.4   S $ kh i c a ví d  1.3 - Bai giang mon Cơ sở lập trình
Hình 1.4 S $ kh i c a ví d 1.3 (Trang 8)
Hình 1.5  S $ c a c u trúc r, nhánh-d ng 2 - Bai giang mon Cơ sở lập trình
Hình 1.5 S $ c a c u trúc r, nhánh-d ng 2 (Trang 8)
Hình 1.6 S $ kh i c a ví d  1.4 - Bai giang mon Cơ sở lập trình
Hình 1.6 S $ kh i c a ví d 1.4 (Trang 9)
Hình 1.7   S $ c a c u trúc l p d ng 1 - Bai giang mon Cơ sở lập trình
Hình 1.7 S $ c a c u trúc l p d ng 1 (Trang 10)
Hình 1.9 S $ c a c u trúc l p d ng 2 - Bai giang mon Cơ sở lập trình
Hình 1.9 S $ c a c u trúc l p d ng 2 (Trang 12)
Hình 1.10 S $ kh i c a ví d  1.6 - Bai giang mon Cơ sở lập trình
Hình 1.10 S $ kh i c a ví d 1.6 (Trang 13)
Hình 1.11 S $ c a c u trúc l p d ng 3 - Bai giang mon Cơ sở lập trình
Hình 1.11 S $ c a c u trúc l p d ng 3 (Trang 14)
Hình 1.12 S $ kh i c a ví d  1.7 - Bai giang mon Cơ sở lập trình
Hình 1.12 S $ kh i c a ví d 1.7 (Trang 15)
Hình 1.13 S $ kh i c a ví d  1.8 - Bai giang mon Cơ sở lập trình
Hình 1.13 S $ kh i c a ví d 1.8 (Trang 15)
Hình th c:  O(g(n)) = { f(n):  ∃  các s c,n 0 &gt;0 sao cho  f(n)  ≤ c ⋅  g(n)  ∀  n  ≥ n 0 } - Bai giang mon Cơ sở lập trình
Hình th c: O(g(n)) = { f(n): ∃ các s c,n 0 &gt;0 sao cho f(n) ≤ c ⋅ g(n) ∀ n ≥ n 0 } (Trang 21)
Hình th c:   Ω (g(n)) = { f(n):  ∃  các s c,n 0 &gt;0 - Bai giang mon Cơ sở lập trình
Hình th c: Ω (g(n)) = { f(n): ∃ các s c,n 0 &gt;0 (Trang 22)
Hình th c:  Θ (g(n)) = { f(n):  ∃  các s  c1, c2,n0 - Bai giang mon Cơ sở lập trình
Hình th c: Θ (g(n)) = { f(n): ∃ các s c1, c2,n0 (Trang 22)
Hình ch  nh t th  nh t có t a   g c d i trái là A(x 1 ,y 1 ) và t a   g c trên ph i là B(x 2 ,y 2 ) - Bai giang mon Cơ sở lập trình
Hình ch nh t th nh t có t a g c d i trái là A(x 1 ,y 1 ) và t a g c trên ph i là B(x 2 ,y 2 ) (Trang 62)

TỪ KHÓA LIÊN QUAN

w