Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
210,29 KB
Nội dung
LẬP TRÌNH C I.MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG C 1.1 Bộ ký tự Mọi ngôn ngữ lập trình xây dựng từ ký tự Ngôn ngữ C xây dựng ký tự sau: 26 chữ hoa : A B C Z 26 chữ thường : a b c z 10 chữ số : Các ký hiệu toán học : + - * / = ( ) Ký tự gạch nối : _ Các ký tự khác : , : ; [ ] {} ! \ & % # $ Dấu cách (space) dùng để tách từ @Lưu ý: Khi viết chương trình, ta không sử dụng ký tự khác ký tự 1.2 Từ khóa Từ khoá từ sử dụng để khai báo kiểu liệu, để viết toán tử câu lệnh Bảng liệt kê từ khoá TURBO C: Asm break case cdecl Char const continue default Do double else enum extern far float for Goto huge if int interrupt long near pascal register return short signed sizeof static struct switch tipedef union unsigned void volatile while @Lưu ý: - Không dùng từ khoá để đặt tên cho hằng, biến, mảng, hàm, - Từ khoá phải viết chữ thường, ví dụ: viết từ khoá khai báo kiểu nguyên int INT 1.3 Tên Khái niệm tên quan trọng trình lập trình, thể rõ ý nghĩa chương trình mà dùng để xác định đại lượng khác thực chương trình Tên thường đặt cho hằng, biến, mảng, trỏ, nhãn,… Chiều dài tối đa tên 32 ký tự Tên biến hợp lệ chuỗi ký tự liên tục gồm: Ký tự chữ, số dấu gạch Ký tự đầu tên phải chữ dấu gạch Khi đặt tên không đặt trùng với từ khóa Ví dụ 1.1: Các tên đúng: delta, a_1, Num_ODD, Case Các tên sai: 3a_1 (ký tự đầu 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) Ví dụ 1.2: number khác Number case khác Case (case từ khóa, bạn đặt tên Case đúng) @Lưu ý: Trong C, tên phân biệt chữ hoa, chữ thường 1.4 Kiểu liệu Có kiểu liệu C là: char, int, float, double TT Kiểu liệu Kích thước unsigned char byte char byte enum bytes unsigned int bytes short int bytes int bytes Miền giá trị đến 255 – 128 đến 127 – 32,768 đến 32,767 đến 65,535 – 32,768 đến 32,767 – 32,768 đến 32,767 10 11 unsigned long long float double long double bytes bytes bytes bytes 10 bytes đến 4,294,967,295 – 2,147,483,648 đến 2,147,483,647 3.4 * 10–38 đến 3.4 * 1038 1.7 * 10–308 đến 1.7 * 10308 3.4 * 10–4932 đến 1.1 * 104932 1.5 Lời thích Trong lập trình cần phải ghi để giải thích 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 để người khác đọc vào dễ hiểu Trong C có ghi sau: // /* nội dung ghi */ Tóm lại, ghi dạng // dùng để ghi hàng dạng /* … */ ghi hàng nhiều hàng II CẤU TRÚC CỦA MỘT CHƯƠNG TRÌNH C Một chương trình bao gồm nhiều hàm, hàm người lập trình tổ chức để giải công việc toán cần giải Một chương trình C để thực thi cần phải có hàm main() Cấu trúc chương trình sau: • Các #include ( dùng để khai báo sử dụng hàm chuẩn) • Các #define ( dùng để định nghĩa ) • Khai báo đối tượng liệu ( biến, mảng, cấu trúc vv ) • Khai báo nguyên mẫu hàm • Hàm main() • Định nghĩa hàm ( hàm main đặt sau xen vào hàm khác) Ví dụ 1.3: ? #include //k.báo sử dụng thư viện xuất/nhập chuẩn C void main(void) { double x,y; //Khai báo biến x,y //kiểu số thực printf("\n Nhap x va y"); //xuất liệu hình scanf("%lf%lf",&x,&y); //nhập liệu từ bàn phím } //và lưu vào vùng địa @Lưu ý: Một số qui tắc cần nhớ viết chương trình: - Mỗi câu lệnh viết hay nhiều dòng phải kết thúc dấu (;) - Trong chương trình, ta sử dụng hàm chuẩn, đầu chương trình ta phải khai báo sử dụng, ví dụ: #include "stdio.h" III HẰNG - BIẾN - TOÁN TỬ - BIỂU THỨC 3.1 Khai báo Hằng đại lượng mà giá trị không thay đổi trình tính toán Nguyên tắc đặt tên theo nguyên tắc đặt tên C + Khai báo Cú pháp: #define Diễn giải: #define: Từ khóa để định nghĩa biến : tên mà ta cần định nghĩa : Giá trị khởi gán cho Ví dụ: #define MAX 1000 Lúc này, tất tên MAX chương trình xuất sau thay 1000 Vì vậy, ta thường gọi MAX tên hằng, biểu diễn số 1000 3.2 Khai báo biến + Khai báo Cú pháp: ; Diễn giải: - : kiểu liệu muốn khai báo cho biến - : gồm tên biến có kiểu liệu, tên biến cách dấu phẩy (,), cuối dấu chấm phẩy (;) Ví dụ int iTuoi; //khai báo biến iTuoi có kiểu int float fTrongLuong; //khai báo biến fTrongLuong có kiểu float char cKyTu1, cKyTu2; //khai báo biến cKyTu1, cKyTu2 có kiểu char + Vừa khai báo vừa khởi gán giá trị cho biến Có thể kết hợp việc khai báo với toán tử gán để biến nhận giá trị lúc khai báo Ví dụ Khai báo trước, gán giá trị sau ? void main(void) { int a, b, c; a = 1; b = 2; c = 5; … } Vừa khai báo vừa gán giá trị: ? void main(void) { int a = 1, b = 2, c = 5; … } + Phạm vi biến Khi lập trình, phải nắm rõ phạm vi biến Nếu khai báo sử dụng không đúng, không rõ ràng dẫn đến sai sót khó kiểm soát a Khai báo biến (biến toàn cục): Vị trí biến đặt bên tất hàm, cấu trúc Các biến toàn cục có ảnh hưởng đến toàn chương trình Chu trình sống chạy chương trình đến lúc kết thúc chương trình b Khai báo biến (biến cục bộ): Vị trí biến đặt bên hàm, cấu trúc… Chỉ ảnh hưởng nội bên hàm, cấu trúc đó… Chu trình sống lúc hàm, cấu trúc gọi thực đến lúc thực xong 3.3 Biểu thức Biểu thức phối hợp toán tử toán hạng Ví dụ: a+b b = + * 2/i a = % (7 + 1) x++ * 2/4 + – power(i, 2) Toán hạng sử dụng biểu thức số, biến, hàm 3.4 Phép toán Trong C có nhóm toán tử yếu sau đây: + Phép toán số học + : phép cộng – : phép trừ * : phép nhân / : phép chia % : phép chia lấy phần dư, áp dụng toán hạng có kiểu liệu char, int, long + Phép toán quan hệ > : lớn >= : lớn < : nhỏ > : dịch phải b)? a:b; kết max = IV NHẬP VÀ XUẤT DỮ LIỆU 4.1 Lệnh xuất Cú pháp: printf ("chuỗi định dạng"[, đối mục 1, đối mục 2,…]); Chức năng: Đưa kết hình - : dùng để định dạng cho liệu xuất hình - , …: mục kiện cần in hình Các biến, biểu thức phải định trị trước in - Chuỗi định dạng: đặt cặp nháy kép (" "), gồm loại: + Đối với chuỗi kí tự ghi in giống + Đối với kí tự chuyển đổi dạng thức cho phép kết xuất giá trị đối mục hình tạm gọi mã định dạng Sau dấu mô tả định dạng: %c : Ký tự đơn %s : Chuỗi %d : Số nguyên hệ thập phân %f : Số chấm động (ký hiệu thập phân) %e : Số chấm động (ký hiệu có số mũ) %g : Dùng %e %f, tuỳ theo loại ngắn hơn, không in số vô nghĩa %x : Hệ 16 không dấu %u : Số thập phân không dấu %o : Số nguyên bát phân không dấu l : Tiền tố dùng kèm với %d, %u, %x, %o để số nguyên dài (ví dụ %ld) Ví dụ: ? #include //cần khai báo tiền xử lý stdio.h, hàm main() // có dùng hàm printf void main (void) { printf(“Hello!”); } //Cho hình kết quả: Hello Ví dụ: ? #include //cần khai báo tiền xử lý stdio.h, hàm main() // có dùng hàm printf void main (void) { int n=65; printf(“Gia tri cua n la: %d”,n); } //Cho hình kết quả: Gia tri cua n la:65 //%d dùng để định dạng cho giá trị n // thay %d thành %c kết cho hình là: Gia tri cua n la A, %c mã định dạng cho ký tự, tương ứng với mã 65 ký tự A + Các ký tự điều khiển ký tự đặc biệt \n : Nhảy xuống dòng canh cột \t : Canh cột tab ngang \r : Nhảy đầu hàng, không xuống hàng \a : Tiếng kêu bip \\ : In dấu \ \" : In dấu " \' : In dấu ' %%: In dấu % Vi dụ: 4.2 Lệnh nhập Cú pháp: scanf ("chuỗi định dạng"[, đối mục 1, đối mục 2,…]); Chức năng: Đọc liệu từ bàn phím - Đạnh dạng tương tự hàm printf Ví dụ ? #include void main(void) { float a,b,c printf("nhap vao he so a, b, c"); scanf("%f%f%f", &a,&b,&c); } -Nhập vào số a, b,c phải cách khoảng trắng enter - Các ký tự định dạng tương ứng cặp biến - Ký tự & ký tự lấy địa biến hàm scanf đọc liệu từ bàn phím lưu vào vùng địa xác định 4.3 Bài tập Viết chương trình đọc vào số nguyên in kết phép (+), phép trừ (-), phép nhân (*), phép chia (/) Viết chương trình đọc từ bàn phím số nguyên biểu diễn ngày, tháng, năm xuất hình dạng "ngay/thang/nam" V CÂU LỆNH ĐIỀU KIỆN 5.1 Lệnh if Câu lệnh if cho phép lựa chọn hai nhánh tùy thuộc vào giá trị biểu thức logic (true) hay sai (false) - Dạng Cú pháp: if (bt_logic) ; Diễn giải: Nếu bt_logic có giá trị thực khối lệnh thoát khỏi if, ngược lại không làm thoát khỏi if Ví dụ 1: Viết chương trình nhập vào số nguyên a, b Tìm in số lớn a Phác họa lời giải: Trước tiên ta cho giá trị a giá trị lớn cách gán a cho max (max biến khai báo kiểu liệu với a, b) Sau so sánh b với a, b lớn a ta gán b cho max cuối ta kết max giá trị lớn b Viết chương trình ? 10 11 12 13 14 15 16 17 18 19 20 21 22 #include void main(void){ int ia, ib, imax; printf("Nhap vao so a: "); scanf("%d", &ia); printf("Nhap vao so b: "); scanf("%d", &ib); imax = ia; if (ib > ia) imax = ib; printf("So lon nhat = %d.\n", imax); } - Dạng Cú pháp: if (bt_logic) ; else ; Diễn giải: Nếu bt_logic có giá trị thực khối lệnh thoát khỏi if, ngược lại thực khối lệnh thoát khỏi if Ví dụ 2: Viết chương trình nhập vào số nguyên a, b In thông báo "a b" a = b, ngược lại in thông báo "a khác b" a Phác họa lời giải: So sánh a với b, a b in câu thông báo "a b", ngược lại in thông báo "a khác b" b Viết chương trình: ? #include void main(void) { int ia, ib; 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 printf("Nhap vao so a: "); scanf("%d", &ia); printf("Nhap vao so b: "); scanf("%d", &ib); if (ia == ib) printf("a bang b\n"); else printf("a khac b\n"); } ?Lưu ý: Nếu , bao gồm từ lệnh trở lên phải đặt cặp dấu {} 5.2 Cấu trúc if …else if Cú pháp: if (bt_logic1) khối lệnh 1; else if (bt_logic 2) khối lệnh 2; … else if (bt_logic n-1) khối lệnh n-1; else khối lệnh n; Diễn giải: Nếu bt_logic có giá trị đúngthì thực khối lệnh thoát khỏi cấu trúc if Ngược lại, bt_logic có giá trị đúngthì thực khối lệnh thoát khỏi cấu trúc if … Ngược lại, bt_logic n-1 đúngthì thực khối lệnh n-1 thoát khỏi cấu trúc if, ngược lại thực khối lệnh n Ví dụ 3: Viết chương trình nhập vào số nguyên a, b In thông báo "a lớn b" a>b, in thông báo "a nhỏ b" a b in thông báo "a lớn b", ngược lại a < b in thông báo "a nhỏ b", ngược với trường hợp in thông báo "a b" b Viết chương trình: ? 10 11 12 13 #include void main(void) { int ia, ib; printf("Nhap vao so a: ");scanf("%d", &ia); printf("Nhap vao so b: ");scanf("%d", &ib); if (ia>ib) 14 15 16 17 printf("a lon hon b.\n"); else if } 5.3 Lệnh switch Cú pháp: switch (biểu thức) { case giá trị : khối lệnh 1; break; case giá trị : khối lệnh 2; break; … case giá trị n : khối lệnh n; break; default : khối lệnh; [break;] } Diễn giải: Khi giá trị biểu thức giá trị i lệnh i thực Nếu saulệnh i lệnh break tiếp tục thực lệnh sau Ngược lại thoát khỏi cấu trúc switch Nếu giá trị biểu thức không trùng với giá trị i lệnh tương ứng với từ khóa default thực Lưu ý: - Không đặt dấu chấm phẩy sau câu lệnh switch - Biểu thức phải có kết làgiá trị nguyên (char, int, long,…) - Lệnh 1, 2…n gồm nhiều lệnh, không cần đặt cặp dấu { } Ví dụ 4: Nhập vào tháng năm, cho biết tháng thuộc quý năm ? 11 #include #include void main(void) { int ithang; printf("Nhap vao thang: "); scanf("%d", &ithang); switch(ithang) { case 1: case 2: case : printf("Quy 1.\n");break; case 4: case 5: case 6: printf("Quy 2.\n");break; case 7: case 8: case 9: printf("Quy 3.\n");break; case 10: case 11: case 12: printf("Quy 4.\n");break; default : printf("Phai nhap vao so khoang 12\n"); 2 2 } getch(); //Dừng hình để xem kết quả, gõ phím để tiếp tục } 3 3 3 5.4 Bài thực hành Viết chương trình nhập vào số nguyên dương, in thông báo số vừa nhập số chẵn hay lẻ Hướng dẫn: Nhập vào số nguyên dương x Kiểm tra x chia hết cho hai (tức x chia dư 0) x số chẵn, ngược lại số lẻ Viết chương trình nhập vào số nguyên Tìm in số lớn Hướng dẫn: Ta có số nguyên a, b, c, d Tìm số nguyên lớn x, y cặp (a, b) (c, d) Sau so sánh số nguyên x, y để tìm số nguyên lớn Viết chương trình giải phương trình bậc nhất: ax +b =0 Hướng dẫn: Nhập vào biến a, b Nếu a=0 Nếu b=0 Phương trình vô số nghiệm Ngược lại Phương trình vô nghiệm Hết Ngược lại x= -b/a Hết Viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0, với a, b, c nhập vào từ bàn phím Hướng dẫn: Nhập vào biến a, b, c Nếu a=0 Giải phương trình bậc Ngược lại Tính Delta = b*b - 4*a*c Nếu Delta < b) Chuỗi mảng kí tự kí tự cuối có mã c) Chuỗi mảng kí tự kí tự cuối có mã NULL d) Chuỗi mảng trị byte (1 byte)/ Câu 126: Các định dạng sau đâu sử dụng để xuất số nguyên không dấu: a) “%d” b) “%unsigned” c) “%i” d) “%u” Câu 127: Định dạng dùng để hiển thị số thực: a) “%f” b) “%u” c) “%i” d) “%float” Câu 128:Đâu toán tử toán học: a) +, /, % b) +, -, *, /, %, ++, , >, < c) &&, || d) +, -, *, /, %, =, != Câu 129: Một biến phải bắt đầu với: a) Một kí tự thường chữ dấu gạch b) Một dấu gạch c) Một kí tự kiểu số d) Một toán tử như: +, -… Câu 130: Chọn kết đoạn code sau: for (int i=1; i…->SV3->SV4->…); SV2 cho SV4: { P=SV1->tiep; SV1->tiep = SV3->tiep; SV3->tiep = P; /* -*/ P=P->tiep; SV3->tiep->tiep = SV1->tiep->tiep; SV1->tiep-tiep = P; }; { While(P != NULL) {visit(P->thongtin); P = P->tiep;}; }; Câu 176: Cho đoạn chương trình: char S[] = “Helen”; char *p = S; char c = *(p+3); Giá trị c là: a) ‘H’ b) ‘e’ c) ‘l’ d) ‘n’ Câu 177: Chọn câu đúng: DS (2B + 1KB) + 2B Đổi(…->SV1->SV2->…->SV3->SV4->…); SV2 cho SV4: Cách 1: tương tự khai báo 1; Cách 2: { P = SV2->thongtin; SV2->thongtin = SV4->thongtin; SV4->thongtin = P; }; Đổi a) “struct” kiểu liệu người dùng định nghĩa bao gồm nhiều thành phần có kiểu khác b) “struct” kết hợp nhiều thành phần có thể có kiểu khác c) Cả ý đểu d) Cả hai ý sai Câu 178:Toán tử sau truy xuất thành phần trỏ cấu trúc: a) “.”(Toán tử chấm) b) “->”(Toán tử mũi tên) c) Cả hai d) Cả hai sai Câu 179:Xem đoạn code sau: typedef struct ST{ int d1,d2,d3;}; ST v= {5, 6, 7}; ST* p=&v; p.d1++; Giá trị biến v là: a) {6, 6, 7}; b) {5, 6, 7}; c) Nhóm trị khác d) Đoạn code gây lỗi ((*p).d1++;)/ Câu 180: Xem đoạn code sau: typedef struct STUDENT{ int d1, d2, d3;}; STUDENT v= {2, 3, 4}; v.d1++; Giá trị trung bình trường biến v gì: a) 3.0 b) 4.0 c) Giá trị khác d) Có lỗi đoạn code Câu 181: Hãy khai báo cấu trúc mô tả sinh viên, thông tin sinh viên bao gồm: tên, điểm môn học Khai báo sau đúng: a) structure STUDENT {char Name[]; int s1,s2,s3;}; b) struct STUDENT {char Name[]; int s1, s2, s3;}; c) typedef struct STUDENT {char Name[]; float s1,s2,s3;}; d) typedef STUDENT { char Name[]; int s1, s2,s3;}; Câu 182:Biến trỏ chứa: a) Địa vùng nhớ biến khác b) Giá trị biến khác c) Cả a b d) Cả a b sai Câu 183: Kết chương trình sau gì: #include void main() { struct diem; { float k; float a; float l; }; struct diem m; m.k = 8; m.a = 6.5; m.l = 6; printf(“%0.1f%0.1f%0.1f”, m.k, m.a, m.l); }; a) “8.06.56.0” b) “86.56” c) “8.0000006.5000006.000000” d) “86.5000006” Câu 184:Kiểu liệu chứa nhiều thành phần liệu có kiểu liệu khác thành nhóm nhất: a) Mảng b) Con trỏ c) Tập tin d) Cấu trúc(struct) Câu 185: Chọn kết hợp lí cho chương trình sau: void main() { struct sv { float d; char ht[10]; }; struct sv m, *p; p=&m; printf(“%p”,&m); printf(“%p”,p); }; a) “FFE6FFE6” b) “FFE6FFE7” c) “FFE66EFF” d) Kết khác (“FFE4FFE4”)/ Câu 186: Chọn kết cho chương trình sau: #include void main() { clrscr(); struct sv { float d; char ht[10]; }; struct sv m, *p; p=&m; (*p).d=p->d=10; strcpy(m.ht,”NguyenVanTuan”); printf(“%0.1f”,m.d); printf(“%s”,m.ht); }; a) “10.000000NguyenVanTuan” b) “10.0NguyenVanTuan” c) Kết khác (“NguyenVanTuan”)// ht[10] – Kết máy d) Chương trình bị lỗi Câu 187: Chọn kết cho chương trình sau: #include #include void main() { struct S1 { float d; float d1; float d2; }; struct S1 m={12, 1}; printf(“%0.1f%0.1f%0.1f”,m.d, m.d1, m.d2); }; a) “12.01.00.0” b) “12.0000001.0000000.000000” c) Kết khác d) Chương trình bị lỗi Câu 188: Chương trình sau cho kết gì: #include void main() { int *px, *py; int a[]={1,2,3,4,5,6}; px=a; py=&a[5]; printf(“%d”,++px-py); }; a) -4 b) c) d) Không có kết Câu 189: Có cách khai báo biến cấu trúc: a) b) (Có đặt tên cấu trúc không đặt tên cấu trúc)/ c) d) Câu 190:Khi sử dụng từ khóa typedef trước định nghĩa cấu trúc thì: a) Khai báo biến cho cấu trúc ta không cần sử dụng từ khóa “struct” b) Khai báo biến cho loại cấu trúc ta cần sử dụng từ khóa “struct” c) Không thể khai báo thêm biến cấu trúc Lưu ý: Test Turbo C++ 3.0 không thấy có khác biệt Câu 191:Cho khai báo sau: struct Date { unsigned int ngay:5; unsigned int thang; unsigned int nam: 11; } sn1; Số lượng bít sử dụng biến cấu trúc bao nhiêu: a) 16 b) 20 c) 32 d) 48 Câu 192:Chọn đáp án sử dụng trường kiểu bit: a) Độ dài trường không vượt 16 bít b) Áp dụng cho trường có kiểu số nguyên số thực c) Cho phép lấy địa trường kiểu nhóm bít d) Xây dựng mảng kiểu nhóm bít Câu 193: Đâu định nghĩa cấu trúc tự trỏ: a) Là cấu trúc có trường trỏ chứa địa biến cấu trúc b) Là dạng cấu trúc có trường trỏ chứa địa biến cấu trúc có dạng liệu giống c) Là dạng cấu trúc có trường có kiểu liệu giống d) Tất ý Câu 194: Trong khai báo sau, khai báo không đúng: a) struct Date{int ngay, thang, nam;}; b) struct { int ngay, thang, nam;} D1,D2; c) typedef struct { int ngay, thang, nam;} Date; d) struct Date { long int ngay:7; long int thang:6; long int nam:5; }; Câu 195: Đâu phát biểu dúng danh sach moc nối: a) Độ dài danh sách thay đổi b) Các phần tử lưu trữ rải rác nhớ RAM (?) c) Để cài đặt danh sách móc nối phải sử dụng đến cấu trúc tự trỏ d) Chỉ xóa phần tử danh sách Câu 196: Phát biểu không onion: a) Tất trường dùng chung vùng nhớ, kích thước union kích thước trường lớn b) Các trường nằm rải rác nhớ RAM kích thước trường tổng kích thước trường c) Có thể khai báo biến union có nhiều kiểu khác d) Tại thời điểm ta chứa liệu tất thành phần biến union Câu 197: Cho đoạn chương trình: struct ng { unsigned ngay; unsigned thang; unsigned nam; }; struct diachi { int sonha; char tenpho[20]; }; union u { struct ng date; struct diachi address; } diachi_ngaysinh; Kích thước biến u byte: a) 20 b) 22 c) 28 d) Đáp án khác Câu 198: Cho danh sách móc nối với phần tử danh sách có kiểu S1 định nghĩa sau: struct S1{ int info; struct S1 * next;} *head; Biết trỏ “head” lưu địa phần tử danh sách Cho biết mục đích câu lệnh sau: { head->next->next->info=111;}; a) Câu lệnh bị lỗi b) Giá trị “info” phần tử thứ bị thay đổi c) Giá trị “info” phần tử thứ bị thay đổi d) Giá trị “info” phần tử bị thay đổi Câu 199: Cho danh sách móc nối với phần tử danh sách có kiểu S1 định nghĩa sau: struct S1{ int info; struct S1 * next;} *head; Biết trỏ “head” lưu địa phần tử danh sách Cho biết mục đích câu lệnh sau: {(head->next)=(head->next)->next;}; a) Loại bỏ phần tử thứ khỏi danh sách b) Loại bỏ phần tử thứ khỏi danh sách c) Loại bỏ phần tử thứ khỏi danh sách d) Câu lệnh bị lỗi Câu 200:Một danh sách tất thao tác chèn thực đầu, thao tác xóa thực đầu danh sách gọi là: a) Stack b) Queue; c) Cây nhị phân d) Cả đáp án Câu 201: Đâu phát biểu danh sách móc nối: a) Chỉ thêm phần tử vào đầu danh sách b) Không thể thêm phần tử vào cuối danh sách c) Có thể thêm phần tử vào vị trí danh sách d) Không câu Câu 202: Đâu phát biểu danh sach: a) Chỉ xóa phần tử danh sách b) Chỉ xóa phần tử cuối danh sách c) Có thể xóa phần tử vị trí danh sách d) Tất sai Câu 203: Hàm dùng để cấp phát nhớ động cho kiểu nhớ động lập trình viên tự định nghĩa (union, struct): a) calloc(); b) malloc(); c) realloc(); d) Cả đáp án Câu 204: Cho danh sách móc nối với phần tử danh sách có kiểu S1 định nghĩa sau: struct S1{int info; struct S1 *next;} *head; Biết trỏ “*head” lưu địa phần tử danh sách Nhóm câu lệnh sau thêm phần tử vào đầu danh sách: a) p->next=head; head=p; b) p->next=head; head->p; head=p->next; c) head->next=p; p=head; d) Không có câu Câu 205: Cho danh sách móc nối với phần tử danh sách có kiểu S1 định nghĩa sau: struct S1{int info; struct S1 *next;} *head; Biết trỏ “*head” lưu địa phần tử danh sách Nhóm câu lệnh sau xóa phần tử khỏi danh sách: a) head->next=head; b) head=head->next; c) head=head->next->next; d) 2,3 Câu 206:Đâu phát biểu sai nói danh sách liên kết: a) Mỗi phần tử danh sách liên kết phải có trường dùng để lưu địa b) Sử dụng danh sách liên kết thường tiết kiệm nhớ dùng mảng c) Sử dụng danh sách liên kết thường tốn nhớ dùng mảng d) Tất đáp án sai Câu 207: Câu không nói đến ưu điểm việc sử dụng cấu trúc: a) Bạn xử lí cách hỗn hợp kiểu liệu đơn vị b) Bạn lưu xâu kí tự có đọ dài khác vào biến cấu trúc c) Dữ liệu lưu trữ module dạng phân cấp d) Cần nhớ cho liệu Câu 208: Làm biểu diễn phần tử “hoten” SV1: struct SV { char hoten[20]; } SV1, *p; p=&SV1; a) SV1.hoten; b) p->hoten; c) &hoten; d) Câu 209: Đâu phát biểu sai: a) Có thể truyền tham số biến struct cho hàm b) Có thể truyền tham số biến trỏ cho hàm c) Có thể truyền tham số biến trỏ struct cho hàm d) Không thể truyền tham số phần tử struct cho hàm Câu 210: Cho mảng A gồm phần tử kiểu struct, phát biểu truy cập đến trường phần tử: a) A[chỉ số].tên_trường; b) A.tên_trường; c) &A.tên_trường; d) &A[chỉ số].tên_trường; Câu 211: Không gian nhớ dùng để lưu trữ node danh sách liên kết kép: a) Lưu trữ rởi rác nhớ b) Luôn lưu trữ liên tục nhớ c) Lưu trữ theo kiểu phân trang d) Lưu trữ theo kiểu phân đoạn Câu 212: Khi thực việc thêm node x vào nhị phân tìm kiếm ta cần: a) Tìm vị trí thích hợp cho nhánh bên phải b) Tìm vị trí thích hợp cho x toàn c) Tìm vị trí thích hợp cho nhánh bên trái d) Không ý Câu 213:Dấu hiệu cho biết node p danh sách liên kết đơn node cuối bên phải: a) (p->info!=NULL); b) (p->info==NULL); c) (p->next!=NULL); d) (p->next==NULL); Câu 214: Khi loại bỏ node x nhị phân tìm kiếm ta cần kiểm tra xem: a) x có phải node trái nhị phân tìm kiếm hay không b) x có phải node phải nhị phân tìm kiếm hay không c) Sự tồn x d) Cả phương án a, b, c sai Câu 215: Cơ chế cài đặt cho hàng đợi: a) FIFO b) Round Robin c) Tuần tự d) FILO Câu 216: Dấu hiệu cho biết danh sách liên kết đơn rỗng: a) (p->right==NULL); b) (p->info==NULL); c) (p==NULL); d) (p->next==NULL); Câu 217: Dấu hiệu cho biết node phải p có bên phải: a) (p->right!=NULL); b) (p->left!=NULL); c) (p->right!=NULL)&&(p->right->right==NULL); d) (p->right!=NULL)&&(p->right->right!=NULL); Câu 218: Cơ chế cài đặt cho Stack: a) FILO b) Tuần tự c) Round Robin d) FIFO Câu 219: Một nhị phân gọi nếu: a) node gốc tất node trung gian có node b) Giá trị khóa node gốc lớn giá trị khóa nhánh bên phải c) Giá trị khóa node gốc lớn giá trị khóa nhánh bên trái d) Node gốc node trung gian có node node có mức giống Câu 220: Khi thực phép thêm node x vào bên phải node p nhị phân thông thường, ta cần: a) Kiểm tra tồn p bên phải p; b) Kiểm tra tồn node bên phải p c) Kiểm tra tồn node p d) Không cần thực điểu kiện nêu câu hỏi Câu 221: Cho đoạn chương trình sau: int a, *p, *q; float *t; a=5; p=&a; p=q; t=p; printf(“%d%f”,a,t); Kết quả: a) 5-12 b) c) Chương trình lỗi (Can’t convert int* to float*)/ d) Kết khác Câu 222:Số màu biểu diễn chế độ đồ họa yếu tố quy định: a) Số bít tương ứng với pixel b) Độ phân giải hình c) Do kích thước hình d) Không phải yếu tố Câu 223: Trong chế độ 256 màu, số bít cho pixel là: a) b) c) d) Câu 224: Các file tối thiểu cần cho việc vẽ đồ họa: a) GRAPH.H, *.BGI, *.CHR b) GRAPH.H, *.TXT, *.DOC c) *.BGI, *.TXT, *.DOC d) *.CHR, *.TXT, *.DOC Câu 225: Một chương trình đồ họa gồm đoạn: a) b) (Khởi tạo, detect, link)/ c) d) Câu 226: Trong chế độ graphic, gốc tọa độ là: a) Góc bên trái b) Góc bên phải c) Góc bên trái d) Góc bên phải Câu 227: Ba màu máy tính là: a) RED, GREEN, BLUE b) RED, YELLOW, BLUE c) BLUE, YELLOW, BLUE d) GREEN, RED, PING Câu 228: Hàm getpixel(int x, int y) dùng để làm gì: a) Vẽ điểm tọa độ (x,y); b) Lấy giá trị màu điểm tọa độ (x,y); c) Vẽ điểm vị trí trỏ d) Cả phương án sai Câu 229:Sau hàm setwiewport(int x1, int y1, int x2, int y2, int clip); thực tọa độ (0,0) tất hàm vẽ là: a) Góc phải hình b) Góc phải viewport c) Góc trái hình d) Góc trái viewport Câu 230: Trong chế độ đồ họa, hàm thường dùng để nội dung xâu: a) printf(); b) outtext(char far * textstring); c) outtextxy(int x, int y, char far *textstring); d) putchar(); Câu 231: Trong bước khởi tạo đồ họa ta cần: a) Xác định vi mạch b) Chọn chế độ đồ họa c) Cả phương án sai d) Cả phương án Câu 232: Khẳng định sai: a) Hàm moveto(int x, int y) di chuyển vị trí hình đồ họa tới điểm có tọa độ (x,y); b) lineto(int x, int y) hàm vẽ đường thẳng từ vị trí trỏ đồ họa tới điểm có tọa độ (x,y) c) linerel(int x, int y) vẽ đường thẳng tử gốc tọa độ tới điểm có tọa độ (x,y); d) line(int x1, int y1, int x2, int y2) vẽ đường thẳng nối liền điểm có tọa độ (x1,y1) (x2,y2); Câu 233:Hàm putpixel(int x, int y) dùng để làm gì: a) Vẽ điểm tọa độ (x,y); b) Lấy màu điểm có tọa độ (x,y); c) Vẽ điểm vị trí trỏ d) Cả phương án sai Câu 234:Lệnh dùng để đóng chế độ đồ họa: a) getch(); b) closegraph(); c) Cả phương án sai d) Cả phương án đúng; Câu 235: Hàm closegraph() dùng để làm gì: a) Sẽ giải phóng hết vùng nhớ giành cho đồ họa b) Dùng để dừng hình c) Dùng để xóa hình d) Cả phương án sai Câu 236: Phát biểu nói hàm: rectangle(int x1, int y1, int x2, int y2) bar(int x1, int y1, int x2, int y2): a) Cả hàm vẽ hình chữ nhật b) Hàm thứ vẽ đường viền hình chữ nhật, không tô màu bên hàm thứ tô màu bên c) Hàm thứ vẽ đường viền hình chữ nhật, không tô màu bên hàm thứ tô màu bên d) Cả hai hàm vẽ hình chữ nhật tô màu bên Câu 237: Chế độ đồ họa bao gồm vấn đề: a) Bao nhiêu màu b) Gồm màu c) Độ phân giải hình d) Cả phương án Câu 238: Hàm setcolor(int color) làm nhiệm vụ gì: a) Thiết lập màu b) Đặt màu vẽ c) Cả ý d) Cả hai ý sai Câu 239: Tham số clip hàm setviewport(int x1, int y1, int x2, int y2, int clip); qui định vấn đề gì: a) Cho phép hiển thị hay không hiển thị nét vẽ bên viewport b) Cho phép hiển thị hay không hiển thị nét vẽ bên viewport c) Cả d) Cả sai Câu 240: Điểu nói hàm floodfill(int x, int y, int Border); a) Dùng để tô màu hình tròn chứa điểm (x,y) b) Dùng để tô màu hình chữ nhật chứa điểm (x,y) c) Dùng để tô màu đa giác chứa điểm (x,y); d) Dùng để tô màu miền kín chứa điểm (x,y); Câu 241: Trong chế độ đồ họa, hàm sau xác lập kiểu chữ, cỡ chữ: a) outtextxy(int x, int y, char far * textstring); b) outtext(char far *textstring); c) settextstyle(int font, int direction, int charsize; d) Cả phương án trên.) ... biến kh c b) Giá trị biến kh c c) C a b d) C a b sai C u 30 :Dữ liệu kí tự bao gồm : a) C c kí tự số chữ số b) C c kí tự chữ c) C c kí tự đ c biệt d) C a,b c Câu 31: Nếu hàm gọi trư c định... II C U TR C CỦA MỘT CHƯƠNG TRÌNH C Một chương trình bao gồm nhiều hàm, hàm người lập trình tổ ch c để giải c ng vi c toán c n giải Một chương trình C để th c thi c n phải c hàm main() C u tr c. .. hàm, c u tr c C c biến toàn c c có ảnh hưởng đến toàn chương trình Chu trình sống chạy chương trình đến l c kết th c chương trình b Khai báo biến (biến c c bộ): Vị trí biến đặt bên hàm, c u tr c