Bài giảng: ngôn ngữ
lập trình C
Chổồng I : Tọứng quan Trang 1
Chơng I.
TỉNG QUAN
I.
Giồùi thióỷu vóử ngọn ngổợ C:
I.1.
Lởch sổớ ngọn ngổợ C:
Ngọn ngổợ C õổồỹc Dennis Ritchie thióỳt kóỳ taỷi phoỡng thờ nghióỷm Bell nm 1972 vồùi muỷc
õờch vióỳt hóỷ õióửu haỡnh UNIX. Tuy nhión nhồỡ tờnh ổu vióỷt vaỡ linh õọỹng cuớa C nón C õaợ õổồỹc
giồùi tin hoỹc sổớ duỷng khừp nồi nhổ mọỹt ngọn ngổợ chờnh thọỳng. Do coù nhióửu phión baớn C cuớa
nhióửu nhaỡ saớn xuỏỳt phỏửn móửm nón nm 1983 ANSI (American National Standard Institute)
xỏy dổỷng tióu chuỏứn ANSI C. Tọứ chổùc ISO cuợng xỏy dổỷng chuỏứn cho C. Hai chuỏứn naỡy giọỳng
nhau vaỡ õổồỹc bióỳt õóỳn vồùi tón chung laỡ ANSI C.
I.2.
ặu õióứm cuớa ngọn ngổợ C:
Hióỷn nay coù rỏỳt nhióửu ngọn ngổợ lỏỷp trỗnh khaùc nhau nhổ PASCAL, JAVA, DELPHI,
BASIC, Mọựi ngọn ngổợ coù mọỹt sọỳ õióứm maỷnh rióng tuy nhión ngọn ngổợ C õổồỹc sổớ duỷng
+ Sọỳ bổồùc cỏửn thổỷc hióỷn trong thuỏỷt toaùn laỡ hổợu haỷn õóứ sau mọỹt sọỳ lỏửn lỷp nhỏỳt õởnh ta
phaới õổồỹc nghióỷm cuớa baỡi toaùn
+ Tờnh tọỳi ổu: thọng thổồỡng õọỳi vồùi mọỹt baỡi toaùn coù nhióửu phổồng phaùp giaới khaùc nhau
ta phaới choỹn ra trong sọỳ õoù phổồng phaùp giaới tọỳi ổu nhỏỳt vóử thồỡi gian thổỷc hióỷn, cho kóỳt quaớ
chờnh xaùc nhỏỳt, khọỳi lổồỹng tờnh toaùn ờt nhỏỳt vaỡ õồn giaớn khi vióỳt chổồng trỗnh.
Vờ duỷ :
+ Phaùt bióứu baỡi toaùn : Trong lồùp coù bao nhióu ngổồỡi tón Xuỏn ?
+ ỏửu vaỡo :
Danh saùch lồùp
Tón cỏửn kióứm tra : Xuỏn
+ ỏửu ra :
Sọỳ ngổồỡi coù tón Xuỏn
+ Thuỏỷt toaùn :
Lỏỳy danh saùch lồùp
Lỏỳy tón cỏửn kióứm tra : Xuỏn
Xoùa bọỹ õóỳm vóử 0
Lỏửn lổồỹt õọỳi vồùi tổỡng tón trong danh saùch : So saùnh vồùi tón cỏửn kióứm tra,
nóỳu õuùng thỗ cọỹng 1 vaỡo bọỹ õóỳm
Thọng baùo giaù trở bọỹ õóỳm ( sọỳ sinh vión coù tón Xuỏn )
I.5.
Lổu õọử :
A
Thổỷc hióỷn cọng vióỷc A
A
Goỹi chổồng trỗnh con A
• Soản tho :
Sỉí dủng chỉång trçnh soản tho TURBO C hồûc BORLAND C hồûc C++, sau âọ lỉu
lải file âọ våïi tãn l *.c ( âäúi våïi C++ l *.cpp )
• Dëch :
Chỉång trçnh soản tho cng l trçnh biãn dëch.
Trçnh biãn dëch s cọ nhiãûm vủ dëch chỉång trçnh ngưn sang m mạy qua 2 gian
âoản: dëch ra táûp tin *.obj v liãn kãút cạc file *.obj lải våïi nhau qua trçnh liãn kãút. Nãúu
cọ läùi thç ta quay tråí lải bỉåïc soản tho âãø sỉỵa chỉỵa.
• Chảy chỉång trçnh
Nãúu cọ läùi thç ta phi kiãøm tra lải thût toạn, läùi logic, âãún khi cho kãút qu âụng.
II.
Cạc pháưn tỉí cå bn ca ngän ngỉỵ C:
II.1.
Bäü kê tỉû ca C:
Ngän ngỉỵ C âỉåüc xáy dỉûng trãn bäü kê tỉû sau :
•
Cạc chỉỵ cại hoa A Z, cạc chỉỵ cại thỉåìng a z
• Cạc chỉỵ säú 0 9
• Dáúu cháúm cáu : , ; . ?
• Cạc kê tỉû âàûc biãût nhỉ []{}!@#$%^&*()-=\+|
•
Cạc kê tỉû khäng nhçn tháúy nhỉ khong tràõng, dáúu tab, k tỉû xúng dng.
• Kê tỉû gảch dỉåïi _
Âáy chè l táûp con ca Bng m ASCII
Ta khäng âỉåüc phẹp sỉí dủng cạc kê tỉû ngoi bäü kê tỉû trãn.
II.2.
Cạc tỉì khoạ (keyword):
Tỉì khoạ l tỉì dng riãng, khäng thãø âënh nghéa lải, mäùi tỉì khoạ cọ mäüt nghéa riãng.
Ta khäng âỉåüc sỉí dủng tỉì khoạ vo mủc âêch khạc nhỉ âàût tãn cho biãún, hàòng, mng; cáưn
Tón haỡm nón phaớn aùnh cọng vióỷc maỡ noù laỡm.
Vờ duỷ : bien_dem, nghiem1, hoan_vi, : õuùng.
1st, bien dem, registry laỡ caùc vờ duỷ sai .
Chuù yù : + C coù phỏn bióỷt chổợ hoa vaỡ chổợ thổồỡng
+ Tỏỳt caớ caùc tổỡ khoaù vaỡ haỡm chuỏứn õóửu laỡ chổợ thổồỡng, caùc macro chuỏứn õóửu laỡ
chổợ hoa
II.4.
Lồỡi chuù giaới:
Lồỡi chuù giaới trong chổồng trỗnh coù muỷc õờch laỡm cho ngổồỡi õoỹc dóự hióứu, chổồng trỗnh
saùng suớa, thuỏỷn lồỹi trong vióỷc tỗm kióỳm, sổợa chổợa, gồợ rọỳi, nhỏỳt laỡ õọỳi vồùi chổồng trỗnh lồùn,
phổùc taỷp. Ta cỏửn coù thoùi quen sổớ duỷng caùc cỏu chuù thờch. Khọng sổớ duỷng chuù thờch vồùi nhổợng
lóỷnh õaợ quaù roợ raỡng.
Lồỡi chuù giaới khọng coù taùc duỷng taỷo ra maợ chổồng trỗnh. Trỗnh bión dởch seợ boớ qua tỏỳt
caớ caùc cỏu ghi chuù. Ta khọng sổớ duỷng caùc cỏu chuù thờch lọửng vaỡo nhau
Lồỡi chuù giaới ồớ bỏỳt kyỡ õỏu trong chổồng trỗnh, õổồỹc õỷt giổợa cỷp kờ hióỷu /* vaỡ */ , chuù
giaới coù thóứ nũm trón nhióửu doỡng.
Vờ duỷ : /* õỏy laỡ haỡm hoaùn vở
haỡm naỡy sổớ duỷng con troớ */
Trong C++, sau mọựi doỡng, lồỡi chuù giaới coù thóứ nũm sau kờ hióỷu //. Mọựi kờ hióỷu // chố coù
taùc duỷng trón doỡng õoù.
Vờ duỷ : int dem=0; // dem laỡ bióỳn õóỳm.
II.5.
Cỏu lóỷnh vaỡ dỏỳu chỏỳm cỏu:
Mọựi cỏu lóỷnh õổồỹc kóỳt thuùc bũng dỏỳu chỏỳm phỏứy ;
Nhổợng doỡng khọng phaới laỡ cỏu lóỷnh thỗ kóỳt thuùc khọng coù dỏỳu chỏỳm cỏu.
Caùc cỏu lóỷnh cuỡng nhoùm nón õỷt thúng cọỹt.
Mọựi cỏu lóỷnh nón vióỳt trón mọỹt doỡng (nóỳu coù thóứ )
am2(void)
{
}main()
{
ham1();
ham2();
}
Chổồng I : Tọứng quan Trang 6
Mọỹt chổồng trỗnh C thổồỡng coù cỏỳu truùc nhổ sau :
/* Caùc chố thở tióửn xổớ lờ */
#include
#define
typedef /* õởnh nghộa caùc kióứu dổợ lióỷu */
/* khai baùo nguyón mỏựu caùc haỡm*/
kióứu_dổợ_lióỷu tón_haỡm(tham_sọỳ);
khai baùo caùc bióỳn toaỡn cuỷc;
/* chổồng trỗnh chờnh */
main()
return (x*y);
}
Chổồng I : Tọứng quan Trang 7
Vờ duỷ : tờnh dióỷn tờch hỗnh chổợ nhỏỷt bióỳt chióửu daỡi vaỡ chióửu rọỹng khọng duỡng haỡm
#include <stdio.h>
#include <conio.h>
main()
{
int x,y;
printf(\nNhap chieu dai:);scanf(%d,&x);
printf(\nNhap chieu rong:);scanf(%d,&y);
printf(\nDien tich hinh chu nhat: %d,x*y);
getch();
return 0;
}
IV.
Baỡi tỏỷp:
1. Xỏy dổỷng thuỏỷt toaùn vaỡ veợ sồ õọử khọỳi cuớa caùc baỡi toaùn sau:
a. Tờnh n!
b. Tờnh
=
n
i
i
1
Biãún v hàòng, cạc phẹp gạn cå bn:
Biãún dng âãø lỉu dỉỵ liãûu cọ thãø thay âäøi giạ trë âỉåüc.
Hàòng dng âãø lỉu dỉỵ liãûu khäng thãø thay âäøi.
Biãún v hàòng l vng nhåï lỉu trỉỵ dỉỵ liãûu âỉåüc âàût tãn cho dãù truy cáûp (khäng phi
dng âëa chè) .
Trỉåïc khi sỉí dủng biãún v hàòng ta cáưn khai bạo trỉåïc.
II.1.
Khai bạo v khåíi tảo biãún:
Khai bạo biãún : kiãøu_dỉỵ_liãûu danh_sạch_cạc_tãn_biãún
Ta cọ thãø khai bạo nhiãưu biãún cng kiãøu cng mäüt lục, cạc biãún cạch nhau dáúu pháøy.
Vê dủ : int dem, tam, x, y;
float tr_binh;
Khåíi tảo biãún : biãún = biãøu thỉïc
Vê dủ : int x ;
x = 10;
hồûc : int x =10 ;
Ta cáưn chụ x = y khäng phi l x bàòng y m l gạn giạ trë ca y vo x.
Vê dủ : int x,y;
y=x;
kiãøu säú ngun
kiãøu säú thỉûc
kiãøu kê tỉû
kiãøu logic
kiãøu cå såí
kiãøu vä hỉåïng
Vê dủ : const int so_luong = 50 ;
const float sai_so = 0.5 ;
II.3.
Phẹp gạn:
Biãún nháûn giạ trë qua phẹp gạn våïi dáúu bàòng : tãn_biãún = biãøu thỉïc
Vê dủ : a = 5; // gạn cho a giạ trë l 5
b = a - 4; // tênh giạ trë a - 4 räưi gạn giạ trë âọ cho b
Phẹp gạn kẹp :
Vê dủ : a = b = c = 7 ;
a = (b = 4 ) + ( c = 5 ) ;
Khi ta sỉí dủng phẹp gạn kẹp, cáu lãûnh s ngàõn hån tuy nhiãn khäng nãn lảm dủng.
III.
Kiãøu säú ngun:
Cạc kiãøu säú ngun l nhỉỵng táûp håüp con ca táûp Z, khäng phi l ton bäü táûp Z .
•
Cạc kiãøu säú ngun ca C våïi cạc di giạ trë khạc nhau :
Kiãøu biãún Tỉì khoạ Säú byte
Di giạ trë
Character char 1 -128 ÷ 127
Integer int 2
-32768
÷ 32767
Short integer short 2 -32768 ÷ 32767
Long integer long 4
-2147483648
÷
2147483647
Chỉång II : Kiãøu dỉỵ liãûu, biãún v hàòng Trang 10
Vê dủ : 10 % 3 =1 ; 5 / 3 = 1 ;
•
Biãøu diãùn säú ngun dỉåïi dảng Hexa ( hãû tháûp lủc phán) :
Hãû tháûp phán sỉí dủng : 0 1 2 3 4 5 6 7 8 9
Hãû nhë phán sỉí dủng : 0 1
Hãû tháûp lủc phán sỉí dủng : 0 1 2 3 4 5 6 7 8 9 A B C D E F
Vê dủ : säú 53 åí dảng nhë phán l 110101, åí dảng Hexa l 35.
Säú ngun âỉåüc biãøu diãùn dỉåïi dảng Hexa : 0xgiạ_trë_Hexa hồûc 0Xgiạ_trë_Hexa
Vê dủ : 0x12 (=18) ; 0X12 (=18)
Âäúi våïi säú hãû 8 ta viãút thãm säú 0 vo trỉåïc : 0giạ_trë_Oct
Vê dủ : 0123 (=83)
• Biãøu diãùn säú ám trong mạy tênh:
Säú ám : Vê dủ : int x= - 21 ;
21 : 0000 0000 0001 0101
Säú b 1 : 1111 1111 1110 1010
Säú b 2 : 1111 1111 1110 1011
• Hiãûn tỉåüng trn säú :
Hiãûn tỉåüng ny xy ra khi kãút qu dỉû kiãún ca phẹp tênh säú hc vỉåüt ra khi di giạ trë
cọ thãø biãùu diãùn âỉåüc ca kiãøu dỉỵ liãûu âọ. Lục âọ kãút qu thỉûc tãú s l kãút qu sai.
Vê dủ : 32767 + 1 s cọ kãút qu -32768
Âãø khàõc phủc ta chuøn sang sỉí dủng cạc kiãøu dỉỵ liãûu cọ di giạ trë cho phẹp räüng hån
Chụng ta nãn khai bạo våïi kiãøu dỉỵ liãûu täúi ỉu âãø vỉìa cọ kãút qu mong mún vỉìa tiãút
kiãûm bäü nhåï.
Nãúu chụng ta âàût mäüt säú ám vo biãún khäng dáúu hồûc âàût mäüt säú vo kiãøu dỉỵ liãûu cọ
di giạ trë nh hån säú âọ thç trçnh biãn dëch s khäng bạo läùi nhỉng ta s cọ kãút qu khäng
mong mún.
long double 10
3.4E-4932 ÷ 3.4E4932
Biãøu diãùn säú thỉûc åí dảng tháûp phán :
Vê dủ : 3.14 ; 2.718281828
Biãøu diãùn säú thỉûc åí dảng khoa hc :
Vê dủ : 6.023e23=6.023E23 (= 6.023 * 10
23
)
Trong vê dủ trãn, pháưn âënh trë l 6.023, pháưn m l 23
Pháưn âënh trë v pháưn m cọ thãø cọ dáúu âi km, chụng âỉåüc viãút liãưn nhau khäng cọ
dáúu ngàn cạch. Vê dủ : -12.23e-23
Pháưn ngun hay pháưn tháûp phán cọ thãø khäng cọ nhỉng dáúu cháúm khäng thãø thiãúu.
Vê dủ : 3. .14
Ta âãø : 3 l säú ngun nhỉng 3. l säú thỉûc.
• Biãøu diãùn säú tháûp phán trong mạy tênh:
Säú tháûp phán : Vê dủ : 12.5 : 1100.1
0.25 : 0.01
Quy trçnh chuøn âäøi .
• Hàòng säú thỉûc cọ kiãøu âënh trỉåïc :
Tỉång tỉû nhỉ säú ngun :
F : kiãøu float
L : kiãøu long
• Cạc phẹp toạn våïi kiãøu säú thỉûc :
Phẹp cäüng ( + ) , trỉì ( - ) , nhán ( * ) , chia ( / ) , phẹp tàng gim.
Phẹp chia (/) âäúi våïi säú thỉûc s cho kãút qu l säú thỉûc. Säú thỉûc khäng cọ phẹp %.
Khai bạo v khåíi tảo säú thỉûc : tỉång tỉû nhỉ säú ngun :
float x;
x=0.3333;
Mọựi giaù trở kióứu char chióỳm 1 byte vaỡ õổồỹc bióứu dióựn thọng qua baớng maợ ASCII.
Caùc kióứu kờ tổỷ trong C :
Kióứu bióỳn Tổỡ khoaù Sọỳ byte Daới giaù trở
Kióứu coù dỏỳu char ( signed char) 1
-128
ữ
127
Kióứu khọng dỏỳu unsigned char 1
0 ữ 255
Phỏn loaỷi :
Caùc kờ tổỷ vn baớn coù maợ tổỡ 32 õóỳn 126, coù thóứ õổa ra maỡn hỗnh vaỡ maùy in. Caùc
kờ tổỷ naỡy gọửm caùc kờ tổỷ ! # $ % & , caùc con sọỳ, caùc chổợ caùi thổồỡng vaỡ hoa,
Caùc kờ tổỷ õióửu khióứn coù maợ tổỡ 0 õóỳn 31, noùi chung caùc kờ tổỷ naỡy khọng thóứ õổa
ra maỡn hỗnh. Mọỹt sọỳ kờ tổỷ õióửu khióứn :
Ta cỏửn phỏn bióỷt hai kờ tổỷ 0 vaỡ \0 : Kờ tổỷ 0 laỡ sọỳ 0 coù maợ 48, coỡn kờ tổỷ \0 laỡ kờ tổỷ
NULL coù maợ 0.
Kờ tổỷ Daợy maợ Giaù trở hexa Giaù trở thỏỷp phỏn
õọứ chuọng BEL \a x07 7
xoaù traùi BS \b x08 8
nhaớy caùch ngang \t x09 9
nhaớy caùch õổùng \v x0B 11
xuọỳng doỡng mồùi \n x0A 10
sang trang \f x0C 12
vóử õỏửu doỡng \r x0D 13
dỏỳu \ x22 34
dỏỳu \ x27 39
dỏỳu ? \? x3F 63
putchar(chu_hoa);
getch();
return 0;
}
Vờ duỷ : Chuyóứn mọỹt sọỳ thaỡnh maợ ASCII
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main()
{
int number,result;
number=511;
result=toascii(number);
printf(\n%d %d %c\n, number, result, result);
getch();
return 0;
}
Chỉång II : Kiãøu dỉỵ liãûu, biãún v hàòng Trang 14
Hm toascii xọa táút c cạc bit ngoải trỉì 7 bit cúi -> kãút qu thüc [0,127]
Kãút qu : 511 127 ∆
Hàòng xáu kê tỉû : l dy kê tỉû nàòm giỉỵa 2 dáúu ngồûc kẹp
Vê dủ : “Ngän ngỉỵ”
Xáu kê tỉû âỉåüc lỉu trong 1 mng ä nhåï liãưn nhau cọ cạc pháưn tỉí l cạc kê tỉû riãng biãût,
pháưn tỉí cúi cng l kê tỉû NULL ( \0 l kê hiãûu kãút thục ca xáu kê tỉû ) . Vê dủ :
Sỉû khạc nhau giỉỵa ‘Z’ v “Z” :
Dy cạc pháưn tỉí âỉåüc liãût kã tỉång ỉïng våïi dy säú tỉû nhiãn bàõt âáưu tỉì 0.
Vê dủ : theo vê dủ trãn :
printf(“%d%d”,BLUE,RED);
s cọ kãút qu l 02.
Âãø pháưn tỉí bàõt âáưu cọ giạ trë khạc 0, ta âënh nghéa nhỉ sau :
T
O
I
\
0
Chổồng II : Kióứu dổợ lióỷu, bióỳn vaỡ hũng Trang 15
enum thu {hai=2,ba,tu,nam,sau,bay,cn};
VIII.2.
Kióứu typedef:
Tổỡ khoùa typedef khọng taỷo ra kióứu dổợ lióỷu mồùi maỡ noù õỷt tón mồùi cho kióứu dổợ lióỷu õaợ
tọửn taỷi.
Mỏựu : typedef tón_kióứu_cuợ tón_kióứu_mồùi
Vờ duỷ :
typedef int nguyen;
typedef float thuc;
sau õoù ta khai baùo bióỳn :
nguyen a,b;
9. Vióỳt chổồng trỗnh nhỏỷp giồỡ1 : phuùt1 : giỏy1 vaỡ giồỡ2 : phuùt2 : giỏy2, xuỏỳt ra tọứng.
10. Tờnh :
(4<5) || (5<4)
!(4-4) && (2+3)
11. Nóỳu ta gaùn mọỹt sọỳ coù dỏỳu chỏỳm thỏỷp phỏn vaỡo sọỳ nguyón thỗ sao ?
TL: giaù trở õổồỹc gaùn vaỡo seợ bở cừt mỏỳt phỏửn thỏỷp phỏn .vờ duỷ : 3.14 thỗ chố coỡn laỷi 3.
12. Sọỳ nguyón ỏm laỡ TRUE hay FALSE ?
Chỉång III : Cáu lãûnh, biãøu thỉïc v toạn tỉí Trang 16
Ch−¬ng III.
CÁU LÃÛNH, BIÃØU THỈÏC, V TOẠN TỈÍ
I.
Cáu lãûnh:
Cáu lãûnh l 1 chè thë hon chènh, ra lãûnh cho mạy tênh thỉûc hiãûn cäng viãûc no âọ. Cạc
cáu lãûnh kãút thục båíi dáúu cháúm pháøy, thỉåìng âỉåüc viãút trãn 1 dng âãø chỉång trçnh r rng.
Trçnh biãn dëch s b qua cạc kê tỉû khäng nhçn tháúy nhỉ tab, enter, spacebar, vç váûy 2
cáu lãûnh sau âáy l tỉång âỉång våïi nhau :
x=y+z;
v x = y + z ;
Khong tràõng chè cọ nghéa trong xáu kê tỉû nhỉ “Dai hoc Da Nang”
Våïi xáu kê tỉû âãø cọ thãø viãút trãn cạc dng khạc nhau thç ta phi dng kê tỉû \ .
Vê dủ : int x,\
y,z;
printf(“\nDai hoc \
Da Nang”);
Cáu lãûnh âån gin l nhỉỵng lãûnh khäng chỉïa lãûnh khạc nhỉ phẹp gạn, låìi gi hm kiãøu
void (hm khäng cọ giạ trë tr vãư), lãûnh nhy khäng âiãưu kiãûn.
Cáu lãûnh cáúu trục l khäúi lãûnh, lãûnh thỉí v lãûnh r nhạnh, lãûnh làûp.
Phẹp tênh theo bit:
Khäng ạp dủng cho kiãøu float v double
Toạn tỉí nghéa
& phẹp AND theo tỉìng bit
| phẹp OR theo tỉìng bit
^ phẹp XOR theo tỉìng bit
~ phẹp âo tỉìng bit
Vê dủ : 3 = 0000 0000 0000 0011
~3 = 1111 1111 1111 1100
Ta cáưn phi phán biãût giỉỵa cạc toạn tỉí & v && :
3 & 4 = 0, 3 && 4 = 1.
Tỉång tỉû nhỉ váûy våïi cạc toạn tỉí | v || :
3 | 4 = 7, 3 || 4 = 1.
Ta dng cạc phẹp tênh theo bit âãø xoạ hồûc láûp cạc bit trong cạc säú nhë phán.
Vê dủ : âãø láûp bit thỉï 0 v bit thỉï 3 ca säú ngun x, ta dng lãûnh x = x | 0x9;
âãø xoạ bit thỉï 1 v bit thỉï 2 ca säú ngun x, ta dng lãûnh x = x & 0xF9;
• Phẹp dëch säú hc >> v << :
I<<M : dëch säú ngun I sang trại âi M bit, tỉång âỉång våïi I*2
M
.
I>>M : dëch säú ngun I sang phi âi M bit, tỉång âỉång våïi I/2
M
.
Vê dủ : âãø tênh I*20 ta viãút (I<<4) + (I<<2) vç 20 = 2
4
+ 2
2
.
Vê dủ : int i=0x123;
i=i>>3;
x/=y <=> x=x/y
x%=y <=> x=x%y
x>>=y <=> x=x>>y
x<<=y <=> x=x<<y
x&=y <=> x=x&y
x|=y <=> x=x|y
x^=y <=> x=x^y
Chụ : a = a*b+c; khäng tỉång âỉång våïi a*=b+c;
Vç a*=b+c; tỉång âỉång våïi a=a*(b+c);
Viãûc dng phẹp gạn måí räüng cọ thãø gáy khọ hiãøu nhỉng nhiãưu bäü biãn dëch tảo ra m
hiãûu qu hån nãúu ta dng nọ.
IV.3.
Phẹp tàng / gim giạ trë 1 âån vë (dng våïi cạc biãún):
i=i+1 <=> i++ hồûc ++i
i=i-1 <=> i hồûc i
Sỉû khạc nhau giỉỵa 2 lãûnh gạn a= ++i v a= i++ :
++i : tàng i lãn 1 âån vë, sau âọ måïi gạn.
i++ : gạn trỉåïc, sau âọ måïi tàng i lãn 1 âån vë.
Vê dủ : x=0;a=x++; // a=x; x++; : a=0, x=1;
x=0;a=++x; // x++; a=x; : a=1,x=1;
IV.4.
Toạn tỉí quan hãû :
Toạn tỉí nghéa
== toạn hảng 1 cọ bàòng toạn hảng 2 khäng ?
> toạn hảng 1 cọ låïn hån toạn hảng 2 khäng ?
< toạn hảng 1 cọ nh hån toạn hảng 2 khäng ?
>= toạn hảng 1 cọ låïn hån hồûc bàòng toạn hảng 2 khäng ?
<= toạn hảng 1 cọ nh hån hồûc bàòng toạn hảng 2 khäng ?
- ++ ! ~ sizeof() &(âëa chè) *(con tr) toạn tỉí ẹp kiãøu : toạn tỉí 1 ngäi
R
→ L
* / %
L → R
+ -
L
→ R
<< >>
L → R
< <= >= >
L
→ R
== !=
L → R
&
L
→ R
^
L → R
|
L
→ R
&&
L → R
int → long → float → double → long double.
Khi chuøn âäøi theo chiãưu ngỉåüc lải thç s bë máút mạt thäng tin, cọ thãø cọ cnh bạo
nhỉng khäng cọ läùi.
Vê dủ: int n;
long p;
float x,s;
s=n*p+x;
âáưu tiãn khi tênh n*p, n âỉåüc âäøi thnh kiãøu long. Têch cọ kiãøu long nãn khi tênh täøng,
têch âỉåüc chuøn thnh kiãøu float. Täøng cọ kiãøu float s âỉåüc gạn cho s.
VI.2.
Sỉû ỉu tiãn cho kiãøu säú :
Cạc phẹp tênh säú hc khäng âënh nghéa cho kiãøu char v short. C tỉû âäüng hiãûu chènh
kiãøu char v kiãøu short thnh kiãøu int.
VI.3.
Chuøn âäøi âäúi våïi kiãøu kê tỉû char:
Kiãøu kê tỉû char khi åí trong biãøu thỉïc säú hc s âỉåüc chuøn âäøi thnh kiãøu int dỉûa vo
bng m ASCII.
Vê dủ : char ch;
ch = ‘A’ + 1; // ‘A’=65 nãn ‘A’+1=66 tỉì âọ ch=’B’
VII.
Cäú chuøn âäøi kiãøu giạ trë:
Âãø nháûn âỉåüc kãút qu mong mún âäi khi ta phi chuøn âäøi kiãøu ca giạ trë.
Vê dủ :
#include <stdio.h>
#include <conio.h>
main()
{
int m,n;
float x;
m=3;n=2;
double ceil(double d) tr lải hm lm trn säú
double fmod(double d1, double d2)
tr lải hm pháưn dỉ ca phẹp chia d1/d2
double sqrt(double d) tr lải hm càn báûc hai
void srand(double d) khåíi tảo bäü säú ngáùu nhiãn
Vê dủ :
floor(3.2) = 3. floor(3.7) = 3.
ceil(3.2) = 4. ceil(3.7) = 4.
Âãø lm trn cạc säú thỉûc tỉì 2.5 âãún cáûn 3.5 thnh 3 ta dng floor(i+0.5)
IX.
Bi táûp :
1. Gi sỉí ta cọ :
float x,y;
x=(int)3.4;
y=(int)3.8;
Tênh x,y. (3,3)
2. Gi sỉí ta cọ :
int x=3,y=5;
x=y++;
y=++x;
Tênh x,y. ( 6,6)
3. float x,y;
x=14/5;
y=(float)14/5;
Tênh x,y. ( 2.000 , 2.8 )
4. Tênh 10101 | 11001, 10101 & 11001
Chổồng III : Cỏu lóỷnh, bióứu thổùc vaỡ toaùn tổớ
0 n nóỳu
1
1
)(nsign
Lồỡi giaới: Caùch 1: sign = n > 0 ? 1 : 0 ;
sign = n < 0 ? -1: sign ;
Caùch 2: sign = n > 0 ? 1 : ( n == 0 ? 0 : -1 ) ;
Hoỷc sign = n > 0 ? 1 : ( n < 0 ? -1 : 0 ) ;
Chỉång IV : Nháûp xút dỉỵ liãûu Trang 23
Ch−¬ng IV. NHÁÛP XÚT DỈỴ LIÃÛU
I.
Hm printf() :
Hm printf() nàòm trong stdio.h. Hm ny cọ kh nàng chuøn dảng, tảo khn v âỉa
cạc kiãøu dỉỵ liãûu ra mn hçnh.
I.1.
Dảng :
int printf(“xáu âënh dảng”, dy cạc biãøu thỉïc )
Vê dủ :
printf(“%d %d %c”,1,2,’c’);
ÅÍ vê dủ trãn ta tháúy cọ sỉû tỉång ỉïng 1-1 v âụng trçnh tỉû giỉỵa cạc m âënh dảng trong
xáu âënh dảng v dy cạc biãøu thỉïc.
I.2.
Xáu âënh dảng :
bao gäưm :
Trang 24
Trỉåìng ra fw Dáúu - Kãút qu
-2035 8 cọ -2035
-2035 08 cọ -2035
-2035 8 khäng -2035
-2035 08 khäng -0002035
“abcdef” 08 cọ abcdef
“abcdef” 08 khäng abcdef
“abcdef” 8 khäng abcdef
•
fw : l dy säú ngun xạc âënh âäü räüng täúi thiãøu dnh cho trỉåìng ra :
- Khi fw låïn hån âäü di thỉûc tãú ca trỉåìng ra thç cạc vë trê dỉ thỉìa s âỉåüc láúp
âáưy båíi cạc khong tràõng hồûc cạc säú 0 ty thüc vo sỉû cọ màût ca säú 0. Näüi dung trỉåìng ra
âỉåüc âáøy sang bãn trại hay phi ty thüc vo sỉû cọ màût ca dáúu trỉì.
- Khi khäng cọ fw hồûc fw låïn hån âäü di thỉûc tãú ca trỉåìng ra thç âäü räüng dnh
cho trỉåìng s bàòng âäü di thỉûc tãú ca trỉåìng ra.
Vê dủ : âãø âỉa ra dng 123^^^^^^000123123^^^ ta viãút nhỉ sau :
printf(“%-9d%06d%-6d”,123,123,123);
•
.pp : pp l säú ngun cọ chỉïc nàng :
- Âäúi våïi säú ngun thç in ra êt nháút pp chỉỵ säú (nãúu thiãúu thç chn cạc säú 0). Âäúi
våïi pháưn tháûp phán, nãúu khäng cọ pp thç âäü chênh xạc màûc âënh l 6. Nãúu pp låïn hån âäü di
thỉûc ca trỉåìng ra thç nọ chn cạc säú 0 vo, nãúu nh hån thç nọ s càõt båït.
- Âäúi våïi xáu kê tỉû : Nãúu pp nh hån âäü di xáu thç chè cọ pp kê tỉû âáưu tiãn ca
xáu âỉåüc âỉa ra. Nãúu khäng cọ pp hồûc pp låïn hån âäü di xáu thç ton bäü xáu âỉåüc âỉa ra.