intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Lập trình C (16 bài)

Chia sẻ: Vuong Dinh | Ngày: | Loại File: DOCX | Số trang:147

61
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu "Lập trình C" bao gồm 16 bài giảng hay về lập trình C của Trường Đại học Bách Khoa Hà Nội như: Hello World, xây dựng ngăn xếp, cấu trúc rẽ nhánh, mối quan hệ giữa con trỏ và mảng, chuỗi ký tự,... Với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích.

Chủ đề:
Lưu

Nội dung Text: Lập trình C (16 bài)

  1. Lập trình C: Bài 1 – Hello World 1. Phần mềm lập trình C Chúng ta có thể sử dụng các công cụ khác nhau nhưng đưới đây là 3 công cụ phổ biến và tiện  lợi nhất   Dev C    CodeBlocks    Visual C  … Ngoài ra bạn nào dùng Linux thì chúng ta có thể dùng Geany cũng là một phần mềm tương  đối tốt. Các bạn có thể sử dụng một trong các phần mềm trên để phục vụ cho việc học tập của mình  nhưng mình khuyên các bạn nên dùng Dev C hoặc CodeBlocks (trong windows) và Geany  trong Linux. 2. Chương trình đầu tiên Hello World Và đây là nội dung bài đầu tiên của chúng ta. Nội dung rất đơn giản: Chương trình đầu tiên HelloWorld.cpp ­ code in devC by nguyenvanquan7826 1 // Chuong trinh in ra dong chu: Chuong trinh C dau tien cua toi ! 2 #include 3 #include  4 int main() 5 { 6     printf ("Chuong trinh C dau tien cua toi !\n"); 7     system("pause"); 8     return 0; 9 }
  2. Bận ấn F9 hoặc cái nút thứ 3 (4 màu liền nhau) ở thanh công cụ để biên dịch và chạy chương  trình. Kết quả của chúng ta:
  3. Dòng thứ 1: bắt đầu bằng // cho biết hàng này là hàng diễn giải (chú thích). Khi dịch và chạy  chương trình, dòng này không được dịch và cũng không thi hành lệnh gì cả. Mục đích của  việc ghi chú này giúp chương trình rõ ràng hơn. Sau này bạn đọc lại chương trình biết  chương trình làm gì. Dòng thứ 2,3: chứa phát biểu tiền xử lý #include  và #include. Vì trong  chương trình này ta sử dụng hàm thư viện của C là printf và system, do đó bạn cần phải có  khai báo của hàm thư viện này để báo cho trình biên dịch C biết. Nếu không khai báo chương  trình sẽ báo lỗi. Về chức năng của từng thư viện mình sẽ nói trong các bài sau nhá. Dòng thứ 4: int main() là thành phần chính của mọi chương trình C (bạn có thể viết main() hoặc void main(). Tuy nhiên, bạn nên viết theo dạng int main() để chương trình rõ ràng  hơn (Về vấn đề này mình sẽ nói cụ thể sau). Mọi chương trình C đều bắt đầu thi hành từ  hàm main. Cặp dấu ngoặc () cho biết đây là khối hàm (function). Hàm int main() có từ khóa int  đầu tiên cho biết hàm này trả về giá trị kiểu nguyên (int). Dòng thứ 5 và 9: cặp dấu ngoặc móc {} giới hạn thân của hàm. Thân hàm bắt đầu bằng dấu { và kết thúc bằng dấu }. Dòng thứ 6: printf (“Chuong trinh C dau tien cua toi !\n”); , chỉ thị cho máy in ra chuỗi ký tự  nằm trong nháy kép (“”). Hàng này được gọi là một câu lệnh, kết thúc một câu lệnh trong C  phải là dấu chấm phẩy( ; ). Dòng thứ 7: system(“pause”); chỉ thị máy dừng lại chương trình tại nơi mà nó được gọi.  Trong Th này ta dùng để dừng màn hình xem kết quả Dòng 8: return 0; Trả về giá trị kiểu nguyên là 0 theo như đúng ban đầu là khai báo int main(). Lưu ý: 1. Trong chương trình này mình không dùng thư viện conio.h vì trong chuẩn C không có thư  viện này, và từ đó cũng không dùng được getch() để dừng màn hình mà mình đã thay bằng 
  4. lệnh system(“pause”); 2. Khi dùng hàm return để trả về giá trị của hàm thì các bạn có thể bỏ qua lệnh này chương  trình vẫn chạy nhưng về chuẩn là sai, trả về 1 cũng sai, tóm lại là trả về 0. Còn sai thế nào  mình nói sau. Bài của chúng ta coi như là hết !!! Lập trình C: Bài 2 – Kiểu dữ liệu và nhập xuất trong C Bài hôm nay nhìn tương đối dài tuy nhiên thì khi thực hành sẽ thấy rất là đơn giản. Đây là  mục lục bài viết Nội dung  A. Kiểu dữ liệu trong C  o  1. Các ký tự điều khiển  o  2. Từ khóa  o  3. Kiểu và biến   B. Nhập, Xuất trong C  o  1. Chuỗi định dạng dữ liệu  o  2. Xuất dữ liệu: printf();  o  3. Nhập dữ liệu: scanf();  o  4. Nhập chuỗi trong C  o  5. Hiện tượng trôi lệnh  A. Kiểu dữ liệu trong C 1. Các ký tự điều khiển  \n : Nhảy xuống dòng kế tiếp canh về cột đầu tiên.  \t : Canh cột tab ngang.  \r : Nhảy về đầu hàng, không xuống hàng.  \a : Tiếng kêu bip.  \\ : In ra dấu \  \” : In ra dấu “  \’ : In ra dấu ‘  %%: In ra dấu % Đây chỉ là một số ký tự điểu khiển quen thuộc, hay dùng, ngoài ra còn một só ký tự điều  khiển khác các bạn có thể xem thêm trong các tài liệu. Dể hiểu rõ về các ký tự điều khiển các bạn hãy chạy thử chương trình sau và tự rút ra nhận  xét cho riêng mình. code by nguyenvanquan7826 01 #include  02   03 int main(){ 04     printf("\a"); 05     printf("Hinh nhu vua co tieng gi keu @@\n");
  5. 06     printf("Ban dang o dong thu 2\nBay gio xuong dong 3 roi ne ^^\n"); 07     printf("\tDong nay cach ra 1 tab thi phai?\n"); 08     printf("\t\t\t\t\t\tCach ra nhieu tab qua \rVe dau dong thoi\n"); 09     printf("Dau \\ \nDau \'\nDau \" \nDau %%"); 10   11     // day la mot dong ghi chu 12   13     /* 14       Day la mot doan ghi chu 15       Doan ghi chu nay co 2 dong 16      */ 17   18     // system("pause"); // su dung de dung man hinh neu ban dung dev­C 19     return 0; 20 } 2. Từ khóa Là các từ mà ngôn ngữ C đã xây dựng sẵn, chúng ta không nên định nghĩa lại chúng. 3. Kiểu và biến a. Kiểu dữ liệu Kiểu dữ liệu giống như là các thùng chứa, vật dụng để đựng đồ dùng của chúng ta. VD ca  uống nước để đựng nước, cái rổ để đựng rau,… Mỗi loại dữ liệu có kích thước khác nhau và tương ứng với miền giá trị và loại giá trị mà nó  có thể thực hiện. VD kiểu int chiếm 2 byte bộ nhớ và để chứa các số nguyên,…
  6. Kiểu dữ liệu trong C b. Biến – hằng Tương ứng với mỗi kiểu dữ liệu chúng ta có các biến, hằng thuộc các kiểu đó và có miền giá  trị tương ứng như trên dùng để lưu giá trị. Các bạn cần phân biệt kiểu và biến. VD cái rổ A để đựng rau muống, cái rổ B để đựng rau cần thì tương ứng biến a lưu giá trị số  5, còn biến b lưu giá trị số 9 mặc dù chúng cùng kiểu Biến có thể thay đổi trong quá trình thực hiện chương trình còn hằng thì không thể. Cách khai báo biến: kiểu_dữ_liệu tên_biến; – 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ụ1 : Các tên đúng: delta, a_1, Num_ODD, Case Các tên sai: 3a_1 (ký tự đầu là số); num­odd (sử dụng dấu gạch ngang); int (đặt tên trùng với  từkhóa) ; del ta (có khoảng trắng); f(x) (có dấu ngoặc tròn) Lưu ý: Trong C, tên phân biệt chữ hoa, chữ thường Ví dụ2 : number khác Number ; case khác Case (case là từ khóa, do đó bạn đặt tên là Case vẫn  đúng) Cú pháp: kiểu danh_sach_cac_bien; VD: code by nguyenvanquan7826 01 #include  02   03 int main(){
  7. 04     int a, b; // khai bao 2 bien kieu so nguyen 05     float c, d; // khai bao 2 bien kieu so thuc 06     a = 1; 07     b = 2; 08     c = 3.4; 09     d = 5.6; 10   11     int e = 4, f = 6; 12   13     printf("a = %d; b = %d\n", a, b); 14     printf("c = %f; d = %f\n", c, d); 15     printf("e = %d; f = %d\n", e, f); 16   17     // system("pause"); // su dung de dung man hinh neu ban dung dev­C 18     return 0; 19 } Như trên các bạn thấy cấu trúc khai báo rồi đó. Còn về lệnh xuất ra màn hình các giá trị thì có  một số điều khác đó là cách sử dụng %d, %f . Cái này mình sẽ nói cụ thể ở phần sau, đến đây  các bạn cứ viết theo để thấy được cách khai báo biến là ok roài. ! Vị trí khai báo biến: Khi lập trình, bạn phải nắm rõ phạm vi của biến. Nếu khai báo và sử dụng không đúng,  không rõ ràng sẽ dẫn đến sai sót khó kiểm soát được, vì vậy bạn cần phải xác định đúng vị  trí, phạm vi sử dụng biến trước khi sử dụng biến. Khai báo biến ngoài (biến toàn cục): Vị trí biến đặt bên ngoài tất cả các hàm, cấu trúc… Các  biến này có ảnh hưởng đến toàn bộ chương trình. Chu trình sống của nó là bắt đầu chạy  chương trình đến lúc kết thúc chương trình. Khai báo biến trong (biến cục bộ): Vị trí biến đặt bên trong hàm, cấu trúc…. Chỉ ảnh hưởng  nội bộ bên trong hàm, cấu trúc đó…. Chu trình sống của nó bắt đầu từ lúc hàm, cấu trúc được  gọi thực hiện đến lúc thực hiện xong. Lý thuyết đôi khi mơ hồ, các bạn làm ví dụ sau và chạy sẽ thấy rõ hơn nhiều. code by nguyenvanquan7826 01 #include 
  8. 02   03 int a = 1, b = 5; // khai bao bien toan cuc, no se duoc dung o bat ky dau 04   05 int main(){ 06     // khai bao 2 bien trong ham main, no se duoc dung trong toan bo ham main ke tu dong nay 07     int c = 4, d = 6;  08   09     { 10         int e = 6, d = 8; 11         c = 7; 12         printf("gia tri cac bien trong khoi:\n"); 13         printf("e = %d \t d = %d \t c = %d\n", e, d, c); 14     } 15   16     printf("gia tri cac bien trong ham main:\n"); 17     printf("c = %d \t d = %d\n", c, d); 18   19     printf("gia tri cac bien toan cuc:\n"); 20     printf("a = %d \t b = %d\n", a, b); 21   22     // system("pause"); // su dung de dung man hinh neu ban dung dev­C 23     return 0; 24 } Các bạn chạy chương trình, xem kết quả và tự rút ra nhận xét nhá, nếu vẫn chưa rõ có thể  hỏi trực tiếp trên blog. Cách khai báo hằng: Khai báo hằng bạn có thể khai báo ở bất kỳ đâu trong chương trình, khai 
  9. báo ở đâu thì từ đó hằng sẽ được xác định. Cú pháp: #define ten_hang gia_tri (Không có dấu chấm phảy ở cuối nhá) Chú ý chúng ta không dùng cấu trúc const như một số người dùng vì khi dùng const trong một  số trường hợp ta vẫn thay đổi được giá trị của hằng. code by nguyenvanquan7826 01 #include  02   03 #define a 6     // hang so 04 #define c 'a'  // hang ky tu 05 #define s "nguyenvanquan7826" // hang chuoi 06   07 int main(){ 08     printf("hang a = %d\n", a); 09     printf("hang c = %c\n", c); 10     printf("hang s = %s\n", s); 11   12     // system("pause"); // su dung de dung man hinh neu ban dung dev­C 13     return 0; 14 } Các bạn chạy và cảm nhận nhá B. Nhập, Xuất trong C 1. Chuỗi định dạng dữ liệu Trước khi đến với phần nhập, xuất dữ liệu cho các biến mình sẽ nói về một số định dạng để  nhập và xuất. Sau đây là các dấu mô tả định dạng:  %c : Ký tự đơn  %s : Chuỗi  %d : Số nguyên hệ 10 có dấu  %f : Số chấm động (VD 5.54 khi in sẽ ra 5.540000)  %e : Số chấm động (ký hiệu có số mũ)  %g : Số chấm động (VD 5.54 khi in sẽ in ra 5.54)  %x : Số nguyên hex không dấu (hệ 16)  %o : Số nguyên bát phân không dấu (hệ 8)  l : Tiền tố dùng kèm với %d, %x, %o để chỉ số nguyên dài (ví dụ%ld)
  10. 2. Xuất dữ liệu: printf(); Chúng ta sử dụng hàm printf để xuất dữ liệu ra màn hình console. code by nguyenvanquan7826 01 #include  02   03 int main(){ 04     int a = 12; 05     float b = 13.5; 06     char c = 'Q'; 07     long d = 3454; 08     char* s = "nguyenvanquan7826"; // khai bao kieu chuoi 09   10     printf("tong cua %d va %f la %f \n", a, b, a+b); 11     printf("tich cua %d va %ld la %ld \n", a, d, a*d); 12     printf("ky tu c la: %c \n", c); 13     printf("chuoi s la: %s \n", s); 14     printf("dinh dang so mu cua b la %e \n", b); 15     printf("so he 16 va he 8 cua %d la %x va %o \n", a, a, a); 16     printf("ma ASCII cua %c la %d", c, c); 17   18     // system("pause"); // su dung de dung man hinh neu ban dung dev­C 19     return 0; 20 }
  11. Mình xin giải thích 1 câu lệnh để làm rõ hơn việc xuất của chúng ta. Các bạn cũng chú ý là đối với số nguyên và ký tự có sự qua lại với nhau thông qua mã ASCII  nên chúng ta có thể in mã của ký tự bằng định dạng %d và cũng có thể in ký tự có mã là số  nào đó thông qua định dạng %c. Tuy nhiên bản chất của biến không thay đổi. Ở Vd trên câu  lệnh in mã ASCII của c sẽ cho số nguyên nhưng bản chất c vẫn là một biến kiểu char. Các bạn hãy chạy và cảm nhận ! Tiếp nhá, một vài cách xuất có định dạng:  %5c : Xuất ký tự có bề rộng 5  %5d : Số nguyên có bề rộng 5  %20s : Xuất chuỗi có bề rộng 20  %5.3f : Xuất số thực có bề rộng 5 trong đó có 3 số sau dấu phẩy  %­5d : Số nguyên có bề rộng 5 nhưng căn lề trái Chạy và cảm nhận vd ! code by nguyenvanquan7826 01 #include  02   03 int main(){ 04     int a = 12; 05     float b = 13.5; 06     char c = 'Q'; 07     long d = 3454; 08     char* s = "nguyenvanquan7826"; // khai bao kieu chuoi 09       10     printf("%6d %5.3f %.3f \n", a, b, a+b); 11     printf("%­5d %5ld %5ld \n", a, d, a*d);
  12. 12     printf("%5c \n", c); 13     printf("%30s \n", s); 14       15     // system("pause"); // su dung de dung man hinh neu ban dung dev­C 16     return 0; 17 } 3. Nhập dữ liệu: scanf(); Ta sử dụng hàm scanf để nhập liệu từ bàn phím code by nguyenvanquan7826 01 #include  02   03 int main(){ 04     int a; 05     float b; 06   07     printf("Nhap so nguyen a = "); 08     scanf("%d", &a); 09   10     printf("Nhap so thuc b = "); 11     scanf("%f", &b); 12   13     printf("a = %d \t b = %.3f", a, b); 14   15     // system("pause"); // su dung de dung man hinh neu ban dung dev­C 16     return 0; 17 }
  13. Từ ví dụ này ta thấy cú pháp để nhập: scanf (“chuỗi định dạng”[, đối 1, đối 2,…]); Chú ý đừng quên ký tự & trước mỗi biến. Nếu không sẽ sai. Chuỗi định dạng được đặt trong ngoặc kép: “ ” và các định dạng tương tự như khi chúng ta  xuất dữ liệu. Tương ứng với mỗi định dạng là một kiểu tương ứng, nếu khác kiểu sẽ dần đến sai sót. 4. Nhập chuỗi trong C Nếu các bạn dùng hàm scanf để nhập chuỗi thì bạn sẽ thấy rằng không thể nhập được chuỗi  có dấu cách hoặc nếu trước đó bạn nhập số thì sau đó không nhập được chuỗi nữa. Nếu  không tin bạn có thể thử chạy với chương trình sau: code by nguyenvanquan7826 01 #include  02   03 int main(){ 04     int tuoi = 0; 05     // khai bao chuoi co toi da 30 ky tu 06     char ten[30], tenNguoiYeu[30]; 07   08     printf("Ho va ten cua ban ten la gi?"); 09     scanf("%s", ten); // nhap chuoi khong can dau & 10   11     printf("Ban bao nhieu tuoi roi?"); 12     scanf("%d", &tuoi); 13   14     printf("Nguoi yeu cua ban ten la gi?"); 15     scanf("%s", tenNguoiYeu); 16   17     printf("\n====\n"); 18     printf("%s \n%d \n%s", ten, tuoi, tenNguoiYeu); 19     // system("pause"); // su dung de dung man hinh neu ban dung dev­C
  14. 20     return 0; 21 } Kết quả là bạn sẽ không nhập được tuổi và tên người yêu như hình sau. Lý do là scanf chỉ đọc được dữ liệu không có khoảng trắng (đấu cách, dấu tab, enter, …) và  các khoảng cách này sẽ được lưu vào bộ đệm bàn phím do đó bạn chỉ nhận được chuỗi đầu  tiên trước đấu cách mà thôi (chữ Nguyen), sau mỗi dấu cách, các giá trị tiếp theo nếu phù hợp  với kiểu dữ liệu của các biến tiếp theo thì nó sẽ gán luôn cho chúng và bạn sẽ không được  nhập nữa. Do tuoi kiểu nguyên nên không nhận được, tenNguoiYeu sẽ nhận giá trị tiếp theo  trong các giá trị nhận được là chữ Van. 5. Hiện tượng trôi lệnh Hiện tượng như trên được gọi là hiện tượng trôi lệnh. Nếu bây giờ bạn thực hiện cho nhập  số trước và chuỗi ngay sau đó thì hiện tượng này cũng xảy ra vì scanf không đọc được phím  enter khi bạn nhấn lúc nhập xong số, nó được lưu vào bộ đệm và khi đọc giá trị nhập cho  chuỗi nó tìm trong bộ đệm thấy ký tự enter là kiểu chuỗi nên nó gán luôn cho chuỗi đó. Để nhập được chuỗi có khoảng trắng (dấu cách) chúng ta sử dụng hàm gets. Để không bị trôi lệnh khi nhập số trước và chuỗi sau ta cần xóa bộ đệm bàn phím bằng  lệnh fflush(stdin); ngay sau khi nhập số. code by nguyenvanquan7826 01 #include  02   03 int main(){ 04     int tuoi = 0; 05     // khai bao chuoi co toi da 30 ky tu
  15. 06     char ten[30], tenNguoiYeu[30]; 07   08     printf("Ho va ten cua ban ten la gi?"); 09     gets(ten); // nhap chuoi khong can dau & 10   11     printf("Ban bao nhieu tuoi roi?"); 12     scanf("%d", &tuoi); 13     fflush(stdin); 14   15     printf("Nguoi yeu cua ban ten la gi?"); 16     gets(tenNguoiYeu); 17   18     printf("\n====\n"); 19     printf("%s \n%d \n%s", ten, tuoi, tenNguoiYeu); 20     // system("pause"); // su dung de dung man hinh neu ban dung dev­C 21     return 0; 22 } Nếu bạn dùng Linux thì fflush(stdin); sẽ không hoạt động, bạn hãy đọc bài fflush(stdin) trong  ubuntu (linux) hoặcgets() and fget() in C/C++ để biết cách khắc phục.
  16. Bảng mã ASCII Lập trình C: Bài 3 – Phép toán, toán tử trong C Bài học hôm nay sẽ giới thiệu tới các bạn cách thực hiện các phép toán trong C, các toán tử  để xử lý dữ liệu nữa. Nội dung  1.Toán tử toán học   2.Toán tử quan hệ   3.Toán tử luận lý   4.Toán tử tăng/giảm   5.Toán tử khởi tạo   6.Toán tử điều kiện   7.Toán tử phẩy   8.Toán tử lấy kích thước   9.Độ ưu tiên của các toán tử  1.Toán tử toán học C cung cấp 5 toán tử toán học cơ bản STT Toán tử Tên Ví dụ Kết quả 1 + Cộng 4+12.6 16.6 2 ­ Trừ 4­2.5 1.5 3 * Nhân 4*2 8 4 / Chia 6/3 2 5 % Lấy dư 6%4 2
  17. STT Toán tử Tên Ví dụ Kết quả 1 + Cộng 4+12.6 16.6 Các toán tử toán học trong C Thử làm 1 ví dụ: code by nguyenvanquan7826 ­ fileName: toantu.cpp 01 #include  02   03 int main(){ 04     int a = 5, b = 7; 05     double c = 4.5, d = 6; 06   07     printf("%d + %f = %f \n", a, c, a + c); 08     printf("%d ­ %d = %d \n", a, b, a ­ b); 09     printf("%d * %f = %f \n", b, d, b * d); 10   11     /* Luu y phep chia nhe*/ 12   13     printf("%d / %d = %d \n", b, a, b / a); 14     printf("%f / %d = %f \n", c, a, c / a); 15     printf("%f / %f = %f \n", c, d, c / d); 16   17     printf("%d %% %d = %d \n", b, a, b % a); 18   19     return 0; 20 } Kết quả 5 + 4.500000 = 9.500000 5 – 7 = ­2 7 * 6.000000 = 42.000000 7 / 5 = 1 4.500000 / 5 = 0.900000 4.500000 / 6.000000 = 0.750000 7 % 5 = 2 Toán tử lấy phần dư (%) yêu cầu cả hai toán hạng là số nguyên. Nó trả về phần dư còn lại  của phép chia. Ví dụ 7 % 5 được tính toán bằng cách chia số nguyên 7 cho 5 để được 1 và  phần dư là 2; vì thế kết quả là 2. Thông thường, nếu cả hai toán hạng là số nguyên sau đó kết quả sẽ là một số nguyên. Tuy  nhiên, một hoặc cả hai toán hạng là số thực thì sau đó kết quả sẽ là một số thực.
  18. Khi cả hai toán hạng của toán tử chia là số nguyên thì sau đó phép chia được thực hiện như là  một phép chia số nguyên và không phải là phép chia thông thường mà chúng ta sử dụng. Phép  chia số nguyên luôn cho kết quả là phần nguyên của thương. Ví dụ: 7 / 5 =1 chứ không phải 7  / 5 = 1.4. Để khắc phục lỗi này thì ta có thể chuyển một số hoặc cả 2 số sang kiểu thực rồi  thực hiện phép chia. Cách chuyển kiểu (hay ép kiểu) ta như sau: (kiểu cần chuyển) (biến). Lưu ý khi ép kiểu thế này thì kiểu của các biến ban đầu không thay đổi mà chỉ là giá trị tức  thời (tại thời điểm đó thay đổi sang kiểu mới). Để lưu lại giá trị tức thời này bạn cần khai  báo thêm một biến mới có kiểu cần chuyển và gán giá trị đó lại. Ví dụ cho dễ. code by nguyenvanquan7826 ­ fileName: epkieu.cpp 01 #include  02   03 int main(){ 04     int a = 5, b = 7; 05     double c; 06   07     printf("%d / %d = %d \n", b, a, b / a); 08   09     /* Chuyen gia tri tuc thoi cua b sang kieu so thuc*/ 10     printf("%d / %d = %f \n", b, a, (double)b / a); 11   12     /* Chuyen gia tri tuc thoi cua a sang kieu so thuc*/ 13     printf("%d / %d = %f \n", b, a, b / (double)a); 14   15     /* Neu lam the nay thi van khong dung, vi b/a duoc so nguyen 16      * sau do chung ta moi ep kieu so nguyen do sang so thuc 17      */ 18     printf("%d / %d = %f \n", b, a, (double)(b / a)); 19   20     return 0; 21 } Kết quả: 7 / 5 = 1 7 / 5 = 1.400000 7 / 5 = 1.400000 7 / 5 = 1.000000 2.Toán tử quan hệ C cung cấp 6 toán tử quan hệ để so sánh các số. Các toán tử quan hệ trả về1 (thay cho kết  quả đúng) hoặc 0 (thay cho kết quả sai).
  19. STT Toán tử Tên Ví dụ Kết quả 1 == So sánh bằng 5 == 5 1 2 != So sánh khác 5 != 5 0 3 > So sánh lớn hơn 5 > 4 1 4 < So sánh nhỏ hơn 5 = So sánh lớn hơn  5 >= 4 1 hoặc bằng 6  4 && 5 > 6 0 3 || Phép hoặc 5 > 4 || 5 > 6 1 Các toán tử luận lý trong C 4.Toán tử tăng/giảm Các toán tử tăng một (++) và giảm một (­ ­) cung cấp các tiện lợi tương ứng cho việc cộng  thêm1 vào một biến số hay trừ đi 1 từ một biến số. Ví dụ với khai báo int i = 5, k; Toán tử Tên Ví dụ Kết quả k Kết quả i ++ Tăng 1 (tiền tố) k = ++i 6 6 ++ Tăng 1 (hậu tố) k = i++ 5 6 ­ ­ Giảm 1 (tiền tố) k = – ­i 4 4 ­ ­ GIảm 1 (hậu tố) k = i­ ­ 5 4
  20. Toán tử Tên Ví dụ Kết quả k Kết quả i ++ Tăng 1 (tiền tố) k = ++i 6 6 Các toán tử luận lý trong C Tức là ta có: ++i thì i được tăng trước sau đó sẽ lấy kết quả để thực hiện biểu thức i++ thì i được đưa vào thực hiện biểu thức trước sau đó mới tăng i lên 1 5.Toán tử khởi tạo Toán tử khởi tạo được sử dụng để lưu trữ một biến. Toán hạng trái nên là một giá trị trái và  toán hạng phải có thể là một biểu thức bất kỳ. Biểu thức được tính và kết quả được lưu trữ  trong vị trí được chỉ định bởi giá trị trái. Toán tử Ví dụ Tương đương với = x = 5 Gán 5 cho x += x += 5 x = x + 5 ­= x ­= 5 x = x – 5 *= x *= 5 x = x * 5 /= x /= 5 x = x / 5 %= x %= 5 x = x % 5 Các toán tử khởi tạo trong C Phép toán khởi tạo chính nó là một biểu thức mà giá trị của nó là giá trị được lưu trong toán  hạng trái của nó. Vì thế một phép toán khởi tạo có thể được sử dụng như là toán hạng phải  của một phép toán khởi tạo khác. Bất kỳ số lượng khởi tạo nào có thể được kết nối theo  cách này để hình thành một biểu thức. Vídụ: int m,n,p; m = n = p = 100; // nghĩa là: n = (m = (p= 100)); m = (n = p = 100) + 2; // nghĩa là: m = (n = (p= 100)) + 2; Việc này có thể ứng dụng tương tựcho các hình thức khởi tạo khác. Ví dụ: m = 100; m += n = p = 10; // nghĩalà: m= m+ (n = p = 10); 6.Toán tử điều kiện Toán tử điều kiện yêu cầu 3 toán hạng. Hình thức chung của nó là: 1 toán hạng 1? toán hạng 2: toán hạng 3
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2