DarkinH/test huggingface dataset:
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 void hoanvi(int *px, int *py)
 {int z;z=*px;*px=*py ;*py=z ;};
 void main()
 {int a=15, b=21 ;
 hoanvi(a,b);
 printf (“%d %d”,a,b);};
A. “15 21”
B. “21 15”
C. Báo lỗi khi thực hiện chương trình
D. Kết quả khác
Kết quả chương trình sau là gì:
#include <stdio.h>
void hoanvi(int px, int py)
{int pz;pz=px; px=py; py=pz;};
void main()
{int a=15, b=21;
hoanvi(a,b);
printf(“%d %d”,a,b);};
A. “21 15”
B. “15 21”
C. Báo lỗi khi thực hiện chương trình
D. Kết quả khác
Khai báo các biến:
 int m,n; 
 float x,y;
 Lệnh nào sai :
A. n=5
B. x=10
C. y=12.5
D. m=2.5
Kết quả in ra màn hình của chương trình sau:
 #include <stdio.h >
 void main()
 {char *s;s=”chao cac ban”;
 strcpy(&s[5],&s[9]);
 printf(“%s”,s);};
A. “chao”
B. “chao cac”
C. “chao ban”
D. “chao cac ban”
Kết quả in ra màn hình của chương trình sau:
 #include <stdio.h>
 void main()
 {int a=100, b=6;
 double f;
 f=(double)a/(double)b;
 printf(“%2.2f”,f);};
A. “16”
B. “16
C. “16.67”
D. Kết quả khác
Nếu có các khai báo sau:
 char msg[10];
 char value;
 Câu nào sau đây sẽ là đúng:
A. msg[2]=value
B. msg=value
C. Cả hai câu trên
D. Không câu nào đúng
Nếu có các khai báo sau:
 char msg[10];
 char *ptr;
 char value;
 Câu nào sau đây là đúng:
A. ptr=value
B. ptr=msg
C. Cả hai câu trên đều đúng
D. Cả hai câu trên đều sai
Cho các khai báo sau:
 void *tongquat;
 int *nguyen;
 char *kitu;
 Phép gán nào là không hợp lệ:
A. tongquat=nguyen
B. *nguyen=*tongquat
C. kitu=(char)tongquat
D. tongquat=kitu
Cho biết kết quả của đoạn chương trình sau:
 int p=4;
 p=10+ ++p;
A. 14
B. 15
C. 16
D. Kết quả khác
Có các khai báo sau: 
 char tb, mang[15];
 Trong các câu lệnh sau, câu nào đúng:
A. tb=”chào bạn”
B. gets(mang)
C. mang=”chao ban”
D. gets(tb)
Chương trình: 
 #include <stdio.h> 
 void main()
 {char c;
 int n;
 scanf(“%d%c”,&n,&c);
 printf(“%3d%c”,n,c); }; 
 Giả sử khi chạy chương trình ta gõ từ bản phím: “29h b”. Kết quả in ra n và c tương ứng sẽ là:
A. “ 29b”
B. “ 29h b”
C. “ 29h”
D. Kết quả khác
Kết quả của chương trình sau là gì: #include <stdio.h>
void main() { int x, *p;x=3; x=6; p=&x; *p=9; printf(“%d”,x); printf(“%d”,*p); printf(“%d”,x); };
A. “369”
B. “696”
C. “999”
D. Kết quả khác
Kết quả của chương trình sau là gì: 
 #include <stdio.h> 
 int change(int a) 
 {a=10;return a;};
 void main()
 {int a=5;change(i);
 printf(“%d”,i);};
A. 5
B. 10
C. 0
D. Báo lỗi khi thực hiện chương trình
Kết quả của chương trình sau là gì: 
 #include <stdio.h>
 int change(int *a)
 {*a=10;return *a;};
 void main()
 {int i=5;
 change(&i);
 printf(“%d”,i);};
A. 5
B. 10
C. 0
D. Báo lỗi khi thực hiện xây dựng chương trình
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 void main()
 {int x, *p;
 x=6; p=&x;
 printf(“%d”,x);
 printf(“%d”,*p);};
A. 69
B. 66
C. Lỗi khi xây dựng chương trình
D. Kết quả khác
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 void main()
 {printf(“%d”,3<2||6);};
A. true
B. 0
C. 1
D. Kết quả khác
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 void main()
 {int i,k;
 for(i=1; ; i++) k=5;
 printf(“%d”,i);};
A. 0
B. 5
C. Vòng lặp vô hạn
D. Kết quả khác
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 void main()
 {int i=1, k=0;
 for (; i<5; i++) k++;
 printf(“%d”,k);}
A. 0
B. 4
C. 5
D. Vòng lặp vô hạn
Khi nhập vào dòng văn bản: “Chao Cac Ban”. Kết quả của chương trình sau là gì:
 #include <stdio.h>
 #include <conio.h>
 int main()
 {clrscr();
 char str[80];
 fflush(stdin);
 scanf(“%s”,str);
 cprintf(“Dong van ban vua nhap la: %s”,str);
 getch();
 return 0;};
A. “Chao Cac Ban”
B. “Chao Cac”
C. “Chao”
D. Không hiện kết quả gì
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 #include <conio.h>
 void main(){clrscr();
 int i;
 for (i=1; i<=24; i++);
 printf(“\n%d”,i);
 getch();return;};
A. In ra màn hình các số từ 1 đến 24
B. Lỗi khi xây dựng chương trình
C. Kết quả khác
D. In ra màn hình các số từ 1 đến 24, mỗi số một dòng
Kết quả của đoạn chương trình sau là gì:
 char c;
 int n;
 scanf(“%d%c”,&n,&c);
 Nếu gõ vào : ”10 T”.
A. n=10, c=’ ‘
B. n=10, c=’T’
C. Lỗi khi xây dựng chương trình
D. Kết quả khác
Kết quả in ra màn hình của chương trình sau:
 #include <stdio.h>
 void main()
 {int i=100;
 printf(“%c”,i);};
A. “d”
B. “D”
C. “100”
D. Kết quả khác
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 #include <conio.h>
 float x[] =
 {63.2, -45.6, 70.1, 3.6, 14.5 };
 int n=sizeof(x)/sizeof(float);
 void main()
 {clrscr();
 int i,j;
 floar c;
 for (i=0, j=n-1; i<j; i++, j--);
 {c=x[i];x[i]=x[j];x[j]=c;};
 printf(“\nDay ket qua la: \n”);
 for (i=0 ; i<n ; i++)
 printf(“%8.2f ”,x[i]);
 getch() ;return;} ;
A. Dãy kết quả là: 63
B. Dãy kết quả là : 14
C. Kết quả khác
D. 1 và 2
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 #include <conio.h>
 #include <ctype.h>
 #define EOL ‘\n’void main()
 {clrscr();
 char chu[80];
 int tong,dem;
 for (dem=0; dem<tong; dem++);
 tong=dem;
 for (dem=0; dem<tong; ++dem)
 putchar(toupper(chu[dem]));
 getch();
 return;};
A. Nhập vào một kí tự thường, sau đó chuyển sang chữ hoa rồi in ra màn hình
B. Nhập một kí tự hoa, sau đó chuyển sang chữ thường rồi in ra màn hình
C. 1 và 2
D. Kết quả khác
Kết quả của đoạn chương trình sau là gì:
 char c;
 int n;
 scanf(“%c%d”,&n,&c);
 Nếu gõ vào: “r 45”.
A. n=45, c=’ ‘
B. n=45, c=’r’
C. Lỗi khi xây dựng chương trình
D. Kết quả khác
Cho đoạn chương trình sau:
 #include <stdio.h>
 #include <conio.h>
 void main()
 {char c;clrscr();
 do c=getchar();
 while (c!=’*’);
 getch();};
 Yêu cầu của đoạn chương trình trên là:
A. Nhập vào 1 kí tự cho đến khi gặp kí tự ‘*’
B. Nhập vào các kí tự cho tới khi gặp kí tự ‘*’
C. Nhập các kí tự ‘*’
D. Lỗi khi xây dựng chương trình
Kết quả của chương trình sau là gì:
 #include <stdio.h>
 void main()
 {printf(“%d”,3<7&&8>6);};
A. 1
B. 0
C. true
D. Kết quả khác
Phép toán 1 ngôi nào dùng để xác định giá trị ở địa chỉ con trỏ trỏ tới:
A. !;
B. &;
C. *;
D. Kết quả khác
Phép trừ 1 con trỏ với một số nguyên sẽ là:
A. Một số nguyên
B. Một con trỏ cùng kiểu
C. Cả hai kết quả trên đều đúng
D. Cả hai kết quả trên đều sai
Đâu là kết quả của câu lệnh sau: printf(“%2f”,123.5678908);
A. 123.56
B. 123.567890
C. 123.567
D. Kết quả khác
Trong số các định dạng dưới đây, định dạng nào dùng để in ra địa chỉ:
A. “%f”
B. “%s”
C. “%p”
D. “%h”
Khai báo hàm tìm giá trị lớn nhất trong một màng các số long dưới đây, khai báo nào đúng:
A. void Max(long *a);
B. long Max(long *a[]);
C. void Max(long a[], int n);
D. long Max(long *a, int n);
Khai báo hàm tính tổng các phần tử trong một mảng các số nguyên dưới đây, khai báo nào đúng:
A. void Sum( int a[]);
B. long Sum( int *a);
C. void Sum(int a[], int n);
D. cả 3 phương án trên đều sai
Để khai báo 1 hàm kiểm tra một mảng là tăng hay không ta dùng khai báo nào dưới đây:
A. void CheckAsc(int a[], int n);
B. int CheckAsc(int *a, int n);
C. long CheckAsc(int *S);
D. double CheckAsc(int S[], int n);
Đoạn code nào sẽ hoán vị 2 số a và b:
A. t=a; a=b; b=t;
B. t=a; a=b; t=b;
C. a=t; b=a; t=b;
D. t=b; b=a; a=t;
Các kí hiệu đặc trưng cho sự tác động lên dữ liệu được gọi là:
A. Toán tử
B. Biểu thức
C. Hàm
D. Biến
Kích thước của biến con trỏ là:
A. 1 byte
B. 2 byte
C. 3 byte
D. Không có đáp án nào đúng
Cho biết giá trị của biểu thức: 2+4>2&&4<2;
A. 1
B. 0
C. -1
D. Không câu nào đúng
Giá trị lôgic của biểu thức sau là gì: !(1&&1||1&&0);
A. 1
B. 0
C. -1
D. Không câu nào đúng
Chọn biểu thức biểu diễn num là số nằm giữa 1 và 9 nhưng không phải là 4:
A. num>1&&num<9&&num!=4;
B. num>1||num<9&&num!=4;
C. num>=1&&num<=9&&num!=4;
D. Không câu nào đúng
Tại sao hai hàm scanf() và printf() gọi là 2 hàm nhập, xuất có định dạng:
A. Vì chúng có chuỗi định dạng trong tham số
B. Vì chúng thường dùng để nhập, xuất các trị trong chỉ một kiểu đã định trước
C. Vì một lí do khác
D. 2 hàm trên không phải là hai hàm nhập xuất có định dạng
Nếu strcmp(S1,S2) trả về số nguyên âm thì:
A. Nội dung của chuỗi S1 lớn hơn nội dung chuỗi S2
B. Nội dung chuỗi S1 nhỏ hơn nội dung chuỗi S2
C. Nội dung chuỗi S1 bằng nội dung chuỗi S2
D. Dữ liệu nhập vào không đúng định dạng
Chọn một phát biểu sai:
A. Chuỗi là một mảng các kí tự
B. Chuỗi là một mảng các kí tự và kí tự cuối cùng có mã là 0
C. Chuỗi là mảng các kí tự và kí tự cuối cùng có mã là NULL
D. Chuỗi là mảng các trị 2 byte
Các định dạng nào sau đây có thể sử dụng để xuất số nguyên không dấu:
A. “%d”
B. “%unsigned”
C. “%i”
D. “%u”
Định dạng nào dưới đây dùng để hiển thị một số thực:
A. “%f”
B. “%u”
C. “%i”
D. “%float”
Đâu là những toán tử toán học:
A. +, /, %
B. +, -, *, /, %, ++, --, >, <
C. &&, ||
D. +, -, *, /, %, =, !=
Một biến phải bắt đầu với:
A. Một kí tự thường như các chữ cái hoặc dấu gạch dưới
B. Một dấu gạch dưới
C. Một kí tự kiểu số
D. Một toán tử như: +, -
Mảng là:
A. Một nhóm phần tử có cùng kiểu và chung tên gọi
B. Một nhóm phần tử có thể có kiểu riêng và chung tên gọi
C. Một nhóm phần tử có thể có kiểu riêng và tên gọi riêng cho mỗi phần tử
D. Là một kiểu dữ liệu cơ sở đã định sẵn của ngôn ngữ lập trình C
Kích thước của mảng là:
A. Số phần tử tối đa của mảng
B. Kích thước bộ nhớ sẽ cấp phát cho mảng
C. Cả hai câu trên đều đúng
D. Cả hai câu trên đều sai
Đâu là phát biểu đúng nhất về biến động:
A. Chỉ phát sinh trong quá trình thực hiện chương trình
B. Khi chạy chương trình, kích thước vùng biến, vùng nhớ và địa chỉ vùng nhớ có thể thay đổi
C. Sau khi sử dụng có thể giải phóng đi để tiết kiệm chỗ trong bộ nhớ
D. Tất cả các đáp án trên
Phát biểu nào sau đây là sai khi nói đến tập tin:
A. Tập tin là dữ liệu đã hoàn tất được lưu trong bộ nhớ ngoài bởi người dùng hay một chương trình
B. Hệ điều hành nhận biết một tập tin nhờ vào tên đầy đủ của nó gồm đường dẫn và tên tập tin
C. “ C:\tm\TEN.txt” – Dạng mô tả tập tin trong C
D. “C:/tm/TEN
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* ftộce, int a[]);
B. void Read(char* ftộce, int a);
C. void Read(char* ftộce, int *a);
D. void Read(char* ftộce, int *&a, int &n);
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);
B. fread(&x,sizeof(int),1,f);
C. getw(f);
D. 2 và 3 đúng
Chọn câu đúng nhất trong các câu sau đây:
A. Khi đọc kí tự có mã 1A từ file văn bản, C sẽ đọc thành kí tự có mã -1
B. Khi đọc file văn bản, cả hai kí tự OD và OA sẽ được C đọc thành 1 kí tự có mã OA
C. Khi đọc kí tự có mã OD từ file văn bản thì C sẽ bỏ qua
D. 1, 2 và 3 đều đúng
Hàm nào dưới đây chỉ dùng để đọc 1 kí tự từ tệp:
A. getch();
B. fscanf();
C. fgetc();
D. scanf();
Hàm nào dưới đây chỉ dùng để nhập dữ liệu từ tệp:
A. getch();
B. fscanf();
C. getc();
D. scanf();
Hàm nào dưới đây chỉ dùng để ghi một kí tự vào tệp:
A. putch();
B. puts();
C. fputs();
D. fputc();
Hàm nào dưới đây dùng để ghi 1 xâu kí tự vào tệp:
A. putch();
B. fputc();
C. fputs();
D. puts();
Hàm nào dưới đây chỉ dùng để đọc 1 khối dữ liệu từ tệp:
A. fgets();
B. fputs();
C. fwrite();
D. fread();
Hàm nào dưới đây chỉ dùng để ghi một khối dữ liệu vào file:
A. fgets();
B. fputs();
C. fwrite();
D. fread();
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
B. Đoạn lệnh fseek(f, 10, SEEK_END); định vị con trỏ tới cuối tệp
C. 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
D. 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
Phát biểu nào sau là đúng khi nói về hàm fgets():
A. Hàm đọc 1 kí tự từ tệp, nếu thành công hàm cho mã đọc được
B. Hàm đọc 1 dãy kí tự từ tệp để lưu vào vùng nhớ mới
C. 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
D. 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
Hàm nào dưới đây chỉ dùng để ghi 1 xâu kí tự vào tệp:
A. putch();
B. puts();
C. fputc();
D. fputs();
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
B. Đọ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
C. Ghi một phần tử và kiểm tra xem có phải là EOF hay không
D. Đọ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
Phát biểu nào đúng khi nói về câu lệnh fflush(FILE *f):
A. 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
B. 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
C. 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
D. Hàm xóa bộ nhớ đệm của bàn phím
Hàm nào dưới đây chỉ dùng để chuyển con trỏ về vị trí đầu tệp:
A. fseek();
B. rewind();
C. ftell();
D. seek();
Dấu hiệu nào là đúng khi sử dụng hàm fread();
A. int fread( void *ptr, int size, FILE *f, int n);
B. int fread( FILE *f, void *ptr, int size, int n);
C. int fread( int size, void *ptr, int n, FILE *f);
D. int fread( void *ptr, int size, int n, FILE *f);
Dấu hiệu nào là đúng khi sử dụng hàm fputs();
A. int puts(const char *s, FILE *f);
B. int puts( const char *s);
C. int puts(FILE *f, const char *s);
D. int puts(FILE *f);
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”);
B. f=fopen(“du_lieu”,”w”);
C. f=fopen(“du_lieu”,”at”);
D. f=fopen(“du_lieu”,”rb”);
Dấu hiệu nào là đúng khi dùng hàm fopen() để mở file đã tồn tại, thêm theo kiểu văn bản:
A. f=fopen(“du_lieu”,”r+t”);
B. f=fopen(“du_lieu”,”r+b”);
C. f=fopen(“du_lieu”,”a+t”);
D. f=fopen(“du_lieu”,”a+b”);
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);
B. double filelength(int the_file);
C. int filelength(int the_file);
D. Không có đáp án nào đúng
Câu lệnh sau có ý nghĩa gì: FILE *fopen(tep1,”ab”);
A. Mở tệp nhị phân để ghi
B. Mở tệp nhị phân đã có và ghi thêm dữ liệu nối tiếp vào tệp này
C. Mở tệp nhị phân để ghi mới
D. Mở tệp nhị phân để đọc
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);
B. long chsize(int handle, long size);
C. int chsize(int handle, long size);
D. Tất cả các đáp án trên
Trong chế độ văn bản, dấu hiệu kết thúc tệp là:
A. EOF
B. NULL
C. \n
D. Ctrl_Z
Câu lệnh sau có ý nghĩa gì: FILE *fopen(tep1,”r+”);
A. Mở tệp văn bản cho phép ghi
B. Mở tệp văn bản cho phép đọc
C. Mở tệp văn bản cho phép cả đọc cả ghi
D. Mở tệp văn bản đã tồn tại để đọc
Câu lệnh sau có ý nghĩa gì: int open(tep1, O_TRUNC);
A. Mở tệp nhị phân để ghi
B. Xóa nội dung của tệp
C. Mở tệp văn bản để đọc và ghi
D. Tất cả các đáp án trên
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;
C. 1 và 2 sai
D. 1 và 2 đúng
Đố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
B. Gán hai phần tử mảng( kiểu cấu trúc) cho nhau
C. 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
D. Gán hai mảng có cấu trúc có cùng số phần tử cho nhau
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
B. “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. Cả 2 ý đều đúng
D. Cả hai ý đều sai
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. “
B. “->”(Toán tử mũi tên)
C. Cả hai đều đúng
D. Cả hai đều sai
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;};
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;};
Biến con trỏ có thể chứa:
A. Địa chỉ vùng nhớ của một biến khác
B. Giá trị của một biến khác
C. Cả a và b đều đúng
D. Cả a và b đều sai
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
B. Con trỏ
C. Tập tin
D. Cấu trúc(struct)
Có bao nhiêu cách khai báo biến cấu trúc:
A. 1
B. 2
C. 3
D. 4
Chọn đáp án đúng khi sử dụng trường kiểu bit:
A. Độ dài các trường không vượt quá 16 bít
B. Áp dụng được cho các trường có kiểu số nguyên và số thực
C. Cho phép lấy địa chỉ trường kiểu nhóm bít
D. Xây dựng được các mảng kiểu nhóm bít
Đâu là định nghĩa đúng về cấu trúc tự trỏ:
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
B. 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ó
C. Là dạng cấu trúc có một trường có kiểu dữ liệu giống nó
D. Tất cả các ý trên
Để 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- 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;
A. 1
B. 2
C. 2 và 3
D. 1,2 và 3
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.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”
Chọn kết quả đúng cho chương trình sau:
#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.1f”,m.d);
printf(“%s”,m.ht);};
A. “10.000000NguyenVanTuan”
B. “10.0NguyenVanTuan”
C. Kết quả khác
D. Chương trình bị lỗi
Đâu là kết quả của đoạn mã sau:
 struct Employee
 { char Code[], tộce[];
 long Salary;};
 Employee e1= { “E089”, “Hoang so”, 12000}, e2=e1;
 printf(“%ld”,el.Salary+e2 -> Salary);
A. 24000
B. 12000
C. Đoạn mã bị lỗi
D. Kết quả khác
char S[20]=”aaaaaea”;
 char* p=strstr(S,”e”);
 Nếu địa chỉ của S là 1000, thì giá trị của p là bao nhiêu:
A. 1000
B. 1005
C. 1003
D. Kết quả khác
Một số tác vụ sau sẽ được áp dụng để kiểm tra xem một số nguyên là lẻ hay chẵn:
 1- Begin(bắt đầu).
 2- Nhập số nguyên n.
 3- Nếu số đó là 0 thì hiển thị chuỗi: “Đây là số chẵn”.
 4- Ngược lại hiển thị: “Đây là số lẻ”
 5- Chia n cho 2;
 6- End(kết thúc).
 Theo bạn, thứ tự các bước nào sau đây là đúng:
A. 1,2,3,4,5,6
B. 1,5,4,3,2,6
C. 1,2,5,3,4,6
D. 1,5,3,4,2,6
Tìm kết quả của chương trình sau:
 main()
 {int n;
 for (n=18; n>0; n/=2)
 printf(“%3d”,n);};
A. “ 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1”
B. “ 18 9 4 2 1”
C. “ 18 9 4 2 1 0”
D. Không câu nào đúng
Tìm kết quả của chương trình sau:
 #include <stdio.h>
 main()
 {int i, ch;
 for (i=0, ch=’A’; i<5; i++, ch++)
 putchar(ch);};
A. “ABCDE”
B. “ABC”
C. “ACEG”
D. Không câu nào đúng
Tìm kết quả của chương trình sau:
 #include <stdio.h>
 main()
 {int i,ch;
 for (i=0,ch=’A’; i<4; i++,ch+=2)
 putchar(ch);};
A. “ABCDE”
B. “ABC”
C. “ACEG”
D. Không câu nào đúng
Nếu có khai báo:
 char *ptr;
 char msg[10];
 char v;
 Câu nào sẽ đúng:
A. ptr=v;
B. ptr=msg;
C. Cả hai câu đều đúng
D. Không câu nào đúng
Hàm nào trong các hàm sau thuộc các hàm nhập xuất không định dạng:
 1- printf();
 2- scanf();
 3- getchar();
 4- putchar();
A. 1,2
B. 3,4
C. 1,4
D. 2,3
Chọn kết quả của đoạn code sau:
 for (int i=1; i<10; i++)
 for(int j=1; j<10; j++)
 ì (j%i==0) printf(“Hello\n”);
A. 6 chuỗi “Hello”
B. 12 chuỗi “Hello”
C. Không có kết quả xuất ra màn hình
D. 23 chuỗi “Hello”
Một số tác vụ sau sẽ được dùng để kiểm tra một số nguyên là lẻ hay chẵn:
 1- Bắt đầu;
 2- Nhập số nguyên n;
 3- Nếu số dư là 0 thì hiển thị chuỗi: “Đây là số chẵn”;
 4- Ngược lại hiển thị chuỗi: “Đây là số lẻ”;
 5- Chia n cho 2;
 6- Kết thúc;
 Thứ tự các bước như thế nào là đúng:
A. 1, 2, 3, 4, 5, 6
B. 1, 5, 4, 3, 2, 6
C. 1, 2, 5, 3, 4, 6
D. 1, 5, 3, 4, 2, 6
Cho đoạn chương trình sau:
 int n=0;
 for (int i=0; i<10; i+=4) n+=i;
 Giá trị của biến n là:
A. 8
B. 12
C. 16
D. 20
Nghiên cứu đoạn code sau:
 FILE* f= fopen(“FL.txt”,”r”);
 int n=7;
 fprintf(f,”%d”,n);
 Hãy chọn câu đúng:
A. Đoạn code gây lỗi
B. Đoạn code không lỗi
C. Đoạn code này sẽ ghi trị 7 lên file “FL.txt”
D. Đoạn code này sẽ đọc một trị từ file “FL.txt” vào biến n
Cho khai báo FILE *f1,*f2; int c; và đoạn lệnh:
 f1=fopen(“source”,”rt”); f2=fopen(“TARGET”,”wt”);
 while((c=fgetc(f1))!=EOF) fputc(c,f2);
 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:
A. Độ dài file “source” luôn bé hơn độ dài file “TARGET”
B. Độ dài file “source” bằng độ dài file “TARGET”
C. Độ dài file “source” nói chung lớn hơn độ dài file “TARGET”
D. Độ dài file “source” nói chung sẽ lớn hơn độ dài file “TARGET” 1 byte
Giả sử tệp DATA chứa 5 byte: “70, 26, 13, 10, 44”. Cho đoạn lệnh:
 FILE *f;
 char ch;
 f=fopen(“DATA”,”r”);
 while(!feof(f)) { ch=fgetc(f); printf(“%c”,ch);};
 fclose(f);
 Hãy cho biết kết quả của đoạn chương trình trên:
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
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:
 struct T {…};
 struct T x[100];
 int i=0, n=0;
 Đoạn chương trình nào sau đây đọc toàn bộ các bảng ghi trong DATA vào x:
A. fread(x+i++, sizeof(T), 1, f ); while (!feof(f)) fread(x+i++, sizeof(T), 1, f); fclose(f);
B. fseek(f,0,SEEK_END); n=ftell(f)/sizeof(T); fseek(f,0,SEEK_SET); fread(x,sizeof(T), n, f); fclose(f);
C. 1 và 2 đúng
D. 1 và 2 sai
Phát biểu nào sau đây là đúng khi nói về chế độ truyền:
 1- Trong chế độ nhị phân, các byte được xử lí khác với giá trị trên thiết bị ngoại vi và có sự thực hiện chuyển đổi.
 2- Trong chế độ nhị phân, các kí tự được tổ chức thành từng dòng, được kết thúc bằng kí tự xuống dòng và có sự chuyển đổi.
 3- Trong chế độ văn bản, các kí tự được tổ chức thành từng dòng, mỗi dòng kết thúc bằng kí tự xuống dòng, có sự chuyển đổi của một số kí tự theo yêu cầu của môi trường.
 4- Trong chế độ nhị phân, các byte được xử lí đúng như giá trị trên thiết bị ngoại vi và không có sự thực hiện chuyển đổi nào.
A. 1 và 2
B. 1 và 3
C. 2 và 3
D. 2 và 4
Cho khai báo:
 struct T {int x; float y;} t, *p, a[10];
 Câu lệnh nào không hợp lệ:
A. p=&t;
B. p=&t.x;
C. p=&a[5];
D. p=&a;
Cho các khai báo sau:
 struct ngay{ int ng, th, n;} vaotruong, ratruong;
 typedef struct sinhvien{ char hoten; ngay ngaysinh;};
 Hãy chọn câu đúng nhất:
A. Không được phép gán: vaotruong = ratruong;
B. “sinhvien” là tên cấu trúc, “vaotruong”, “ratruong” là tên biến cấu trúc
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
D. 1, 2, 3 đúng
Trong các khởi tạo giá trị cho các cấu trúc sau, hãy chọn câu đúng:
 struct S1{ int ngay, thang, tộc;}; S1=(2, 1, 3);
 struct S2{ char hoten[10]; struct S1 ngaysinh;}; S2={“Ly Ly”, {4, 5, 6}};
A. S1 đúng
B. S2 đúng
C. Cả S1, S2 đều đúng
D. Cả S1, S2 đều sai
Cho đoạn chương trình sau:
 struct { int to; float soluong;} x[10];
 for (int i=0; i<10; i++) scanf(“%d%f”,&x[i].to,&x[i].soluong);
 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
B. 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”
C. Lấy địa chỉ thành phần “soluong” dẫn đến chương trình hoạt động không đúng đắn
D. Cả 3 ý trên đều sai
Để 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):
 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;};
 (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
B. Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi đổi vị trí 2 sinh viên
C. 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
D. Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi duyệt danh sách
Cho đoạn chương trình:
 char S[] = “Helen”;
 char *p = S;
 char c = *(p+3);
 Giá trị của c sẽ là:
A. ‘H’
B. ‘e’
C. ‘l’
D. ‘n’
Xem đoạn code sau:
 typedef struct ST{ int d1,d2,d3;};
 ST v= {5, 6, 7};
 ST* p=&v;
 p.d1++;
 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
Xem đoạn code sau:
 typedef struct STUDENT{ int d1, d2, d3;};
 STUDENT v= {2, 3, 4};
 v.d1++;
 Giá trị trung bình của các trường trong biến v là gì:
A. 3.0
B. 4.0
C. Giá trị khác
D. Có lỗi trong đoạn code