In ra kết quả không xác định Câu 12: Nội dung của value chiếm: a... The end of test d... Chương trình sai cú pháp Câu 25 Hãy chọn phát biểu đúng: a.. Chương trình sai cú pháp c.. Cả 3 c
Trang 1Đềthi trắc nghiệm
Bảng trả lời câu hỏi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
a
b
c
d
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
c
d
Chú ý: * Thí sinh đánh dấu chéo (X) vào ô cần chọn (ví dụ ở câu 31 ta chọn a)
* Nếu chọn sai thì thí sinh tô đen ô chọn trước đó rồi chọn câu khác (ví dụ như câu 32)
* Chỉ những câu có trả lời trong bảng trả lời câu hỏi mới được chấm điểm
* Thí sinh được phép sử dụng tài liệu
Câu 1: Cho đoạn chương trình:
switch(a=2,++b)
{
case 5: b+=2;
default : a += b ;
case 2: a ;
}
printf("%d %d",a, b);
Kết quả khi chạy đoạn chương trình là:
a Báo lỗi b 1 4
c 2 7 d 8 5
Câu 2: Cho đoạn chương trình
int a,b=4;
switch(a=2,++b)
{
case 5: b*=2;
default :
a == b ;
break;
case 2: a ;
}
printf("%d %d",a, b);
Kết quả khi chạy đoạn chương trình là:
a Báo lỗi b Không xác định
c 10 9 d 2 8
Câu 3:
Cho khai báo:
int a =17, b=3;
double c;
Các lệnh nào sau đây cho kết quả không chính xác
a c = double(a/b) b c = double(a)/b
c c = (double)a/b d c = a/b;
Câu 4:
Các khởi tạo nào dưới đây sai
a int a[5] = {1,2,3},*p =a;
b enum mau {trang, xanh, do};
c char *p = “1234”, **p1 =&p;
d int i; char *p =&i;
Câu 5: Cho đoạn chương trình:
if ((a++==3)&&(++b))
a+=3;
b+=a;
printf("%d %d",a,b);
Kết quả khi chay chương trình trên là:
a 3 4 b 3 5
c 3 7 d 6 11
Trang 2Câu 6: Cho đoạn chương trình:
if ((a++==3)&&(++b)) ;
{
a+=3;
b+=a;
}
printf("%d %d",a,b);
Kết quả khi chay chương trình trên là:
a Sai syntax
b 3 4
c 6 10
d 6 11
Đoạn chương trình dùng cho câu 7 và 8
struct thu
{
}a,*pa;
char x1 ;
void main()
{
pa=&a;
printf("%d %d",a.x,a.y);
getch();
}
Câu 7 :
Kết quả chạy chương trình trên là :
a Không xác định b 2 -3
Câu 8 :
Các lệnh nào sau đây sai :
a *pa.x = a.y;
b a.c1 = &x1;
c *a.c1 = (char)pa->x;
d *pa->c1 = &x1;
Câu 9 :Cho đoạn chương trình:
int x =4161;
char *c;
c =(char*)&x;
printf("%d %d",*c, *(c+1));
Kết quả chạy chương trình trên là :
a 61 41 b 97 65
c 65 97 d 65 16
Câu 10 :
Cho đoạn chương trình:
int x =0x4161;
char *c;
c =(char*)&x;
*c++;
printf("%d %c",*c, x);
Kết quả chạy chương trình trên là :
a Sai syntax b 98 b
Cho đoạn chương trình dùng cho câu 11,12 :
#include<stdio.h>
union test {
char c;
short x;
void main() {
value.x = 1322;
value.c = 65;
printf(" %d %d",cau1.c,cau1.x);
}
Câu 11 :
Kết quả chạy chương trình này là:
a 65 1322
b 65 1345
c 22 1322
d In ra kết quả không xác định
Câu 12: Nội dung của value chiếm:
a 1 byte b 2 byte
c 3 byte d 4 byte
Câu 13:Cho đoạn chương trình
union {
char c;
int x;
int x;
void main() {
for(; x<4;x++) cau1.x += 100*x +x;
printf(" %d %d",cau1.c,cau1.x);
} Kết quả chạy chương trình:
a Sai syntax
b In trị không xác định
c 606 606
d 94 606
Câu 14 :
Cho chương trình:
Trang 3#include<stdio.h>
#include<string.h>
char s1[20] = "The end of test ";
char *s2 = "Computing ";
void main()
{
strcpy(s1,s2);
s1[strlen(s1)] = ' ';
printf("%s", s1);
}
Kết quả chương trình trên là:
a Computing test
b Computing
c The end of test
d Sai syntax
Câu 15:
int a=4,b=3;
b += a*b++ + ++b^b*4 + a++;
a += (a>b)? a+=++a*3:a+= a*7;
printf("%d %d",a,b);
Kết quả chạy chương trình trên là:
a 44 35 b 48 35
c 32 3 d Cả ba đều sai
Đoạn chương trình sau dùng cho câu 16,17,18
int sum(int *x)
{
static j=0;
*x+=j;
j+=*x;
return(j);
}
void main()
{
int a[]={1,4,6,8,9};
int *p ;
int t1=0,t2=0;
int i;
p = a;
for (i=1; i<5; i*=2) t1+= p[i];
for(i=0; i<=3; i++) t2 += sum(&a[i]);
for(i=0; i<4; i++) printf ("%d ",a[i]);
}
Câu 16: Giá trị t1 sau khi chạy chương trình là:
a 19 b 16
c 11 d 27
Câu 17: Giá trị t2 sau khi chạy chương trình là:
a 11 b 69
c 0 d 19
Câu 18: Xuất sau khi chạy chương trình là:
a 1 5 12 12 b 1 4 6 8
c 1 5 12 26 d 1 4 6 6
Câu 19 Cho đoạn chương trình sau:
int i=4,j=1;
if (i<j++) ;
else if (i+j <4)
i += 2;
else ; i+=2;
Trị của i và j tương ứng là:
a Sai syntax b 6 1
c 6 3 d 6 2 Đoạn chương trình sau dùng cho các câu 20,21,22,23,24,25:
#include <stdio.h>
double a,b;
void f1(int a);
int f2 (int a);
void f1(int a) {
int s=0, i=1;
if (!i<=a)
s -= 3;
else
s += 1;
printf("%d",s+i);
} int f2 (int a) {
int i=1;
for (;a%=i++;);
printf ("%d", a);
if (i==a) return a;
else return a/i;
} Câu 20) Khi gọi hàm f1(1)
a In ra 1
b In ra 2
c In ra -2
d In ra 12 Câu 21) Khi gọi hàm f2 (2):
a In ra 0
b In ra 1
c Không in ra gì cả
d Cả 3 câu trên đều sai Câu 22) Khi gọi hàm f1(f2(2))
a In ra 12
b In ra 02
c In ra 0-2
d In ra 0-3 Câu 23) Khi gọi hàm f2 ((int) f1(1))
a In ra 13
Trang 4b In ra 31
c In ra 21
d Cả 3 câu trên đều sai
Câu 24) Khi gọi hàm f1(f2(0)+a=1)
a In ra 12
b In ra 02
c In ra 0-2
d Chương trình sai cú pháp
Câu 25) Hãy chọn phát biểu đúng:
a a=b+f1(a);
b f1(a) += f2(2);
c f1 (f2(b) + (double) 1);
d f2 ((int) f1(b));
Câu 26) Đoạn chương trình sau:
int x=2,y=1;
do
{
x++;
if (x==5)
break;
y -= x;
} while (x < 5);
printf ("%d %d",x,y);
Giá trị in ra từ đoạn chương trình trên là:
a 5 5 b -6 5
c 6 -5 d 5 -6
Câu 27) Cho khai báo biến sau:
int a, *p1; double **p2;
char c, *pc;
Hãy chọn phát biểu đúng:
a a=(int) (&p1–(int **)p2);
b p2=(double *) p1+ (int *)a;
c p1 = (double *) p2 – a =1;
d pc= &a + &c;
Câu 28) Cho chương trình sau
#include <stdio.h>
int doi (char *a);
main()
{
int x=0x0102;
char y;
y = *((char *)&x + 1);
doi(&y);
printf("%d",y);
doi(&y);
printf("%d",y);
}
int doi(char *a)
{
static tam;
*a+= tam =1;
return tam;
} Kết quả là:
a Chương trình in ra 33
b Chương trình sai cú pháp
c Chương trình in ra 23
d Chương trình in ra 22 Cho chương trình sau (dùng cho các câu 29,30)
#include<stdio.h>
int ham1(int a, int b);
void ham2(int *a, int *b);
main() { int a=1, b;
b=ham1(a,b=2);
printf("%d %d", a,b);
ham2(&a,&b);
} int ham1(int a, int b) {
a+=b++;
return a;
} void ham2(int *a, int *b) {
if(*a>*b) *a+= ham1(2,*b);
else *a-=2;
printf("%d %d", *a, *b);
return;
} Câu 29) Hàm printf trong hàm main() in ra:
c 1 3 d Cả 3 câu trên đều sai Câu 30) Hàm printf trong hàm ham2 in ra:
c 1 3 d Cả 3 câu trên đều sai