Worksheetslập trình c
Total questions: 86
Worksheet time: 43mins
Câu 1. Phát biểu nào sau đây là đúng khi nói về chương trình con?
A. Chương trình con là một lệnh mô tả một thao tác nhất định và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình.
A. Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và được thực hiện (được gọi) từ 1 vị trí trong chương trình.
A. Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và không thể thực hiện từ nhiều vị trí trong chương trình.
A. Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình.
Câu 25
struct Employee { char Code[], name[]; long Salary;
};
Employee e1 = { “
E089”,
“Hoang so”, 12000
}, e2 = e1;
printf(“ % ld”, el.Salary + e2 -> Salary);[/CODE] Đâu là kết quả của đoạn mã sau:
A. 24000
B. 12000
C. Đoạn mã bị lỗi
D. Kết quả khác
Câu 24
Trong các khai báo sau, khai báo nào không đúng:
A. struct Date{int ngay, thang, nam;};
A. struct { int ngay, thang, nam;} D1,D2;
A. typedef struct { int ngay, thang, nam;} Date;
A. struct Date
{
long int ngay:7; long int thang:6; long int nam:5;
}
Câu 23
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” nữa.
A. Khai báo 1 biến cho loại cấu trúc đó ta cần sử dụng từ khóa “struct”.
A. Không thể khai báo thêm biến cấu trúc nào nữa.
Câu 22
Có bao nhiêu cách khai báo biến cấu trúc?
1
2
3
4
Câu 21
#include <stdio.h> #include <string.h> void main() { struct S1 {
float d; float d1; float d2;
};
struct S1 m = {
12,
1
};
printf(“ % 0.1 f % 0.1 f % 0.1 f”, m.d, m.d1, m.d2);
};[/CODE]
Chọn kết quả đúng cho chương trình sau:
A. “12.01.00.0”
B. “12.0000001.0000000.000000”
C. Kết quả khác
D. Chương trình bị lỗi
A. CÂU 20:
void main() { struct sv { float d;
char ht[10];
};
struct sv m, * p; p = & m;
printf(“ % p”, & m);
printf(“ % p”, p);
};[/CODE]
Chọn kết quả hợp lí cho chương trình sau:
A. “FFE6FFE6”
A. “FFE6FFE7”
A. “FFE66EFF”
A. “FFE4FFE4”
A. “10.000000NguyenVanTuan”
A. “10.0NguyenVanTuan”
A. Chương trình bị lỗi
A. Kết quả khác
CÂU 18:
Kiểu dữ liệu nào có thể chứa nhiều thành phần dữ liệu có thể có kiểu dữ liệu khác nhau thành một nhóm duy nhất:
A. Mảng
A. Con trỏ
A. Tập tin
Cấu trúc(struct)
CÂU 17:
Hãy khai báo một cấu trúc mô tả sinh viên, thông tin về mỗi sinh viên bao gồm: tên, điểm 3 môn học. Khai báo nào sau đây là đúng:
A. structure STUDENT {char Name[]; int s1,s2,s3;};
A. struct STUDENT {char Name[]; int s1, s2, s3;};
A. typedef struct STUDENT {char Name[]; float s1,s2,s3;};
A. typedef STUDENT { char Name[]; int s1, s2,s3;};
CÂU 16:
typedef struct STUDENT { int d1, d2, d3;
};
STUDENT v = { 2,
3,
4
};
v.d1++;[/CODE]
Xemđoạncodesau.Giátrịtrungbìnhcủacáctrườngtrongbiếnvlàgì:
A. 3.0
B. 4.0
C. Giá trị khác
D. Có lỗi trong đoạn code
CÂU 15:
Toán tử nào sau đây sẽ truy xuất 1 thành phần của con trỏ cấu trúc:
A. “.”(Toán tử chấm)
A. “->”(Toán tử mũi tên)
A. Cả hai đều đúng.
A. Cả hai đều sai.
CÂU 14:
typedef struct ST { int d1, d2, d3;
};
ST v = { 5,
6,
7
};
ST * p = & v; p.d1++;[/CODE]
Xem đoạn code sau. Giá trị của 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
CÂU 13:
Chọn câu đúng:
A. “struct” là một kiểu dữ liệu do người dùng định nghĩa bao gồm nhiều thành phần có kiểu khác nhau.
A. “struct” là sự kết hợp của nhiều thành phần có thể có thể có kiểu khác nhau.
A. Cả 2 ý đểu đúng.
A. Cả 2 ý đểu sai.
CÂU 12:
1. Khai báo 1:
struct SV { thongtin;
struct SV * tiep;
};[/CODE]
2. Khai báo 2:
struct SV { thongtin
};
struct DS { struct SV sv; struct DS tiep;
};[/CODE]
Để dùng danh sách liên kết, xét hai khai báo sau(cần 1KB để lưu dữ thông tin về một sinh viên). (Với “thongtin” là một thành phần dữ liệu của cấu trúc); Chọn câu đúng nhất trong các câu sau:
A. Khai báo 1 tốn nhiều bộ nhớ hơn khai báo 2.
A. Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi đổi vị trí 2 sinh viên.
A. Khai báo 1 sẽ giúp tiết kiệm câu lệnh hơn khi viết hàm đổi vị trí 2 sinh viên.
A. Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi duyệt danh sách.
CÂU 11: struct {
int to;
float soluong;
}
x[10];
for (int i = 0; i < 10; i++) scanf(“ % d % f”, & x.to, & x.soluong);[/CODE] Cho đoạn chương trình sau. Chọn câu đúng nhất trong các câu sau:
A. Đoạn chương trình trên có lỗi cú pháp.
A. Không được phép sử dụng toán tử lấy địa chỉ đối với các thành phần “to” và “soluong”.
A. Lấy địa chỉ thành phần “soluong” dẫn đến chương trình hoạt động không đúng đắn.
A. Cả 3 ý trên đều sai.
A. CÂU 10:
1. Sinh viên 1:
struct SV { char ht[25]; int tuoi;
struct Sv * tiep;
};[/CODE]
2. Sinh viên 2 typedef
struct SV node; struct SV { char ht[25];
int tuoi; node * tiep;
};[/CODE]
3. Sinh viên 3 typedef
struct SV { char ht[25]; int tuoi;
struct SV * tiep;
}
node;[/CODE]
Để tạo danh sách liên kết, theo bạn sinh viên nào dưới đây là khai báo đúng cấu trúc tự trỏ sẽ được dùng:
1
2
2,3
1,2 và 3
CÂU 9:
Đối với kiểu có cấu trúc, cách gán nào sau đây là không được phép:
A. Gán biến cho nhau.
A. Gán hai phần tử mảng( kiểu cấu trúc) cho nhau.
A. Gán một phần tử mảng( kiểu cấu trúc) cho một biến hoặc ngược lại.
Gán hai mảng có cấu trúc có cùng số phần tử cho nhau.
CÂU 8:
struct S1 {
int ngay, thang, nam;
};
S1 = (2, 1, 3);
struct S2 { char hoten[10];
struct S1 ngaysinh;
};
S2 = { “
Ly Ly”,
{
4,
5,
6
}
};[/CODE]
Trong các khởi tạo giá trị cho các cấu trúc sau, hãy chọn câu đúng:
A. S1 đúng
A. S2 đúng
A. S1 và S2 đều đúng
A. S1 và S2 đều sai
CÂU 7:
struct ngay { int ng, th, n;
}
vaotruong, ratruong; typedef struct sinhvien { char hoten;
ngay ngaysinh;
};[/CODE]
Cho các khai báo sau. Hãy chọn câu đúng nhất:
A. Không được phép gán: vaotruong = ratruong;
A. “sinhvien” là tên cấu trúc, “vaotruong”, “ratruong” là tên biến cấu trúc.
A. Có thể viết “vaotruong.ng”, “ratruong.th”, “sinhvien.vaotruong.n” để truy xuất đến các thành phần tương ứng.
A. A, B, C đều đúng
CÂU 6:
struct T { int x; float y;
}
t, * p, a[10];[/CODE]
Cho khai báo. Câu lệnh nào không hợp lệ?
A. p=&t;
A. p=&t.x;
C. p=&a[5];
D. p=&a;
CÂU 5:
Có thể truy cập thành phần của cấu trúc thông qua con trỏ như( với p là con trỏ cấu trúc, a là thành phần cấu trúc):
A. (*p).a;
B. *p->a;
B. A và B đều đúng
B. A và B đều sai
CÂU 4:
Chọn câu đúng:
A. “struct” là một kiểu dữ liệu do người dùng định nghĩa bao gồm nhiều thành phần có kiểu khác nhau.A. “struct” là sự kết hợp của nhiều thành phần có thể có thể có kiểu khác nhau
A. Cả 2 ý đều đúng.
A. Cả 2 ý đểu sai.
CÂU 3:
Cho khai báo sau. Số lượng bít sử dụng trong biến cấu trúc trên là bao nhiêu: struct Date {
unsigned int ngay: 5; unsigned int thang; unsigned int nam: 11;
}
sn1;
A.16
B.20
C.32
D.48
CÂU 2:
Toán tử nào sau đây sẽ truy xuất 1 thành phần của con trỏ cấu trúc:
A. “.”(Toán tử chấm)
A. “->”(Toán tử mũi tên)
A. Cả hai đều đúng.
A. Cả hai đều sai.
CÂU 1:
Kết quả của chương trình sau là gì:
#include <stdio.h> 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.1 f % 0.1 f % 0.1 f”, m.k, m.a, m.l);
};
A. “8.06.56.0”
B. “86.56”.
C. “8.0000006.5000006.000000”
D. “86.5000006”
CÂU 21:
Khai báo hàm đọc một text file vào một mảng các số nguyên, hãy chọn khai báo đúng
A. void Read( char* fName, int a[]);
A. void Read(char* fName, int a);
A. void Read(char* fName, int *a);
A. void Read(char* fName, int *&a, int &n);
Câu 20
Hàm nào Mở file “time.txt” để đọc
A. fopen("time.txt","r");
A. open("time.txt","read");
A. open("time.txt");
A. fopen("time.txt","r+");
A. CÂU 19:
Cho khai báo FILE f1,f2; int c; và đoạn lệnh. Trong trường hợp tổng quát, hãy cho biết các khẳng định sau, khẳng định nào đúng:
f1 = fopen(“source”, ”rt”);
f2 = fopen(“TARGET”, ”wt”); while ((c = fgetc(f1)) != EOF) fputc(c, f2);
A. Độ dài file “source” luôn bé hơn độ dài file “TARGET”.
A. Độ dài file “source” bằng độ dài file “TARGET”.
A. Độ dài file “source” nói chung lớn hơn độ dài file “TARGET”.
A. Độ dài file “source” nói chung sẽ lớn hơn độ dài file “TARGET” 1 byte.
CÂU 18:
Giả sử f là con trỏ tệp nhị phân. Để đọc từ f cho biến x kiểu int, ta có thể dùng:
A. fscanf(f,”%d”,x);
A. fread(&x,sizeof(int),1,f);
A. getw(f);
B và C đúng
Câu 17
Hãy chọn câu đúng
FILE * f = fopen(“FL.txt”, ”r”); int n = 7;
fprintf(f, ” % d”, n);
A. Đoạn code gây lỗi
A. Đoạn code không lỗi
A. Đoạn code này sẽ ghi trị 7 lên file “FL.txt”
A. Đoạn code này sẽ đọc một trị từ file “FL.txt” vào biến n
CÂU 16:
FILE * fopen(tep1, ”ab”);[/CODE] Câu lệnh sau có ý nghĩa gì:
A. Mở tệp nhị phân để ghi.
A. Mở tệp nhị phân đã có và ghi thêm dữ liệu nối tiếp vào tệp này.
A. Mở tệp nhị phân để ghi mới.
A. Mở tệp nhị phân để đọc.
CÂU 15:
Trong chế độ văn bản, dấu hiệu kết thúc tệp là:
A. EOF
A. NULL
A. \n
A. Ctrl_Z
CÂU 14:
FILE * fopen(tep1, ”r + ”);[/CODE] Câu lệnh sau có ý nghĩa gì?
A. Mở tệp văn bản cho phép ghi.
A. Mở tệp văn bản cho phép đọc.
A. Mở tệp văn bản cho phép cả đọc cả ghi.
A. Mở tệp văn bản đã tồn tại để đọc.
CÂU 13:
Hàm nào có thể thay đổi kích thước của tệp đang mở:
A. double chsize(int handle, long size);
A. long chsize(int handle, long size);
A. int chsize(int handle, long size);
A. Tất cả các đáp án trên
CÂU 12:
Câu lệnh sau có ý nghĩa gì: FILE * fopen(tep1, ”ab”);
A. Mở tệp nhị phân để ghi.
A. Mở tệp nhị phân đã có và ghi thêm dữ liệu nối tiếp vào tệp này.
A. Mở tệp nhị phân để ghi mới.
A. Mở tệp nhị phân để đọc.
CÂU 11:
Câu lệnh sau có ý nghĩa gì? int open(tep1, O_TRUNC);
A. Mở tệp nhị phân để ghi.
A. Xóa nội dung của tệp.
A. Mở tệp văn bản để đọc và ghi.
A. Tất cả các đáp án trên.
CÂU 10:
Hàm nào trả lại kích thước của một tệp được mở:
A. long filelength(int the_file);
A. double filelength(int the_file);
A. int filelength(int the_file);
A. Không có đáp án nào đúng.
CÂU 9:
Dấu hiệu nào là đúng khi sử dụng hàm fopen() để mở một file đã tồn tại đọc theo kiểu nhị phân:
A. f=fopen(“du_lieu”,”r”);
A. f=fopen(“du_lieu”,”r+b”);
A. f=fopen(“du_lieu”,”a+t”);
A. f=fopen(“du_lieu”,”a+b”);
CÂU 8:
Dấu hiệu nào là đúng khi sử dụng hàm fputs();
A. int puts(const char s, FILE f);
A. int puts( const char *s);
A. int puts(FILE f, const char s);
A. int puts(FILE *f);
A. CÂU 7:
Dấuhiệunàolàđúngkhisửdụnghàmfread();
A.int fread( void ptr, int size, FILE f, int n);
B. int fread( FILE f, void ptr, int size, int n);
B. int fread( int size, void ptr, int n, FILE f);
int fread( void ptr, int size, int n, FILE f);
CÂU 6:
Phát biểu đúng nhất về mẫu lệnh( f là con trỏ tệp): while ((ch = fgetc(f)) != EOF)…
A. Chọn 1 phần tử và kiểm tra xem có phải là EOF hay không.
A. Đọc các phần tử của tệp chừng nào kí tự đó chưa phải là kí tự xuống dòng
A. Ghi một phần tử và kiểm tra xem có phải là EOF hay không.
Đọc các phần tử của tệp chừng nào kí tự đó chưa phải là kí tự kết thúc.
CÂU 5:
f là con trỏ trỏ đến tệp nhị phân DATA chứa không quá 100 bản ghi( kiểu cấu trúc) liền nhau.
Cho khai báo. Đoạn chương trình nào sau đây
đọc toàn bộ các bảng ghi trong DATA vào x: struct T {…}; struct T x[100]; int i = 0, n = 0;
A. fread(x+i++, sizeof(T), 1, f ); while (!feof(f)) fread(x+i++, sizeof(T), 1, f); fclose(f);
A. fseek(f,0,SEEK_END); n=ftell(f)/sizeof(T); fseek(f,0,SEEK_SET); fread(x, sizeof(T), n, f); fclose(f);
A. A và B đúng
A. A và B sai
CÂU 4:
Cho tệp nhị phân DATA chứa dãy các cấu trúc liền nhau L struct T{…} x;và f là con trỏ tệp đến DATA. Chọn câu đúng nhất trong các câu sau:
A. Lệnh fseek(f,10,SEEK_END) định vị con trỏ tệp đến byte thứ 10 trong tệp.
A. Đoạn lệnh fseek(f, 10, SEEK_END); định vị con trỏ tới cuối tệp.
A. Giả sử tệp có n cấu trúc, lệnh fseek(f, n, SEEK_SET) sẽ đặt con trỏ tới cấu trúc cuối cùng của tệp.
A. Giả sử tệp có n cấu trúc, lệnh fseek(f, n, SEEK_CUR); sẽ không làm thay đổi vị trí con trỏ của tệp.
Câu 3
Giả sử tệp DATA chứa 5 byte: “70, 26, 13, 10, 44”. Cho đoạn lệnh. Hãy cho biết kết quả của đoạn chương trình trên:
FILE * f;
char ch;
f = fopen(“DATA”, ”r”); while (!feof(f)) { ch = fgetc(f);
printf(“ % c”, ch);
};
fclose(f);
A. “70, 26, 13, 13, 10, 44”
B. “70, 26, 13, 10, 44”
C. “70, 26, 10, 44”
D. Đoạn lệnh có lỗi
Câu 2
Hàm nào dưới đây chỉ dùng để ghi một khối dữ liệu vào file:
A. fgets();
A. fputs();
A. fwrite();
A. fread();
Câu 1
Hàm nào dưới đây chỉ dùng để đọc 1 kí tự từ tệp
A. getch();
A. fscanf();
A. fgetc();
A. scanf();
A. VNCODING
A. VNCODING\0\.NET\0
A. VNCODING\0\.NET
A. Lỗi biên dịch
A. 1006, 2, 2
B. 1006, 4, 4
C. 1002, 5, 5
D. Lỗi biên dịch
A. I
A. E
A. M
N
6
7
8
9
A. 3
6
4
A. Địa chỉ của j, địa chỉ của biến i, 3
A. Lỗi biên dịch
C. 3 , 3 , 3
D. 0, 0, 3
A. 320
64
B. Lỗi biên dịch
5
6
4
A. Lỗi biên dịch
5
6
8
A. Lỗi biên dịch
A. Lỗi biên dịch
6
5
11
1
2
3
4
5
7
9
10
A. pvpit
A. vpit
A. v
A. vp
A. 400 2
B. 400 400
C. 400 401
D. Complier error
A. 4#4
B. 4#5
C. 5#6
D. 4#6
A. 10#15
B. 10#10
C. 15#15
D. 11#15
4
3
6
5
A. hello_World
A. ello_World
A. llo_World
A. lo_World
1. Lựa chọn kết quả của đoạn chương trình sau:
A. hello_World
A. ello_World
A. llo_World
A. lo_World
A. gia tri cua a: 20
A. gia tri cua a: 10
A. gia tri cua a: 21
A. gia tri cua a: 21
A. gia tri cua a: 20
A. gia tri cua a: 10
A. gia tri cua a: 21
gia tri cua a: 21
Câu 18. Khẳng định nào sau đây là đúng khi nói về giaithua(x) :
A. Hàm trả về giá trị giaithua(x).
A. Không phải là hàm.
A. Không phải là hàm nhưng trả về 1 giá trị nào đó.
Hàm thực hiện một số thao tác nhất định nhưng không trả về giá trị nào.
Câu 17. Khẳng định nào sau đây là đúng khi nói về cos(x) :
A. Hàm trả về giá trị cos(x).
A. Không phải là hàm.
A. Không phải là hàm nhưng trả về 1 giá trị nào đó.
A. Hàm thực hiện một số thao tác nhất định nhưng không trả về giá trị nào.
Câu 16. Trong lời gọi hàm Fibonaci(100), thì giá trị 100 là:
A. Biến toàn cục.
A. Tham số hình thức.
A. Tham số thực sự.
A. Biến cục bộ
Câu 15. Trong lời gọi hàm Giaithua(5), thì giá trị 5 là:
A. Biến toàn cục.
A. Tham số hình thức.
A. Tham số thực sự.
A. Biến cục bộ
A. Bien trong ham = 11 Bien ngoai ham ham = 10
A. Bien trong ham = 11 Bien ngoai ham ham = 11
A. Bien trong ham = 11 Bien ngoai ham ham = 12
A. Bien trong ham = 10 Bien ngoai ham ham = 10
A. Truoc khi goi phuong thuc x = 100 Sau khi goi phuong thuc x = 101
A. Truoc khi goi phuong thuc x = 101 Sau khi goi phuong thuc x = 101
B. Truoc khi goi phuong thuc x = 101 Sau khi goi phuong thuc x = 102
B. Truoc khi goi phuong thuc x = 100 Sau khi goi phuong thuc x = 102
A. Truoc khi goi phuong thuc x = 100 Sau khi goi phuong thuc x = 100
A. Truoc khi goi phuong thuc x = 100 Sau khi goi phuong thuc x = 101
A. Truoc khi goi phuong thuc x = 101 Sau khi goi phuong thuc x = 101
A. Truoc khi goi phuong thuc x = 101 Sau khi goi phuong thuc x = 102
A. Tham số hình thức.
A. Biến toàn cục.
A. Tham số thực sự.
Biến cục bộ
Câu 10. Biến toàn cục là:
A. Các biến được khai báo để dùng riêng trong thân hàm.
A. Biến được khai báo trong chương trình con.
A. Các biến được khai báo cho dữ liệu vào/ra.
Các biến của chương trình chính.
A. Tham số hình thức.
A. Tham số thực sự.
A. Biến toàn cục.
A. Biến địa phương.
Câu 8. Trong các hàm sau đây, hàm nào là hàm không có kết quả (Void functions)?
A. sin(x)
A. abs(x)
A. sqrt(x)
A. setw()
Câu 7. Khẳng định nào sau đây là sai khi nói về hàm không có kết quả (Void functions)?
A. Hàm không có kết quả là hàm thực hiện một số thao tác nhất định nhưng không trả về giá trị nào.
A. Hàm không có kết quả là loại hàm thực hiện một số thao tác nào đó và trả về một số giá trị theo sau lệnh return.
A. setw() là hàm không có kết quả (Void functions)
A. setprecision() là hàm không có kết quả (Void functions)
Câu 6. Khẳng định nào sau đây là đúng khi nói về sin(x) :
A. Hàm trả về giá trị sin(x).
A. Không phải là hàm.
A. Không phải là hàm nhưng trả về 1 giá trị nào đó.
A. Hàm thực hiện một số thao tác nhất định nhưng không trả về giá trị nào.
Câu 5. Trong lời gọi hàm sin(90), thì giá trị 90 là:
A. Biến toàn cục.
A. Tham số hình thức.
A. Tham số thực sự.
A. Biến cục bộ
Câu 4. Biến cục bộ là:
A. Các biến được khai báo để dùng riêng trong thân hàm.
A. Biến của chương trình con và chương trình chính.
A. Các biến được khai báo cho dữ liệu vào/ra.
A. Các biến của chương trình chính.
Câu 3. Tham số hình thức là:
A. Các biến được khai báo ở < phần đầu>.
A. Các biến được khai báo ở chương trình chính.
A. Các biến được khai báo bất kì trong chương trình.
A. Tất cả các biến của chương trình.
Câu 2. Cấu trúc của hàm nhất thiết phải bao gồm:
A. < phần đầu>
< phần thân>
A. < phần đầu>
A. < phần thân>
A. < phần khai báo>
< phần thân>
