You are on page 1of 4

MID-TERM EXAM

Họ tên:……………………………………….
PROGRAMMING I
MSSV:……………………………………...
Lớp:……………………………………………
CODE: 4

ĐIỂM:………………………………………………………………………………

1. Tìm tất cả các lỗi có thể xảy ra trong các câu khai báo sau:
Float a; /*** SỬA LỖI CỦA BẠN***/
int LETTER, num; float a;
int = a, b; int LETTER, num;
char c=”a”; int b;
double m; sum = 0; char c=’a’;
float pressure; double m,sum = 0;
float pressure;

2. Tìm lỗi cú pháp trong chương trình sau. Sau khi chỉnh sửa, kết quả đầu ra của chương trình là
gì?
void main() /*** SỬA LỖI CỦA BẠN***/
{ void main()
int a, b; {
float perimeter; int a, b;
float area; float perimeter;
A = 2; float area;
b = 4.0; a = 2;
Perimeter = (A+b)/2; b = 4.0;
Area = A*b; perimeter = (a+b)/2;
print("%f", "%d", &perimeter, &area); area = a*b;
} printf("%f, %f", perimeter, area);
}
OUTPUT: 3.000000, 8.000000
3. Which statements are true?
(a) Trong C, nếu một mục dữ liệu bằng 0, nó được coi là sai T
(b) Toán tử môđun (%) có thể được sử dụng với các số nguyên, số thực .. F
(c) Tất cả các toán tử số học đều có cùng mức độ ưu tiên F
(d) Biểu thức! (x <= y) tương tự với biểu thức (x> y) T
4. Biểu thức nào sau đây là đúng?
(a) !(5+5>=10)
(b) 5+5==10 || 1+3==5
(c) 5>10||10<20&&3<5
(d) 10!=15 &&(10<20)||15>30
5. Biểu thức số học nào sau đây có giá trị?
(a) 25/3%2 (b) +9/4+5 (c) 7.5%3 (d) 14%3+7%2
(e) -14%3 (f) 15.25+-5.0 (g) (5/3)*3+5%3 (h) 21%(int)4.5
6. Kết quả của chương trình sau là gì?
void main(){ /*** ĐẦU RA***/
int x; 10
printf("%d\n", 10 + x++); 12
printf("%d\n", 10 + ++x);
}
7. Kết quả của chương trình sau là gì?
void main(){ /*** ĐẦU RA***/
int x = 10; False
if (x=20) printf("True");
else printf("False");
}
8. Đoạn code sau có lỗi gì?
int x = 10; /*** GIẢI THÍCH***/
float y = 4.25; Lỗi ở dòng 3.
x = y%x; Lý do: Không thể chia lấy dư cho số thực với
số nguyên.
9. Câu nào đúng?
a. Câu lênh break dùng để dừng chương trình
b. Lệnh switch có thể thuộc bất kỳ kiểu nào
c. Câu lệnh switch có thể thay thế cho một loạt các câu lệnh if...else
d. Một câu lệnh if có thể sử dụng nhiêu hơn một mệnh đề else
10. Kết quả của chương trình sau là gì?
int m = 1; /*** ĐẦU RA***/
if (m==1) Ha NoiHo Chi Minh
{
printf("Ha Noi");
if(m==2)
printf("Da Nang");
else
printf("Ho Chi Minh");
}
11. Kết quả của chương trình sau là gì?
void main(){ /*** ĐẦU RA***/
int x = 10, y = 20; 10
if((x<y)||(x+5)>10)
printf("%d", x);
else
printf("%d", y);
}
12. Lỗi của đoạn code sau đây là gì, nếu có?
int a = 0, b= 1, c =2; /*** GIẢI THÍCH***/
if (code>1); Có 2 lỗi:
a = b+c Chưa khai báo biến code.
else Sau 2 câu lệnh trong if và else thiếu dấu “;”.
a=0
13. Đầu ra của đoạn code sau sẽ là gì?
for (int m=10;m>7;m-=2) /*** GIẢI THÍCH***/
printf("%d", m); 108
Ban đầu kiểm tra giá trị m>7 đúng=> in ra
10, giảm m 2 giá trị.=> m=8.
Vòng thứ hai kiểm tra m>7 đúng=> in ra 8,
giảm m 2 giá trị.=> m=6.
Vòng thứ 3 kiểm tra m>7 sai=> dừng vòng
lặp.
14. Xác định xem phần thân của mỗi vòng lặp sẽ được thực hiện bao nhiêu lần?
int x = 5; /*** GIẢI THÍCH***/
int y = 50; Giá trị ban đầu của x là 5, y là 50. Vòng lặp
while(x<=y) đầu tiên kiểm tra x<y đúng nên thực hiện gán
{ giá trị mới cho x=y/x => x nhận giá trị là 10.
x = y/x; Vòng lặp 2 kiểm tra x<y vẫn đúng nên thực
} hiện gán giá trị mới cho x=y/x => x nhận giá
trị 5. Các vòng lặp tiếp theo sẽ lặp lại như
vòng lặp 1 và 2, x thay đổi giá trị giữa 5 và
10 liên tục.
 Vòng lặp vô hạn.

15. Xác định xem phần thân của mỗi vòng lặp sẽ được thực hiện bao nhiêu lần?
int m = 10; /*** GIẢI THÍCH***/
int n = 7;
while(m%n >= 0) Hai biến m và n đều nguyên dương.
{  Biểu thức m%n luôn trả về một giá
m = m+1; trị nguyên dương.
n = n+2;  Điều kiện m%n>=0 luôn đúng.
}  Vòng lặp vô hạn.

16. Xác định xem phần thân của mỗi vòng lặp sẽ được thực hiện bao nhiêu lần?
int m = 1; /*** GIẢI THÍCH***/
do{ - Vòng lặp 1 m=m+2 nên m nhận giá
m = m+2; trị 3, kiểm tra m<10 đúng=> nhảy
} while (m<10) sang vòng 2.
- Vòng lặp 2 m=m+2 nên m nhận giá
trị 5, kiểm tra m<10 đúng=> nhảy
sang vòng 3.
- Vòng lặp 3 m=m+2 nên m nhận giá
trị 7, kiểm tra m<10 đúng=> nhảy
sang vòng 4.
- Vòng lặp 2 m=m+2 nên m nhận giá
trị 9, kiểm tra m<10 đúng=> nhảy
sang vòng 5.
- Vòng lặp 2 m=m+2 nên m nhận giá
trị 11, kiểm tra m<10 sai=> dừng
vòng lặp.
 Có 5 vòng lặp.

17. Khi nào chúng ta sử dụng câu lệnh sau?


for(; ;) /*** GIẢI THÍCH***/
Khi cần 1 vòng lặp vô hạn không phụ thuộc
vào điều kiện lặp nào.

18. Xác định xem phần thân của mỗi vòng lặp sẽ được thực hiện bao nhiêu lần?
sum = 0; /*** GIẢI THÍCH***/
while(count != 10){ Sau mỗi vòng lặp, biến count đều có giá trị là
count = 1; 2, kiểm tra count!=10 luôn đúng sau mỗi
sum += count; vòng lặp.
count += 1;  Vòng lặp vô hạn.
}
19. Kết quả của chương trình sau là gì?
void main(){ /*** ĐẦU RA***/
char string[] = "Hello World"; HloWrd
int m;
for(m = 0; string[m] != '\0'; m++)
if((m%2) == 0)
printf("%c", string[m]);
}
20. Đầu ra của đoạn code sau sẽ là gì?
count = 5; /*** GIẢI THÍCH***/
do printf("%d", count); Số 5 đuợc in ra liên tiếp và không dừng lại.
while (count > 0); Giải thích: do count=5, và trong vòng lặp
không tác động gì đến biến count, nên count
luôn có giá trị bằng 5, điều kiện trong while()
luôn đúng nên vòng lặp bị lặp vô hạn và liên
tục in ra số 5.

You might also like