Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: [Phụ lục C] - Dành cho tra cứu lý thuyết C

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định [Phụ lục C] - Dành cho tra cứu lý thuyết C

    I. Tập ký tự của C:
    1. 26 chữ cái in HOA: Từ A -> Z
    2. 26 chữ cái in thường: Từ a -> z
    3. 10 chữ số: Từ 0 -> 9
    4. Các ký hiệu toán học cơ bản: + - * / = ( )
    5. Ký tự nối: _
    6. Các ký tự khác có trên bàn phím: ! # % & $ [ ] { } ........
    7. Dấu cách cũng thuộc tập ký tự của C.
    II. Từ khóa:

    Các từ khóa sau đây không được phép dùng để đặt tên cho hằng, biến, mảng, tên hàm .....
    Từ khóa có phân biệt dạng chữ, trong C các từ khóa đều là chữ in thường.

    • Danh sách các từ khóa:
      • asm , _asm, __asm, extern, inline, pascal, _pascal, __pascal
      • auto, break, case, continue, do, else, for, goto, if, return, while
      • cdecl, _cdecl, __cdecl
      • char, double, float, int, long, short, signed, unsigned
      • class, enum, friend
      • const
      • _cs, __cs
      • default
      • delete
      • _ds, __ds
      • _es, __es
      • _export, __export
      • far, _far, __far, _fastcall, __fastcall, near, _near, __near
      • huge, _huge, __huge
      • interrupt, _interrupt, __interrupt, _loadds, __loadds
      • new
      • operator, private, protected, public, register, static,
      • _saveregs, __saveregs, _seg, __seg
      • sizeof. typedef
      • _ss, __ss,
      • struct, switch, virtual
      • template
      • this
      • union
      • void, volatile
    III. Tên (Tên hàm, tên biến, tên hằng, tên mảng, tên con trỏ, tên cấu trúc ....)

    Tên chỉ bao gồm:
    1. Các chữ cái in hoa, in thường
    2. Các chữ số
    3. Gạch nối _
    • Chữ cái đầu tiên của tên không được là số.
    • Tên không được trùng với từ khóa đã nêu
    • Tên có phân biệt dạng chữ: in thường hay in hoa
    • Tên có độ dài tối đa là 32 ký tự
    • Tên không có ký tự trống trong nó.

    Mỗi một người lập trình có một sở thích đặt tên khác nhau, chúng ta có thể định nghĩa lại.

    IV. Kiểu dữ liệu chuẩn:
    1. Kiểu dữ liệu char: Kiểu Char có 2 loại sau đây:
      1. signed char (char):
        • Kích thước 1 byte
        • Phạm vi biểu diễn từ -128 đến 127
        • Chứa 256 ký tự.
      2. unsigned char:
        • Kích thước 1 byte
        • Phạm vi biểu diễn từ 0 đến 255
        • Chứa 256 ký tự
    Trong đó các ký tự phụ thuộc vào compile. Trong ngôn ngữ C thường chỉ sử dụng bảng Ký tự ANSI, hoặc ASCII
    2. Kiểu nguyên: Kiểu nguyên có các loại sau đây:
    1. int :
    • Kích thước 2 byte
    • Phạm vi biểu diễn: Từ -32768 đến 32767
    2. unsigned int:
    • Kích thước 2 byte
    • Phạm vi biểu diễn: Từ 0 đến 65535
    3. long:
    • Kích thước 4 byte
    • Phạm vi biểu diễn: Từ -2147483648 đến 2147483647
    4. unsigned long:
    • Kích thước 4 byte
    • Phạm vi biểu diễn: Từ 0 đến 4294967295
    3. Kiểu dấu chấm động:
    1. float:
    • Kích thước 4 byte
    • Phạm vi: Từ 3.4E-3.8 đến 3.4E+38
    • Độ dài có nghĩa: 7 đến 8 digit (số)
    2. double:
    • Kích thước 8 byte
    • Phạm vi: Từ 1.7E-308 đến 1.7E+308
    • Độ dài có nghĩa: 15 đến 16 digit (số)
    3. long double:
    • Kích thước 10 byte
    • Phạm vi : Từ 3.4E-4932 đến 1.1E+4932
    • Độ dài có nghĩa từ 17 đến 18 digit (số)
    Ghi chú:
    Tất cả các giá trị nằm ngoài phạm vi biểu diễn, C sẽ coi như nó là 0 (zero)
    Các ký tự cũng chính là kiểu nguyên.
    Kiểu chuỗi(String) chính là mảng các ký tự

    Còn nữa.
    Đã được chỉnh sửa lần cuối bởi shinichi_haha : 09-12-2006 lúc 12:47 PM.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Định nghĩa

    V. Định nghĩa kiểu - Từ khóa typedef:
    1. Cú pháp: typedef tênkiểuchuẩn tênkiểuthaythế;
    2. Sử dụng: tênkiểuthaythế tênbiến(hoặc mảng ...)
    3. Ví dụ:
      • typedef int nguyen;
      • typedef float mt[50];
    4. Khi sử dụng(ví dụ khai báo)
      • nguyen x,y, a[50]; /*Khai bao biến và mảng kiểu nguyên (int)*/
      • mt a,b;/*Khai báo mảng 1 chiều kiểu float có độ dài là 50*/

    VI. Định nghĩa hằng- Từ khóa define:

    Hằng là một giá trị cố định không thay đổi trong khi tính toán, từ khóa define dùng để định nghĩa một hằng như vậy

    1. Cú pháp: #define tênhằng giátrị
    2. Ví dụ: #define pi 3.14152
    3. Sử dụng(ví dụ): result=pi*R*R;
    • Các loại hằng:
      • Hằng nguyên: Giá trị của hằng là số nguyên. Ví dụ: define min 100;
      • Hằng thực: Giá trị của hằng là số thực. Ví dụ: define Max 5000;
      • Hằng long: Giá trị của hằng là kiểu nguyên có thêm l hoặc L ở cuối.
      • Khi khai báo hằng kiểu nguyên, thực nếu không cần thiết chỉ rõ kiểu dữ liệu thì compile sẽ tự động định nghĩa.
        • Ví dụ:
    • #define min 100L
    • #define Max 5000l
    • #define soluong 5226395
    • Hằng nguyên bát phân(8): Giá trị của hằng là một số trong hệ 8 có thêm 0 ở đầu giá trị. Ví dụ: #define var8 03567
    • Hằng nguyên thập lục phân(16): Giá trị của hàm là một số trong hệ 16 có thêm 0x hoặc 0X ở đầu giá trị
      • Ví dụ:
        • #define var16 0x5a6b
        • #define var16 0X5a6b
    • Hằng ký tự: Giá trị của hằng là một ký tự được bọc bởi 2 dấu nháy đơn, hoặc là một số hệ 8 có thêm dấu '\'
      • Ví dụ:
        • #define ch 'a'
        • #define ch '\0141' /* Mã ASCII của ký tự a trong hệ 8 là 0141 */.
      • Định nghĩa một số ký tự đặc biệt và ký tự điều khiển ta bọc thêm dấu '\' cho nó như sau:
        • '\'' trả về '
        • \"' trả về "
        • '\\' trả về \
        • '\0' trả về null
        • '\n' trả về tín hiệu chuyển sang dòng mới
        • '\t' trả về tín hiệu phím tab
        • '\b' trả về tín hiệu phím backspace
        • '\r' trả về tin hiệu phím xuống dòng(Carriage return)
        • '\f' trả về tín hiệu in lên dòng mới (line feed)
    • Hằng xâu ký tự (Định nghĩa chuỗi): Giá trị của hằng là một chuỗi được bọc bởi 2 dấu nháy kép.
      • Ví dụ:
        • #define string "hello"
        • #define name "is Dreaminess"
        • #define single "a"
    Chú ý:
    • Xâu ký tự là một mảng các ký tự.
    • Giá trị của hằng: "a" và 'a' là khác nhau, giá trị 'a' là một ký tự chứa trong một byte còn "a" là một mảng ký tự gồm ký tự 'a' và Null('\0'). Trong một chuỗi '\0' là một tín hiệu kết thúc chuỗi.
    Còn nữa

    Lưu ý: Ghi rõ nguồn gốc khi sử dụng tài liệu này. Xin cảm ơn!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Biến

    Biến đại diện cho một vùng nhớ nào đó trên máy tính có thể thay đổi được. Việc đưa biến vào chương trình thông qua tên biến và kiểu dữ liệu của biến(kiểu biến).

    Tên biến tuân theo quy tắc đặt tên đã nếu ở trên.
    Kiểu dữ liệu của biến bao gồm các kiểu dữ liệu chuẩn đã nêu và một vài kiểu dữ liệu tự chọn như là: Kiểu liệt kê, kiểu vô hướng, kiểu bản ghi .......

    I. Cách khao báo biến:
    kiểukiến tênbiến; /* Các tên biến cách nhau bằng một dấy phảy */
    • Ví dụ: int a,b; /*Khai báo 2 biến a và b kiểu int*/
    II. Vị trí khai báo biến:
    Biến được khai báo ngay sau tín hiệu(lệnh) '{' của hàm hoặc của một khối lệnh
    Khai báo xong mới được xử lý biến.

    Ví dụ:

    PHP Code:
    int main ()
    {
         
    int x/*Khai báo biến x kiểu int,  đúng */
         
    int m,n/*Khai báo 2 biến m, n  kiểu int, đúng */

               
    x=1/*Khởi gán cho biến */
    ............... /*Đã tiến hành xử lý các nhiệm vụ của hàm, ví dụ:*/
               
    x=m*n;
               
    printf("Gia tri cua x la:  %u",x);
    ....................
         
    float d/*Khai báo biến sai*/
    ..................

    III. Gán và khởi gán.
    • Để gán một giá trị cho biến ta dùng toán tử '=' như sau:
    tên biến = giá trị gán cho biến /*Giá trị phải phù hợp với kiểu dữ liệu khai báo */
    • Khởi gán một biến ta có 2 cách:
    1. Khai báo xong rồi gán cho nó một giá trị.
    2. Gán ngay khi khai báo.
    • Ví dụ:
    PHP Code:
    void main ()
    {
       
    int a,b/*Khai báo 2 biến a và b kiểu int */
       
    int i=0,j=1/* Khai báo biến kiểu int và khởi gán cho biến i giá trị 0 và j giá trị 1 */
        
    float os=3.5/*Khai báo biến kiểu float và khởi gán biến os giá trị 3.5 */
            
             
    a=3/*Khởi gán cho biến ngay trước khi xử lý biến */
    ....................

    IV. Lấy địa chỉ của biến:

    Mỗi biến được cấp phát một vùng nhớ gồm các byte liên tiếp nhau. Địa chỉ bye đầu tiên cũng chính là địa chỉ của biến
    Sử dụng tín hiệu & để lấy địa chỉ của biến trong các hàm như hàm scanf hay con trỏ ....

    Ví dụ: scanf ('%d', &x);
    hay point=&x; với point là biến con trỏ.
    Còn nữa

    Lưu ý: Ghi rõ nguồn gốc khi sử dụng tài liệu này. Xin cảm ơn!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mảng là một tập hợp nhiều phần tử tương đương với một biến có cùng kiểu dữ liệu. Mỗi phần tử mang một giá trị khác nhau, các phần tử chung nhau một tên(tên mảng ) và phân biệt với nhau qua các chỉ số.
    Các phần tử của mảng được cung cấp một vùng nhớ riêng và các vùng nhớ nằm liên tiếp nhau tạo thành một dãy

    Kiểu dữ liệu cho mảng: Biến có bao nhiêu mảng có bấy nhiêu
    Tên mảng: Theo nguyên tắc đặt tên đã nêu ở trên
    Số chiều: Mỗi chiều được định nghĩa trong một cặp ngoặc vuông, [..]
    Kích thước mỗi chiều: Là một số nguyên không dấu.
    Khai báo: kiểudữliệu tênmảng[kích thước][kích thước].......

    Trong C, vị trí khai báo mảng cũng như khai báo biến. Chỉ khai báo ngay sau tín hiệu bắt đầu { và trước khi xử lý mảng.

    Ví dụ khai báo:
    int a[50]; /* Khai báo mảng nguyên, một chiều, tên mảng là a, kích thước mảng là 50 , số phần tử của mảng một chiều chính là số chỉ định kích thước mảng một chiều. */
    float vec[75][100]; /* Khai báo mảng vec là mảng thực, 2 chiều, chiều thứ nhất có kích thước là 75 , chiều thứ 2 có kích thước là 100, số phần tử mảng lúc này là 75*100 = 7500 phần tử.*/
    long Te[max]; /*Khai bao mảng Te với kích thước phụ thuộc biến max. */
    Cũng có thể khai báo gộp như sau:
    float vec[75][100], x[60], y[125]; /* Trong khai báo này:
    vec: là mảng số thực 2 chiều có kích thước là 75x100
    x, y: là 2 mảng số thực một chiều có kích thước lần lượt là 60, 125 */
    Sử dụng:
    Giả sử ta đã khai báo mảng a như sau: float a[3];
    Khi đưa vào sử dụng ta có thể:
    1. a[1] = 3.5 /* Nếu chỉ gán cho nguyên phần tử a[1], thì phần tử a[1] sẽ mang giá trị mà nó được gán, còn a[2], a[3] sẽ mang một giá trị do trình dịch quyết định. */
    2. Tương tự khi ta chỉ dùng 2 phần tử trong 3 phần tử đã khai báo thì chương trình vẫn hoạt động và phần tử không được xử lý ở một số trình dịch sẽ tự động được gán một giá trị ngẫu nhiên. Điều này có thể vô tình làm cho chương trình bị rối loạn.
    3. Ta chỉ có thể xử lý tối đa là 3 phần tử cho mảng a vừa khai báo, ví dụ bạn thêm vào a[4] => một số trình dịch sẽ báo lỗi, nhưng cũng có một số trình vẫn cứ chạy nhưng sau đó bạn sẽ thấy sự khốn khổ vì việc này vì nó mang một giá trị mà bạn cũng không biết nó là giá trị gì. Bạn nên cẩn thận thì hơn.
    Tương tự như mảng nhiều chiều( mảng nhiều chiều là mảng(1 chiều) của mảng). Chẳng hạn bạn khai báo mảng vec 2 chiều như sau: float vec[2][2], lúc đó mảng vec sẽ có các phần tử như sau: vec[1][1], vec[1][2], vec[2][1], vec[2][2]. Nếu bạn bỏ qua không xử lý phần tử nào thì phần tử đó sẽ mang một giá trị do trình dịch chỉ định. Bạn cũng không thể xử lý phần tử nằm ngoài phạm vi khai báo, ví dụ bạn gán vec[3][1] =5.9 vậy là không được rồi.
    Các chú ý:
    1. Khai báo và sử dụng phải khớp với nhau, về chỉ số của phần tử tương ứng chiều của mảng. Ví dụ: Bạn khai báo mảng a một chiều nhưng bạn lại gán a[1][2]=8.5 là không được, hoặc bạn khai báo mảng vec là 2 chiều nhưng bạn lại gán là vec[2] = 7.5 cũng không được.
    2. Có thể đưa các biến và biểu thức vào để xây dựng cho mảng mảng, ví dụ float a[max] hoặc a[i] (với i=1) thì a[i+1] == a[2].
    3. ở Borland C khi khai báo float a[10], thì phần tử đầu tiên của mảng là a[1], nhưng cũng khai báo vậy ở một trình dịch khác phần tử đầu tiên lại là a[0].
    4. Các biểu thức hoặc giá trị đưa vào xây dựng mảng nếu như giá trị của biểu thức hoặc giá trị là số thực thì sẽ chỉ lấy phần nguyên làm chỉ số. Ví dụ a[3.8] sẽ tương tương là a[3].
    5. Nên kiểm soát kỹ càng khi sử dụng mảng nhất là khi các biểu thức đưa vào xây dựng mảng có một kết quả không xác định hay trong các vòng lặp.
    Khởi gán cho mảng.
    Khởi gán cho mảng cũng có 2 cách sau đây.

    Khai báo xong rồi khởi gán:
    Code:
    float a[10]; /*Khai báo mảng số thực a*/
    a[1]=2.3;   /*Gán cho phần tử a[1]*/
    a[2]=5.8;  /* Gán cho phần tử a[2]*/
    Gán luôn khi khai báo:
    Code:
    float a[5]={3.5, 6.9, 5.5}; /* Khai báo và gán cho a[1], a[2], a[3]
    */
    Code:
    float a[5][5]={
    {3.5,3.6}, /*Khởi gán 2 phần tử hàng thứ nhất, có cả dấu phảy nhé*/ {7.8,9.5,8.5,6.9,7.5}, /*Khởi gán cả 5 phần tử của hàng thứ 2.*/ {.........}
    }
    Ta cũng có thể khởi gán như sau:
    Code:
    float a[]={5.5, 6.8, 6.9}/*Khởi gán cho các giá trị a[0], a[1], a[2].
    Phần tử đầu tiên là a[0] chứ không phải là a[1] */
    Code:
    float x[][3]= {
    {25,31,4}, /*Khởi gán hàng a[0]*/ {12,13,89}, /*Khởi gán hàng a[1]*/ {45,15,22} }
    Hoặc là:
    Code:
    float z[][3]={
    {31.5}, {12,13}, {-45.76}
    };
    Riêng mảng kiểu char các giá trị của các phần tử có thể là số hoặc ký tự.
    Ví dụ:
    Code:
    char Name[]={'h','a','g'}
    Lưu ý:
    1. Thường thì, biến hay mảng khi không được khởi gán sẽ mang giá trị là 0. Tuy nhiên ở một số trình dịch khác, có thể nó sẽ không mang giá trị 0, có thể nó mang giá trị null hoặc một giá trị nào đó. Nên nhiều trường hợp làm việc ở trình dịch này thì chương trình chạy tốt, nhưng sang một trình dịch khác nó lại không chạy được theo yêu cầu.
    2. Mảng là một dãy các biến, nếu không sử dụng mảng ta có thể sử dụng nhiều biến để thay thế mảng
    Còn nữa

    Lưu ý: Ghi rõ nguồn gốc khi sử dụng tài liệu này. Xin cảm ơn!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  5. #5
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Input/Output data.

    Thường khi bạn xem một chương trình C bạn sẽ thấy đa số chương trình có các hàm sau:
    getch(); printf(".."), sacnf(".."), getchar(); putchar(), clrscr(). ở đây Dreaminess sẽ giới thiệu qua về các hàm đó.

    1. clrscr() - Hàm này là hàm xóa màn hình(clear screen). Sử dụng hàm này để xóa đi những gì đã in lên màn hình trước lệnh này.
    2. getchar()- Hàm này để lấy (get) một ký tự(character) vào bộ nhớ. Ví dụ lấy một ký tự đưa vào biến:
    Code:
     char ch; ch=getchar();
    .
    3. getch()- Hàm này để lấy một ký tự từ bộ đệm bàn phím đưa vào bộ nhớ. Nhưng khác với hàm getchar() là khi sử dụng hàm này ký tự lấy vào sẽ không hiển thị lên màn hình như hàm getchar(). Và nếu bộ đệm có chứa ký tự nào thì hàm sẽ lấy luôn ký tự đó. Do đó mà khi chúng ta dùng để dừng chương trình thì chỉ nhấn một phím bất kỳ là chương trình kết thúc luôn.
    4. putchar() - Hàm này để đưa (put) một ký tự trong bộ nhớ ra màn hình. Ví dụ đưa ký tự chứa trong biến ch lên màn hình: putchar(ch);. Dùng hàm này ký tự đưa lên màn hình sẽ có một màu hiển thị trong các trường hợp (thường là màu trắng hoặc đen).
    5. putch() - Hàm này cũng tương tự như hàm trên nhưng ký tự được đưa qua bộ đệm trước khi đưa ra màn hình, do đó có thể đưa ra màn hình ký tự có các màu khác nhau dựa vào các hàm xử lý màu chữ như hàm textcolor().

    Riêng 2 hàm printf("..") và hàm scanf("..") dùng rất nhiều trong C. Bây giờ chúng ta sẽ quan tâm hơn tới 2 hàm này một chút nhỉ.

    1. Hàm printf("..") dùng để in có định dạng(print and formats) tất cả những gì trong bộ nhớ mà nó có thể hiển thị lên màn hình được. Hàm này có rất nhiều các tín hiệu định dạng cho kết quả in ra.

    Về cơ bản hàm printf("..") có cú pháp như sau:
    printf("các tín hiệu điều khiển+Nội dung hiển thị+các tín hiệu định dạng", các đối cần in);
    hoặc printf("Nội dung hiển thị+các tín hiệu định dạng", các đối cần in,"các tín hiệu điều khiển");

    Ví dụ:
    Code:
    printf("Kết quả");
    printf("\nPhương trình có 2 nghiệm là: x1=%f,  x2=%f",x1,x2);
    sẽ in ra màn hình dạng như sau:
    [fixed]Kết quả
    Phương trình có 2 nghiệm là: x1=5.2, x2=1[/fixed]

    Các tín hiệu điều khiển có thể đặt ở các vị trí khác nhau trong hàm printf("..") và các tín hiệu này luôn nằm bên trong một cặp dấu ngoặc kép.
    Các tín hiệu điều khiển cơ bản nhất là

    * \n: (new) tín hiệu này để chuyển một chuỗi ngay sau nó sang một dòng mới
    * \t: (tab) để thụt dòng một chuỗi khi in với một khoảng được trình biên dịch định sẵn
    * \b: (back) Dùng để lùi lại một bước
    * \f : Dùng để sang trang mới

    Các tín hiệu định dạng bạn cũng có thể đặt ở bất kỳ ở vị trí nào trong hàm printf("..") sao cho hợp lý, và cũng được nằm trong cặp dấu ngoặc kép. Các tín hiệu định dạng được phân biệt với các chuỗi văn bản thường bằng thêm vào ký tự % ở trước nó.

    Về cơ bản các tín hiệu chuyển dạng sẽ có dạng như sau.
    %-[fw][pp][ký tự định dạng]. Trong đó:
    • Ký tự định dạng là các ký tự được định nghĩa trước bởi những người viết trình compile. Sau đây là chi tiết các ký tự định dạng trong hàm printf("..") của C
      • d(%d) : Có tín kiệu này đối in ra sẽ ở dạng số thập phân (Decimal)
      • o(%o) : Có tín hiệu này đối in ra sẽ ở dạng số hệ bát phân (octal)
      • u(%u) : Có tín hiệu này đối in ra sẽ ở dạng số thập phân không dấu (Unsigned Decimal)
      • c(%c) : Có tín hiệu này đối in ra là một ký tự (Character)
      • s(%s) : Có tín hiệu này đối in ra là một chuỗi (string), độ dài chuỗi in ra đến khi nào gặp ký tự null, hoặc đủ độ dài khai báo bởi tham số pp
      • e(%e): Có tín hiệu này đối in ra ở dạng số thập phân mở rộng (Extended Decimal) có dạng giống như: 52.6387E+12. Trong đó phần thực(0.6387) sẽ có độ chính xác mặc định là 6 digit hoặc là pp digit(nếu có tham số pp). Phần sau chữ E tương đương với mũ 10 (10^+12, nếu là 52.6387E-12 thì sẽ là 10^-12)
      • f(%f) : Có tín hiệu này đối in ra sẽ ở dạng float(hoặc double). Trong đó phần thực sẽ mặc định độ chính xác kết quả in ra là 6 digit(số), nếu có tham số pp thì độ chính xác là pp digit
      • g(%g) : Có tín hiệu này đối sẽ in ra ở dạng số thực: hoặc float hoặc double hoặc Extended Decimal, nhưng không bao gồm các số 0 (zero) vô nghĩa.


    • Tham số pp. Chỉ dùng tham số này trong các trường hợp in ra một chuỗi (string) hoặc in ra giá trị số thực.
      • Nếu đối là chuỗi thì pp thể hiện độ dài chuỗi được in ra, trong trường hợp pp nhỏ hơn độ dài chuỗi thì chỉ có phần đầu chuỗi được in ra, trong trường hợp pp lớn hơn độ dài chuỗi thì đối in ra sẽ được thêm các khoảng trống sao cho độ dài chuỗi bằng pp. Nếu không có tham số pp này thì chuỗi sẽ được in ra toàn bộ và không chứa các khoảng trống.
      • Nếu đối là số thực thì pp thể hiện độ chính xác phần thực của kết quả. Nếu không có pp thì mặc định sẽ là 6 digit(số) cho phần thực.


    • Tham số fw. Tham số này thể hiện độ chính xác kết quả in ra. Nếu độ dài của kết quả nhỏ hơn fw thì sẽ được bù vào các khoảng trống hoặc các số 0(zero). Nếu ngắn hơn hoặc không có thì kết quả in ra có độ dài bằng độ dài chính nó.
    • - : Mặc định khi có các tham số trên, kết quả in ra sẽ dồn về bên phải, nhưng có dấu trừ kết quả sẽ được dồn sang bên trái, và chỉ lấp đầy bằng các khoảng trống.
    Để in các ký tự đặc biệt ta dùng thêm tín hiệu \ trước nó. Ví dụ:
    printf("\'") sẽ in ra '
    printf("\\") sẽ in ra \

    Chú ý:
    Chúng ta cũng có thể sử dụng các tín hiệu %ld, %lo, %lx, %lf, %le để định dạng cho kết quả in ra.
    Ta cũng có thể thay fw bằng dấu * khi đó độ dài kết quả sẽ tự động lấy độ dài là giá trị của đối(nguyên).
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  6. #6
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Input/Output Data.

    scanf(".."): (scan and format). Hàm này dùng để đọc(scan) dữ liệu từ thiết bị chuẩn(bàn phím) và đưa vào bộ nhớ theo các định dạng khai báo.

    Cấu trúc cơ bản của hàm scanf("..") như sau:
    scanf("các tín hiệu định dạng",các đối);

    Trong đó tín hiệu định dạng cơ bản sẽ như sau:
    %[*][d][các ký tự định dạng]. Trong đó:
    • *: Việc có mặt của dấu * này báo rằng dữ liệu vào vẫn đọc(scan) bình thường nhưng giá trị thì được bỏ qua không được đưa vào bộ nhớ. Và tín hiệu %* không có đối tương ứng.
    • d: Tham số này thể hiện độ dài(tính theo số ký tự) của đối sẽ được đọc(scan) và gán cho biến tương ứng(không có mặt dấu *). Nếu d nhỏ hơn chiều dài của đối nhập vào thì sẽ chỉ gán cho cho đối tương ứng giá trị có độ dài là d, phần còn lại sẽ có thể gán cho biến tiếp theo.
    • Các ký tự định dạng: Hàm scanf("..") có các ký tự định dạng được định nghĩa như sau:
      • c(%c): Tín hiệu này hàm scanf sẽ đọc từng ký tự, kể cả ký tự trắng. Đối tương ứng là con trỏ kiểu char(Dữ liệu vào là từng ký tự)
      • d(%d): Tín hiệu này hàm scanf sẽ đọc giá trị kiểu int. Đối tương ứng là con trỏ kiểu int(Dữ liệu vào là số nguyên)
      • ld(%ld): Tín hiệu này hàm scanf sẽ đọc giá trị kiểu long. Đối tương ứng là con trỏ kiểu long(Dữ liệu vào là số nguyên)
      • o(%o): Tín hiệu này hàm scanf sẽ đọc giá trị kiểu int hệ bát phân. Đối tương ứng là con trỏ kiểu int hệ bát phân(Dữ liệu vào là số nguyên hệ bát phân)
      • lo(%lo): Tín hiệu này hàm scanf sẽ đọc giá trị kiểu long hệ bát phân. Đối tương ứng là con trỏ kiểu long hệ bát phân(Dữ liệu vào là số nguyên hệ bát phân)
      • x(%x):Tín hiệu này hàm scanf sẽ đọc giá trị kiểu int hệ thập lục phân. Đối tương ứng là con trỏ kiểu int hệ thập lục phân(Dữ liệu vào là số nguyên hệ thập lục phân)
      • lx(%lx):Tín hiệu này hàm scanf sẽ đọc giá trị kiểu long hệ thập lục phân. Đối tương ứng là con trỏ kiểu long hệ thập lục phân(Dữ liệu vào là số nguyên hệ thập lục phân)
      • f(%f): Tín hiệu này hàm scanf sẽ đọc các giá trị kiểu float.Đối tương ứng là con trỏ kiểu float(Dữ liệu vào là số thực)
      • e(%e): Tín hiệu này hàm scanf sẽ đọc các giá trị kiểu float dạng số thập phân mở rộng. Đối tương ứng là con trỏ kiểu float (Dữ liệu vào là số thập phân mở rộng như 1235e+4)
      • lf(%lf): Tín hiệu này hàm scanf sẽ đọc các giá trị kiểu double. Đối tương ứng là con trỏ kiểu double(Dữ liệu vào là số thực)
      • le(%le):Tín hiệu này hàm scanf sẽ đọc các giá trị kiểu double dạng số thập phân mở rộng. Đối tương ứng là con trỏ kiểu double(Dữ liệu vào là số thực dạng số thập phân mở rộng như 123456789E+99)
      • s(%s): Tín hiệu này hàm scanf sẽ đọc các giá trị dạng chuỗi(string). Đối tương ứng là con trỏ kiểu mảng char(Dữ liệu vào là một dãy ký tự không chứa dấu cách trống-space và các dấu xuống dòng- enter)
      • %[dãy ký tự]. Tín hiệu này đọc một dãy ký tự bất kỳ là tập con của dãy ký tự có trong cặp dấu []. Đối tương ứng là con trỏ mảng kiểu char. Dữ liệu vào là một chuỗi bất kỳ kể cả ký tự cách trống (space), nhưng không có các ký tự điều khiển.
      • %[^dãy ký tự]. Tín hiệu này đọc một dãy ký tự bất kỳ là tập con của dãy ký tự có trong cặp dấu []. Đối tương ứng là con trỏ mảng kiểu char. Dữ liệu vào là một chuỗi bất kỳ kể cả ký tự cách trống (space) và các ký tự điều khiển, nên bạn phải thực hiện một loại trừ một vài ký tự để điều khiển chương trình.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  7. #7
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Operator, Instruction, commnet

    [FIXED]I. Toán tử cơ bản:

    Các toán tử số học:

    Cộng +
    Trừ -
    Nhân *
    Chia / (Nếu là chia nguyên sẽ chỉ lấy phần nguyên)
    Lấy dư % (Toán tử MOD)

    Các toán tử quan hệ:

    Lớn hơn >
    Nhỏ hơn <
    Lớn hơn hoặc bằng >=
    Nhỏ hơn hoặc bằng <=
    Bằng nhau ==
    Khác nhau !=

    Các toán tử Logic

    AND &&
    OR ||

    Toán tử tăng giảm:

    Tăng ++ (++Var hoặc Var++)
    Giảm -- (--Var hoặc Var--)

    Toán tử gán:

    = *= /= %= += -= <<= >>= &= ^= |=

    II. Các toán tử khác:

    Biểu diễn thành phần cấu trúc . (sinhvien.hoten)
    Biểu diễn thành phần cấu trúc qua con trỏ ->
    Lấy địa chỉ &
    Lấy kiểu sizeof()


    III.Câu lệnh:

    - Có thể viết trên 1 dòng
    - Có thể viết trên nhiều dòng
    - Luôn kết thúc bằng dấu ;

    IV. Khối lệnh:

    - Một khối lệnh được tạo lên bởi nhiều câu lệnh khác nhau
    - Được bọc bởi cặp dấu {}
    - Có thể khai báo thêm biến, mảng... trong khối lệnh, biến, mảng... này là biến, mảng ... cục bộ(Chỉ hoạt động trong khối lệnh)
    - Có thể viết các khối lệnh bên trong các khối lệnh

    V. Chú thích (Comment):


    /*Chú thích
    Bắt đầu bằng /*
    HOẶC Viết trên một dòng
    HOẶC Viết trên nhiều dòng
    Kết thúc bằng */
    Các chú thích có thể viết: Ngay sau câu lệnh.
    Trên một dòng mới. [/FIXED]
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  8. #8
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Control Flow.

    [FIXED]I. If-Else:

    if (expression)
    (Biểu thức)
    statement1
    (Câu lệnh 1)
    else
    statement2
    (Câu lệnh 2)

    Trong đó có hay không else và statement2 là tùy bạn. Nếu expression đúng ( khi expression khác không) thì thực hiện Statement1. Nếu expression sai(Khi expression = 0) thì thực hiện câu lệnh sau else (Statement2 - nếu có). Nếu không có else sẽ chuyển sang câu lệnh sau IF

    II. Else-If:

    if (expression)
    statement
    else if (expression)
    statement
    else if (expression)
    statement
    else if (expression)
    statement
    else
    statement

    Tương tự như trên, nếu expression đúng thì thực hiện statement ngay sau nó, nếu sai sẽ thực hiện lệnh sau else theo trình tự từ trên xuống.

    III. Switch(Công tắc chuyển - Cấu trúc rẽ nhánh):

    switch (expression)
    {
    case const-expr: statements
    case const-expr: statements
    default: statements
    }

    Expression là một biểu thức trong khóa chuyển.
    Case là một từ khóa để lựa các hằng của expression
    const-expr là một hằng của biểu thức expression.
    Nếu như expression có giá trị trùng với const-expr thì sẽ thực hiện statement tương ứng với nó. Nếu không chuyển sang thực hiện các case sau nó.Nếu toàn bộ không trùng sẽ thực hiện default.
    default là một nhãn mặc định để thực hiện nếu như các case, expression không có giá trị trùng với const-expr thì sẽ thực hiện statement sau nhãn này. default là một nhãn tùy chọn(có hay không đều được). Cấu trúc switch kết thúc khi gặp lệnh break; hoặc tín hiệu } của cấu trúc.

    IV. While and For

    while (expression)
    statement
    Chừng nào expression còn đúng (khác không) thì chừng đó statement vẫn còn được thực hiện. Vòng lặp while sẽ thoát khi expression sai.

    Lặp for

    for (expr1; expr2; expr3)
    statement

    Vòng lặp for này tương đương với vòng lặp sau đây:

    expr1;
    while (expr2) {
    statement
    expr3;
    }

    Như vậy bạn sẽ thấy ngay:
    expr1: là biểu thức khởi đầu.
    expr2: là biểu thức điều kiện
    expr3: là biểu thức được xử lý trong thân vòng lặp.

    Theo nguyên tắc thì expr1 và expr3 là 2 biểu thức liên quan đến biểu thức expr2. Nếu expr1 và expr3 bị bỏ qua thì rất dễ dàng làm cho vòng lặp bị phình ra. Nếu expr2 không hiện hữu thì vòng lặp sẽ luôn đúng.

    V.Do-While:

    do
    statement
    while (expression);

    Câu lệnh statement sẽ được thực hiện sau đó kiểm tra điều kiện của biểu thức expression . Nếu đúng statement sẽ thực hiện tiếp. Nếu sai vòng lặp sẽ ngừng. Vòng lặp này luôn thực hiện ít nhất một lần.

    VI.Break and Continue:

    Break là một câu lệnh dùng để kết thúc sớm hơn các vòng lặp for, while, và do, ngắt cho switch.

    continue; là một câu lệnh ngược lại với break. Nhưng nó được dùng ít hơn.
    Nó dùng để tiếp tục lặp lại các vòng lặp for, while, hoặc do loop chứa nó. Trong while và do continue sẽ chuyển ngay về phần kiểm tra. Còn trong for sẽ quay lại một bước. Và continue không được áp dụng cho switch.

    VII. Goto và lables

    Goto là câu lệnh cho phép nhảy tới một nhãn nằm trong cũng một hàm với nó.
    lable: là một tên được đặt như tên biến, nhưng có thêm dấu : ở ngay sau nó. [/FIXED]
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

Các đề tài tương tự

  1. Thuyết Trình Ext Js for asp.net
    Gửi bởi bigs1993 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 07-12-2013, 11:06 PM
  2. bài tập lý thuyết đồ thị
    Gửi bởi canhocthem trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 11-10-2010, 11:39 PM
  3. lý thuyết đồ thị!
    Gửi bởi phamtuan04081989 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 17-05-2010, 03:22 PM
  4. lý thuyết tô màu cho đồ thị
    Gửi bởi #include# trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 24-09-2008, 04:11 PM
  5. Lý thuyết đồ thị với C++
    Gửi bởi CuongNH trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 15-04-2008, 09:39 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn