Professional Documents
Culture Documents
On Tap Cac Kien Thuc C
On Tap Cac Kien Thuc C
[ ]
int a[]={1,2,3,4,5,6};
int spt=sizeof(a)/sizeof(int);
C. Hμm (FUNCTION):
§Þnh nghÜa Hμm:
<KiÒud÷liÖu / void> TªnHμm (Danhs¸chthamsè)
<Khai b¸o kiÓu cho c¸c tham sè>;
{Khai b¸o biÕn côc bé vμ th©n hμm};
Sö dông Hμm:
Tªn hμm (Danhs¸chc¸cthamsèthùcnÕucã);
TruyÒn tham sè:
+ TruyÒn b»ng trÞ: ®©y lμ chÕ ®é truyÒn tham sè mÆc ®Þnh cña C. Víi c¸ch truyÒn
nμy gi¸ trÞ cña tham sè thùc sÏ kh«ng bÞ thay ®æi sau khi hμm thùc hiÖn.
+TruyÒn b»ng biÕn: tøc muèn truyÒn c¶ néi dung lÉn ®Þa chØ cña biÕn. Khi ®ã ta
ph¶i sö dông biÕn con trá.
F. CHUæI (string):
Khai b¸o: t−¬ng tù nh− khai b¸o m¶ng ta còng cã hai c¸ch khai b¸o lμ khai b¸o
t−êng minh vμ kh«ng t−êng minh:
char tenchuoi [chiÒu dμi thùc+1];
char tenchuoi [ ];
C¸c thao t¸c trªn kiÓu chuæi:
+ NhËp:
• LÖnh scanf(“%s”,tenchuoi); LÖnh nμy kh«ng thÓ nhËp vμo mét chuæi cã
chøa ký tù kho¶ng tr¾ng, tab, enter, vμ ®Ó l¹i ký tù “\n” trong bé ®Öm bμn
phÝm.
• LÖnh gets(tenchuoi); §−îc khai b¸o trong “string.h”. LÖnh nμy cã thÓ nhËp
®−îc chuæi cã kho¶ng tr¾ng, kÕt thóc khi gÆp ký tù xuèng dßng(“\0”).
+ XuÊt:
• LÖnh printf(“%s”,tenchuoi);
• LÖnh puts(tenchuoi); XuÊt chuæi vμ xuèng dßng.
+ G¸n chuæi:
Muèn sö dông phÐp g¸n chuæi ta ph¶i sö dông biÕn con trá vμ hμm calloc ®Ó
cÊp ph¸t vïng nhí cho biÕn nμy.
Vd: char *str;
str=calloc(40,sizeof(char));
str=“MediaSpace Club”;...
C¸c hμm th−êng dïng víi kiÓu chuæi, ký tù: (phÇn lín ®−îc khai b¸o trong
“string.h”).
• strcat( char*dest, char *scr): nèi chuæi dest víi chuæi scr;
• strspn(*str, *str_con): cho ®é dμi ®o¹n ®Çu tiªn lín nhÊt cña str mμ mäi ký tù
cña ®o¹n ®Òu cã mÆt trong chuçi str_con.
• strlen(char *str): cho chiÒu dμi thùc cña chuæi str.
• char *strupr(char *s): chuyÓn chuæi tõ ký tù th−êng sang HOA.
HTD (TH0003) C Programming (Se) Page: 8
• char *strlwr(char *s): chuyÓn chuæi tõ ký tù HOA sang th−êng.
• char *strrev(char *s): ®¶o ng−îc c¶ chuæi trõ ký tù kÕt thóc(“\0”).
• char *strcpy(char *dest, char *scr): sao chÐp toμn bé chuæi src sang chuæi
dest.
• char *strncpy(char *dest, char *scr,n): sao n ký tù ®Çu cña chuæi src sang
chuæi dest.
• char *strchr(char *str, int c): t×m sù xuÊt hiÖn ®Çu tiªn cña c trong str. NÕu
t×m thÊy hμm tr¶ vÒ ®Þa chØ cña ký tù t×m ®−îc trong str, ng−îc l¹i tr¶ vÒ
NULL.
• char *strstr(char *str, char *str_con): t×m sù xuÊt hiÖn ®Çu tiªn cña str_con
trong str. NÕu thÊy, hμm cho ®Þa chØ cña chuçi con (trïng víi str_con) trong
str, ng−îc l¹i hμm tr¶ vÒ NULL.
• char *strbrk(char *s1, char *s2): duyÖt trong s1 ®Ó t×m ký tù ®Çu tiªn khíp
víi bÊt kú ký tù nμo cña s2. NÕu cã xuÊt hiÖn, hμm cho ®Þa chØ cña ký tù t×m
thÊy trong s1, ngù¬c l¹i hμm tr¶ vÒ NULL.
• int strcmp(char *s1, char *s2): so s¸nh 2 chuæi theo thø tù, hμm tr¶ vÒ < 0
nÕu chuçi s1 < chuçi s2 ; = 0 nÕu chuçi s1 = chuçi s2 ; >0 nÕu chuçi s1 lín
h¬n chuçi s2.
• int stricmp(char *s1, char *s2): gièng nh− strcmp nh−ng kh«ng ph©n biÖt
ch÷ HOA, ch÷ th−êng khi so s¸nh.
• int memcmp(char *s1, char *s2, unsighed n);
So s¸nh chuæi s1 vμ s2 mét c¸ch chÝnh x¸c, ph©n biÖt HOA th−êng trong ph¹m
vi n byte vμ tr¶ vÒ: <0 nÕu s1 nhá h¬n s2; = 0 nÕu s1 trïng s2 ; >0 nÕu s1 lín
h¬n s2.
• char * strncat(char *s,char *s1,int n): ghÐp n ký tù ®Çu tiªn cña s1 vμo s.
• char *itoa(int x,char *s,int cs): ChuyÓn sè nguyªn x trong hÖ ®Õm c¬ sè cs
(cs=10: hÖ 10, cs=8:hÖ 8, cs=16:hÖ 16) sang chuçi vμ l−u vμo vïng nhí s. Hμm
tr¶ vÒ ®Þa chØ cña vïng s . (stdlib.h)
• int atoi(char *s): chuyÓn chuçi s sang gi¸ trÞ int.
• long atol(char *s): chuyÓn chuçi s sang gi¸ trÞ long.
Dïng c¸c hμm trªn chóng ta sÏ ph¸t ra c¸c ©m thanh lμ c¸c note nh¹c víi cao ®é lμ n vμ
tr−êng ®é m. Sau ®©y lμ 7 tÇn sè t−¬ng øng víi 7 note nh¹c c¬ b¶n ê qu·ng t¸m thø I:
♦ §«: 132 ♦ MI: 164 ♦ SOL: 192 ♦ SI: 244
♦ Rª: 146 ♦ FA: 172 ♦ LA: 216
§Ò ®−îc note th¨ng ta lÊy (note th−êng t−¬ng øng céng víi note cao h¬n kÕ tiÕp)/2, vμ
note gi¸ng th× còng lÊy (note th−êng t−¬ng øng céng víi note thÊp h¬n kÕ tiÕp)/2.§èi
víi c¸c note ë c¸c qu¶ng t¸m cao h¬n hay thÊp h¬n th× ta chØ viÖc nh©n hay chia ®«i
c¸c note t−¬ng øng. C¸c note lÆng ta sÏ ph¸t mét note víi tÇn sè kho¶ng 30.000Hz
(Siªu ©m).
HTD (TH0003) C Programming (Se) Page: 14
VD: Rª#=(Rª+Mi)/2; Rªb(Rª gi¸ng)=(Rª+§«)/2; §è=§«*2;...
VÒ tr−êng ®é ta lÊy note §en lμm chuÈn, vμ qui ®Þnh tr−êng ®é cña c¸c note kh¸c
(note mãc, nèt trßn, ®en chÊm, trßn chÊm,...) theo qui t¾c nh¹c lý vμ lÊy theo chuÈn
cña note §en. Th«ng th−êng víi tiÕt tÊu trung b×nh th× note §en ®−îc qui ®Þnh
kho¶ng tõ 300-400, tuú theo tiÕt tÊu nhanh hay chËm cña mçi bμi h¸t cô thÓ mμ ta
qui ®Þnh cho hîp lý.
10. ®å ho¹:
Khëi ®éng chÕ ®é §å ho¹:
void initgraph(int *graphdriver, int *graphmode, char *driverpath); Víi
driverpath lμ ®−êng dÉn chøa c¸c file ®iÒu khiÓn ®å ho¹ (thõ¬ng lμ
“C:\\BorlandC\\Bgi”), graphdriver vμ graphmode dïng x¸c ®Þnh mμn h×nh vμ kiÓu ®å
ho¹ sÏ sö dông. NÕu kh«ng biÕt kiÓu mμn h×nh ®ang sö ta sö dông DETECT cho
graphdriver ®Ó ch−¬ng tr×nh tù nhËn d¹ng, C¸c gi¸ trÞ cña graphriver ®−îc tr×nh bμy
trong help online víi index lμ graphics_rivers vμ graphics_modes.
VD: #include <stdio.h>;
#include <conio.h>;
#include <graphics.h>;
main()
{
int gr_drive = DETECT, gr_mode;
initgraph(&gr_drive, &gr_mode, "c:\\tc\\bgi");
outtext("Graphic example");
getch();
}
C¸c hμm th−êng dïng:
• Lçi ®å ho¹: ph¸t sinh khi khëi ®éng chÕ ®é då ho¹ vμ khi dïng c¸c hμm. Hμm int
graphresult( void) tr¶ vÒ lçi khi ph¸t hiÖn, hμm char grapherrormsg(int
errorcode) tr¶ vÒ th«ng bμo lçi do graphresult ph¸t hiÖn. C¸c m· lçi cña
graphresult ®−îc tr×nh bμy trong help online víi index lμ graphics_errors.
• Chän mμu nÒn: void setbkcolor(int color);
• Chän mμu nÐt: void setcolor( int color);
HTD (TH0003) C Programming (Se) Page: 15
• Chän mÉu vμ mμu t«: void setfillstyle( int pattern, int color); C¸c gi¸ trÞ cña
pattern(mÉu t«) ®−îc tr×nh bμy trong help online víi index lμ fill_parttens.
• Chän mÉu cho nÐt: void setlinestyle(int linestyle, int pattern, int thickness);
cho phÐp ta qui ®Þnh 3 yÕu tè lμ kiÓu linestyle(0[nÐt liÒn],1[nÐt chÊm], 2[nÐt chÊm
g¹ch], 3[nÐt g¹ch], 4[mÉu tù t¹o]) bÒ dμy thickness(1[b×nh th−êng[, 3 [dμy gÊp ba]
vμ mÉu tù t¹o patern (nÕu qui ®Þnh linestyle lμ 4). §Ó nhËn gi¸ trÞ hiÖn hμnh cua 3
yÕu tè trªn ta dïng hμm void getlinesettingstyle(struct linesettingtype, *
linenifo); , C¸ch ®Þnh nghÜa mÉu tù t¹o vμ cÊu tróc cña linesettingtype ®−îc tr×nh
bμy trong help online víi index lμ setlinestyle vμ linesettingstyle.
• Thay ®æi gi¶i mμu mÆc ®Þnh: void setpalette(int colornum, incolor);
• X¸c nhËn gi¶i mμu hiÖn hμnh: void palette(struct palettetype *palette); CÊu
tróc cña palettetype ®−îc tr×nh bμy trong help online víi index lμ palettetype.
• C¸c hμm getcolor(), getbkcolor() vμ getmaxcolor() tr¶ vÒ mμu ®· x¸c ®Þnh víi
setcolor, setbkcolor, vμ sè l−îng mμu cùc ®¹i thô«c d·y mμu hiÖn hμnh.
• VÏ cung trßn: void arc(int x, int y, int gocdau, int goccuoi, int bankinh); Gãc:
®é.
• VÏ ®−êng trßn: void circle(int x, int y,int bankinh);
• VÏ cung ellipse: void ellipse(intx, int y, int gocdau, int goccuoi, int xr, int yr);
Víi xr lμ b¸n trôc ngang vμ yr lμ b¸n trôc ®øng.
• VÏ vμ t« h×nh qu¹t: void pieslice(int x, int y, int gocdau, int goccuoi, int
bankinh);
• VÏ ®−êng gÊp khóc vμ ®a gi¸c: drawpoly(n,a); Víi n lμ sè ®iÓm, a lμ m¶ng kiÓu
int chøa to¹ ®é cña c¸c ®iÓm( a[0]=x1, a[1]=y1, a[2]=x2, a[3]=y2,...). NÕu nÕu
®iÓm cuèi xn, yn trïng víi ®iÓm ®Çu x1, y1 ta sÏ ®−îc mét ®a gi¸c.
• T« mμu ®a gi¸c: fillpoly(n,a); hμm nμy sÏ t« mμu 1 ®a gi¸c cã c¸c n ®Ønh.
• VÏ ®−êng th¼ng: void line(int x1, int y1, int x2, int y2); VÏ ®−êng th¼ng nèi hai
®iÓm (x1,y1) vμ (x2,y2) nh−ng kh«ng lμm thay ®æi vÞ trÝ con trá. Hμm void
lineto(int x, int y); VÏ ®−êng th¼ng tõ ®iÓm hiÖn t¹i tíi (x,y) vμ chuyÓn con trá ®Õn
®iÓm (x,y). Hμm void linerel(int dx, int dy); sÏ vÏ mét ®−êng th¼ng tõ vÞ trÝ hiÖn