320 Câu hỏi trắc nghiệm lập trình C có đáp án - Phần 4
50 câu hỏi
fgets();
fputs();
fwrite();
fread();
Chọn đáp án D
fgets();
fputs();
fwrite();
fread();
Chọn đáp án C
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);
“70, 26, 13, 13, 10, 44”
“70, 26, 13, 10, 44”
“70, 26, 10, 44”
Đoạn lệnh có lỗi
Chọn đáp án B
Lệnh fseek(f,10,SEEK_END) định vị con trỏ tệp đến byte thứ 10 trong tệp.
Đoạn lệnh fseek(f, 10, SEEK_END); định vị con trỏ tới cuối tệp.
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.
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.
Chọn đáp án C
đọ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;
fread(x+i++, sizeof(T), 1, f ); while (!feof(f)) fread(x+i++, sizeof(T), 1, f); fclose(f);
fseek(f,0,SEEK_END); n=ftell(f)/sizeof(T); fseek(f,0,SEEK_SET); fread(x, sizeof(T), n, f); fclose(f);
A và B đúng
A và B sai
Chọn đáp án C
1 và 2
1 và 3
2 và 3
2 và 4
Chọn đáp án B
Hàm đọc 1 kí tự từ tệp, nếu thành công hàm cho mã đọc được. Nếu gặp cuối tệp hoặc có lỗi, hàm cho kí tự EOF.
Hàm đọc 1 dãy kí tự từ tệp để lưu vào vùng nhớ mới.
Khi dùng hàm nếu gặp kí tự xuống dòng thì kí tự mã số 10 sẽ được thêm vào cuối xâu được đọc.
Khi dùng hàm, nếu gặp kí tự xuống dòng, thì kí tự mã số 10 và 13 sẽ được thêm vào cuối xâu được đọc.
Chọn đáp án D
putch();
puts();
fputc();
fputs();
Chọn đáp án D
Chọn 1 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ự xuống dòng
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.
Chọn đáp án D
Hàm làm sạch vùng đệm của tệp f, nếu thành công cho giá trị số tệp đang mở, trái lại, trả về EOF.
Hàm làm sạch giá trị vùng đệm của tệp f, nếu thành công hàm cho giá trị EOF, trái lại, hàm trả vể 0.
Hàm làm sạch vùng đệm của tệp f, nếu thành công trả về 0, trái lại, trả về EOF.
Hàm xóa bộ nhớ đệm của bàn phím.
Chọn đáp án C
fseek();
rewind();
ftell();
seek();
Chọn đáp án B
int fread( void *ptr, int size, FILE *f, int n);
int fread( FILE *f, void *ptr, int size, int n);
int fread( int size, void *ptr, int n, FILE *f);
int fread( void *ptr, int size, int n, FILE *f);
Chọn đáp án D
int puts(const char *s, FILE *f);
int puts( const char *s);
int puts(FILE *f, const char *s);
int puts(FILE *f);
Chọn đáp án A
f=fopen(“du_lieu”,”r”);
f=fopen(“du_lieu”,”r+b”);
f=fopen(“du_lieu”,”a+t”);
f=fopen(“du_lieu”,”a+b”);
Chọn đáp án C
long filelength(int the_file);
double filelength(int the_file);
int filelength(int the_file);
Không có đáp án nào đúng.
Chọn đáp án A
Mở tệp nhị phân để ghi.
Mở tệp nhị phân đã có và ghi thêm dữ liệu nối tiếp vào tệp này.
Mở tệp nhị phân để ghi mới.
Mở tệp nhị phân để đọc.
Chọn đáp án B
double chsize(int handle, long size);
long chsize(int handle, long size);
int chsize(int handle, long size);
Tất cả các đáp án trên
Chọn đáp án C
EOF
NULL
\n
Ctrl_Z
Chọn đáp án A
Mở tệp văn bản cho phép ghi.
Mở tệp văn bản cho phép đọc.
Mở tệp văn bản cho phép cả đọc cả ghi.
Mở tệp văn bản đã tồn tại để đọc.
Chọn đáp án C
Mở tệp nhị phân để ghi.
Xóa nội dung của tệp.
Mở tệp văn bản để đọc và ghi.
Tất cả các đáp án trên.
Chọn đáp án B
(*p).a;
*p->a;
A và B đều đúng
A và B đều sai
Chọn đáp án A
struct T {
int x;
float y;
}
t, * p, a[10];
p=&t;
p=&t.x;
p=&a[5];
p=&a;
Chọn đáp án D
struct ngay {
int ng, th, n;
}
vaotruong, ratruong;
typedef struct sinhvien {
char hoten;
ngay ngaysinh;
};
Không được phép gán: vaotruong = ratruong;
“sinhvien” là tên cấu trúc, “vaotruong”, “ratruong” là tên biến cấu trúc.
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, B, C đều đúng
Chọn đáp án B
struct S1 {
int ngay, thang, nam;
};
S1 = (2, 1, 3);
struct S2 {
char hoten[10];
struct S1 ngaysinh;
};
S2 = {
“
Ly Ly”,
{
4,
5,
6
}
};
S1 đúng
S2 đúng
S1 và S2 đều đúng
S1 và S2 đều sai
Chọn đáp án B
Gán biến cho nhau.
Gán hai phần tử mảng( kiểu cấu trúc) cho nhau.
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.
Chọn đáp án D
struct {
int to;
float soluong;
}
x[10];
for (int i = 0; i < 10; i++) scanf(“ % d % f”, & x[i].to, & x[i].soluong);
Đoạn chương trình trên có lỗi cú pháp.
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”.
Lây địa chỉ thành phần “soluong” dẫn đến chương trình hoạt động không đúng đắn.
Cả 3 ý trên đều sai.
Chọn đáp án C
đúng cấu trúc tự trỏ sẽ được dùng:
1. Sinh viên 1:
struct SV {
char ht[25];
int tuoi;
struct Sv * tiep;
};
2. Sinh viên 2
typedef
struct SV node;
struct SV {
char ht[25];
int tuoi;
node * tiep;
};
3. Sinh viên 3
typedef
struct SV {
char ht[25];
int tuoi;
struct SV * tiep;
}
node;
1
2
2, 3
1,2 và 3
Chọn đáp án D
của cấu trúc); Chọn câu đúng nhất trong các câu sau:
1. Khai báo 1:
struct SV {
thongtin;
struct SV * tiep;
};
2. Khai báo 2:
struct SV {
thongtin
};
struct DS {
struct SV * sv;
struct DS * tiep;
}
Khai báo 1 tốn nhiều bộ nhớ hơn khai báo 2.
Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi đổi vị trí 2 sinh viên
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.
Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi duyệt danh sách.
Chọn đáp án B
char S[] = “Helen”;
char * p = S;
char c = * (p + 3);
‘H’
‘e’
‘l’
‘n’
Chọn đáp án B
“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.
“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
Cả 2 ý đểu đúng.
Cả 2 ý đểu sai.
Chọn đáp án C
“.”(Toán tử chấm)
“->”(Toán tử mũi tên)
Cả hai đều đúng.
Cả hai đều sai.
Chọn đáp án C
typedef struct ST {
int d1, d2, d3;
};
ST v = {
5,
6,
7
};
ST * p = & v;
p.d1++;
{6, 6, 7};
{5, 6, 7};
Nhóm trị khác
Đoạn code gây lỗi
Chọn đáp án D
typedef struct STUDENT {
int d1, d2, d3;
};
STUDENT v = {
2,
3,
4
};
v.d1++;
3.0
4.0
Giá trị khác
Có lỗi trong đoạn code
Chọn đáp án C
structure STUDENT {char Name[]; int s1,s2,s3;};
struct STUDENT {char Name[]; int s1, s2, s3;};
typedef struct STUDENT {char Name[]; float s1,s2,s3;};
typedef STUDENT { char Name[]; int s1, s2,s3;};
Chọn đáp án C
Địa chỉ vùng nhớ của một biến khác.
Giá trị của một biến khác.
Cả a và b đều đúng.
Cả a và b đều sai.
Chọn đáp án A
#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);
};
“8.06.56.0”
“86.56”.
“8.0000006.5000006.000000”
“86.5000006”
Chọn đáp án A
Mảng
Con trỏ
Tập tin
Cấu trúc(struct)
Chọn đáp án D
void main() {
struct sv {
float d;
char ht[10];
};
struct sv m, * p;
p = & m;
printf(“ % p”, & m);
printf(“ % p”, p);
};
“FFE6FFE6”
“FFE6FFE7”
“FFE66EFF”
“FFE4FFE4”
Chọn đáp án D
#include <stdio.h>
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.1 f”, m.d);
printf(“ % s”, m.ht);
};
“10.000000NguyenVanTuan”
“10.0NguyenVanTuan”
Chương trình bị lỗi
Kết quả khác
Chọn đáp án D
#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);
};
“12.01.00.0”
“12.0000001.0000000.000000”
Kết quả khác
Chương trình bị lỗi
Chọn đáp án A
#include <stdio.h>
void main() {
int * px, * py;
int a[] = {
1,
2,
3,
4,
5,
6
};
px = a;
py = & a[5];
printf(“ % d”, ++px - py);
};
-4
2
5
Không có kết quả đúng
Chọn đáp án A
1
2
3
4
Chọn đáp án B
Khai báo biến cho cấu trúc đó ta không cần sử dụng từ khóa “struct” nữa
Khai báo 1 biến cho loại cấu trúc đó ta cần sử dụng từ khóa “struct”.
Không thể khai báo thêm biến cấu trúc nào nữa.
Chọn đáp án A
struct Date {
unsigned int ngay: 5;
unsigned int thang;
unsigned int nam: 11;
}
sn1;
16
20
32
48
Chọn đáp án C
Độ dài các trường không vượt quá 16 bít.
Áp dụng được cho các trường có kiểu số nguyên và số thực.
Cho phép lấy địa chỉ trường kiểu nhóm bít.
Xây dựng được các mảng kiểu nhóm bít.
Chọn đáp án A
Là một cấu trúc có một trường là con trỏ chứa địa chỉ của một biến cấu trúc.
Là dạng cấu trúc có một trường là con trỏ chứa địa chỉ của một biến cấu trúc có dạng dữ liệu giống nó.
Là dạng cấu trúc có một trường có kiểu dữ liệu giống nó.
Tất cả các ý trên
Chọn đáp án A
struct Date{int ngay, thang, nam;};
struct { int ngay, thang, nam;} D1,D2;
typedef struct { int ngay, thang, nam;} Date;
struct Date { long int ngay:7; long int thang:6; long int nam:5; };
Chọn đáp án D
Độ dài danh sách không thể thay đổi
Các phần tử của nó được lưu trữ rải rác trong bộ nhớ RAM.
Để cài đặt danh sách móc nối phải sử dụng đến cấu trúc tự trỏ.
Chỉ có thể xóa được phần tử đầu tiên của danh sách.
Chọn đáp án B
Tất cả các trường chỉ dùng chung một vùng nhớ, và kích thước union bằng kích thước trường lớn nhất.
Các trường nằm rải rác trong bộ nhớ RAM và kích thước của các trường bằng tổng kích thước các trường.
Có thể khai báo các biến trong union có nhiều kiểu khác nhau.
Tại một thời điểm ta không thể chứa dữ liệu tại tất cả các thành phần của một biến union được.
Chọn đáp án B
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;
20
22
28
Đáp án khác
Chọn đáp án B




