Bộ đề thi cuối kỳ môn Nhập môn lập trình - Ngày thi: 11/01/2018

TRƯỜNG ĐẠI HỌC BÁCH KHOA  
Họ và tên:.............................................  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
MSSV:..................................................  
—————————————————  
THI CUỐI KỲ - NIÊN KHÓA 2017-2018  
Môn thi: Nhập môn lập trình (CO1003)  
Thời gian làm bài: 90 phút  
� Không được phép dùng tài liệu  
Đề thi số: 1711  
� Được phép dùng tài liệu giấy  
Đề thi gồm 2 trang.  
Chú ý: Các khai báo về thư viện, các hàm cơ bản và khai báo khác (nếu cần thiết) được xem như đầy đủ. Mỗi câu hỏi trắc  
nghiệm chỉ chọn một đáp án đúng nhất. Phần I, II sinh viên làm trực tiếp vào đề. Sinh viên chỉ được tối đa 10 điểm  
I. Các câu hỏi trắc nghiệm (4đ)  
Đoạn lệnh sau dùng cho 2 câu tiếp theo 1-2:  
Câu 8. Định dạng dữ liệu khi đọc/ghi bằng scanf, printf  
cho kiểu char là:  
☛ ✟  
☛✟  
int i =0, j =1, s =0;  
for ( i =0; i < 4; ++i ) {  
s = s + j ;  
A
%s  
B
%d  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
%e  
D
%c  
✡✠  
✡ ✠  
j = j ∗ 3;  
}
Câu 9. Dòng lệnh sau xuất giá trị gì ra màn hình:  
p r i n t f ( "%d" , 0x6A ) ;  
Câu 1. Thực thi xong đoạn lệnh trên giá trị của s là:  
☛ ✟  
☛✟  
☛ ✟  
☛✟  
A
6A  
B
lệnh bị lỗi  
A
40  
B
15  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
106  
D
0x6a  
C
7
D
16  
✡✠  
✡ ✠  
✡✠  
✡ ✠  
Câu 10. Giá trị in ra của đoạn lệnh C sau là  
Câu 2. Thực thi xong đoạn lệnh trên giá trị của j là:  
☛ ✟  
☛✟  
A
81  
B
32  
int x = 3 , y = 7;  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
p r i n t f ( "%d %d" , x + −−y , x++);  
C
27  
D
1
✡✠  
✡ ✠  
☛ ✟  
☛✟  
A
7 3  
B
7 4  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
Câu 3. Kiểu dữ liệu nào sau đây phù hợp nhất để lưu điểm  
tổng kết của một môn học:  
C
6 4  
D
10 3  
✡✠  
✡ ✠  
☛ ✟  
☛✟  
A
float  
B
int  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
Câu 11. Thực thi xong đoạn lệnh sau giá trị của x là:  
C
char  
D
pointer  
✡✠  
✡ ✠  
int x = 7;  
i f (x = 3)  
Câu 4. Hãy chọn phát biểu sai  
☛ ✟  
x = x ∗ 3 + 1;  
A
Ngôn ngữ toán học cũng là ngôn ngữ lập trình  
✡ ✠  
☛✟  
☛ ✟  
☛✟  
B
Máy tính có thể hiểu trực tiếp mã giả  
A
3
B
7
✡✠  
☛✟  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
Ngôn ngữ cấp cao chỉ được chuyển ngữ bởi bộ  
biên dịch (compiler)  
Máy tính có thể hiểu trực tiếp hợp ngữ  
C
10  
D
22  
✡✠  
✡✠  
✡ ✠  
☛ ✟  
D
✡ ✠  
Đoạn lệnh sau dùng cho 2 câu 12-13:  
int a , b ;  
for ( a = 1 , b = 1; a<=50; a+=2){  
i f (b>=20)  
i f (( a+b) % 3 == 1)  
Câu 5. Khai báo mảng nào sau đây là sai  
☛ ✟  
A
int a[2];  
✡ ✠  
☛✟  
break ;  
B
int a[] = {1, 3};  
✡✠  
☛✟  
C
int a[2] = malloc(2 * sizeof(2));  
✡✠  
☛ ✟  
{ b += 4; continue ;}  
D
int* a = malloc(2 * sizeof(2));  
}
✡ ✠  
Câu 6. Hãy chọn phát biểu sai về các kiểu dữ liệu  
☛ ✟  
Câu 12. Giá trị của a sau khi thực thi đoạn chương trình  
☛ ✟  
☛✟  
A
int là kiểu số nguyên và chiếm 6bytes trong bộ  
✡ ✠  
A
50  
B
51  
nhớ  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
☛✟  
B
float là kiểu số thực dấu chấm động  
C
13  
D
Cả A, B và C đều sai  
✡✠  
☛✟  
✡✠  
✡ ✠  
C
double chiếm 8bytes trong bộ nhớ  
✡✠  
☛ ✟  
Câu 13. Thực thi xong đoạn lệnh trên giá trị của b là:  
☛ ✟  
☛✟  
D
pointer là kiểu dẫn xuất  
✡ ✠  
A
21  
B
50  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
32  
D
16  
Câu 7. Dòng lệnh sau xuất giá trị gì ra màn hình?  
✡✠  
✡ ✠  
p r i n t f ( "%08.1 f " , 123. 154);  
Câu 14. Lời gọi hàm sqrt(9) trả về giá trị:  
☛ ✟  
☛✟  
☛ ✟  
☛✟  
A
123.1540  
B
000123.2  
A
1
B
6.0  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
✡ ✠  
✡✠  
☛✟  
☛ ✟  
C
123.154  
D
00123.15  
C
81.0  
D
3.0  
✡✠  
✡ ✠  
✡✠  
✡ ✠  
Ngày thi: 11/01/2018  
Trang 1/2 − Mã đề 1711  
Câu 15. Hãy chọn phát biểu sai:  
Câu 16. Thiết bị nào sau đây thuộc về phần cứng (hard-  
☛ ✟  
ware) trong máy tính  
CPU  
A
Trình biên dịch có thể hiểu được mã giả  
✡ ✠  
☛✟  
☛ ✟  
A
B
Để mô tả giải thuật có thể dùng mã giả, lưu  
đồ hoặc mã lập trình  
Lưu đồ sử dụng một số ký hiệu để mô tả giải  
thuật  
Mã lập trình là mã được viết bởi một ngôn  
ngữ lập trình nào đó (C, C++,..)  
✡ ✠  
☛✟  
✡✠  
B
Bộ tiền xử lý (Preprocessor)  
☛✟  
✡✠  
☛✟  
C
C
Trình biên dịch (Compiler)  
✡✠  
✡✠  
☛ ✟  
☛ ✟  
D
Bộ chuyển ngữ (Assembler)  
✡ ✠  
D
✡ ✠  
II. Các câu hỏi điền kết quả (2đ)  
Câu 17. Biến kiểu char chiếm:  
bộ nhớ.  
byte(s) trong  
50 thỏa mãn chia hết cho 2 nhưng không chia hết  
cho 4. Hãy điền vào chỗ trống để hoàn thiện  
int i, sum=0;  
Câu 18. Giá trị của biểu thức 5 ∗ (int)2.5 + 1.5 là:  
Câu 19. Giá trị của biểu thức 12∧5 là:  
for(i = 1;  
)
if(  
sum =  
)
Câu 20. Đoạn chương trình sau tính tổng các số từ 1 đến  
III. Phần tự luận (5đ)  
Câu 21. (1đ) Đây là câu dùng chấm phong cách lập trình. Để được điểm phần này, sinh viên phải làm được ít nhất một phần  
(có điểm dương) của một trong các câu ở dưới.  
Câu 22. (1.5đ) Viết chương trình thực hiện các yêu cầu sau:  
• Nhập vào một số nguyên dương n từ bàn phím. Nếu nhập sai thì yêu cầu nhập lại  
• Tính và in ra tổng bình phương các số nguyên dương từ 1 tới n. S = 12 + 22 + ... + n2  
Câu 23. (2.5đ) Trong không gian 3 chiều Oxyz cho tọa độ 3 đỉnh của một tam giác �ABC.  
• Hãy dùng struct để mô tả kiểu cấu trúc phù hợp về thông tin mỗi điểm trong Oxyz  
• Hãy nhập tọa độ 3 đỉnh �ABC và lưu lại để tính toán  
• Giả sử hình chiếu đứng của �ABC xuống mặt phẳng Oxy là �A�B�C�, hãy tính và xuất ra màn hình tọa độ  
của �A�B�C�  
• Viết hàm trong_tam(...) nhận vào thông tin 3 điểm A�, B�, C� của �A�B�C� ở trên, tính và trả về giao điểm  
3 đường trung tuyến của �A�B�C� (trọng tâm của �A�B�C�)  
Chủ nhiệm Khoa/Bộ môn  
Giảng viên ra đề  
ThS. Võ Thanh Hùng  
Ngày thi: 11/01/2018  
Trang 2/2 − Mã đề 1711  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
—————————————————  
THI CUỐI KỲ - NIÊN KHÓA 2017-2018  
Môn thi: Nhập môn lập trình (CO1003)  
Thời gian làm bài: 90 phút  
� Không được phép dùng tài liệu  
Đề thi số: 1711  
� Được phép dùng tài liệu giấy  
I. Các câu hỏi trắc nghiệm (4đ)  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
Câu 1.  
Câu 2.  
A
Câu 4.  
Câu 5.  
Câu 6.  
Câu 7.  
B
Câu 8.  
Câu 9.  
D
Câu 14.  
Câu 15.  
Câu 16.  
D
✡ ✠  
✡ ✠  
✡ ✠  
✡ ✠  
☛ ✟  
☛ ✟  
☛ ✟  
✡ ✠  
☛ ✟  
C
C
☛ ✟  
Câu 12.  
Câu 13.  
C
✡ ✠  
✡ ✠  
A
✡ ✠  
✡ ✠  
A
☛ ✟  
☛ ✟  
✡ ✠  
☛ ✟  
A
Câu 10.  
Câu 11.  
D
✡ ✠  
✡ ✠  
A
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
Câu 3.  
A
B
C
A
✡ ✠  
✡ ✠  
✡ ✠  
✡ ✠  
II. Các câu hỏi điền kết quả (2đ)  
Câu 17.  
Câu 18.  
1.  
Câu 19.  
9.  
11.5.  
Câu 20. .  
III. Phần tự luận (5đ)  
Câu 21. Lời giải.  
Câu 22. Lời giải. Gợi ý giải (sinh viên có thể có cách làm khác)  
#include <stdio . h>  
#include <math . h>  
int main () {  
int n , S ;  
do {  
p r i n t f ( "Nhap vao so n : " ) ;  
scanf ( "%d" , &n ) ;  
} while (n <= 0 ) ;  
S = 0;  
for ( int i = 1; i <= n ; ++i )  
S += i ∗ i ;  
p r i n t f ( "S=%d\n" , S ) ;  
return 0;  
}
\ f i  
Câu 23. Lời giải. Gợi ý giải, sinh viên có thể làm theo cách khác  
#include <stdio . h>  
#include <s t d l i b . h>  
struct Point {  
float x , y , z ;  
};  
void printPoint ( struct Point p) {  
p r i n t f ( " (%f , %f , %f ) " , p . x , p . y , p . z ) ;  
}
struct Point trong_tam ( struct Point A1, struct Point B1 , struct Point C1) {  
struct Point p ;  
p . x = (A1. x + B1 . x + C1 . x) / 3;  
Ngày thi: 11/01/2018  
Trang 1/2 − Mã đề 1711  
p . y = (A1. y + B1 . y + C1 . y) / 3;  
p . z = (A1. z + B1 . z + C1 . z ) / 3;  
return p ;  
}
int main () {  
struct Point A, B, C;  
// nhap  
p r i n t f ( "Hay nhap vao toa do A, B, C" ) ;  
scanf ( "%f%f%f " , &(A. x ) , &(A. y ) , &(A. z ) ) ;  
scanf ( "%f%f%f " , &(B. x ) , &(B. y ) , &(B. z ) ) ;  
scanf ( "%f%f%f " , &(C. x ) , &(C. y ) , &(C. z ) ) ;  
p r i n t f ( "A (%f , %f , %f )\n" , A. x , A. y , A. z ) ;  
p r i n t f ( "B (%f , %f , %f )\n" , B. x , B. y , B. z ) ;  
p r i n t f ( "C (%f , %f , %f )\n" , C. x , C. y , C. z ) ;  
// hinh chieu  
struct Point A1, B1 , C1 ;  
A1 = A; A1. z = 0;  
B1 = B; B1 . z = 0;  
C1 = C; C1 . z = 0;  
printPoint (A1 ) ; printPoint (B1 ) ; printPoint (C1 ) ;  
p r i n t f ( "\ ntrong tam : " ) ;  
printPoint ( trong_tam (A1, B1 , C1 ) ) ;  
return 0;  
}
Ngày thi: 11/01/2018  
Trang 2/2 − Mã đề 1711  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
Họ và tên:.............................................  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
MSSV:..................................................  
—————————————————  
THI CUỐI KỲ - NIÊN KHÓA 2017-2018  
Môn thi: Nhập môn lập trình (CO1003)  
Thời gian làm bài: 90 phút  
� Không được phép dùng tài liệu  
Đề thi số: 1713  
� Được phép dùng tài liệu giấy  
Đề thi gồm 2 trang.  
Chú ý: Các khai báo về thư viện, các hàm cơ bản và khai báo khác (nếu cần thiết) được xem như đầy đủ. Mỗi câu hỏi trắc  
nghiệm chỉ chọn một đáp án đúng nhất. Phần I, II sinh viên làm trực tiếp vào đề. Sinh viên chỉ được tối đa 10 điểm  
I. Các câu hỏi trắc nghiệm (4đ)  
Câu 1. Hãy chọn phát biểu sai về các kiểu dữ liệu  
Câu 8. Kiểu dữ liệu nào sau đây phù hợp nhất để lưu điểm  
tổng kết của một môn học:  
☛ ✟  
A
pointer là kiểu dẫn xuất  
☛ ✟  
☛✟  
✡ ✠  
☛✟  
A
pointer  
B
float  
B
int là kiểu số nguyên và chiếm 6bytes trong bộ  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
✡✠  
nhớ  
C
int  
D
char  
☛✟  
✡✠  
✡ ✠  
C
float là kiểu số thực dấu chấm động  
✡✠  
☛ ✟  
Câu 9. Định dạng dữ liệu khi đọc/ghi bằng scanf, printf  
cho kiểu char là:  
D
double chiếm 8bytes trong bộ nhớ  
✡ ✠  
☛ ✟  
☛✟  
A
%c  
B
%s  
Câu 2. Lời gọi hàm sqrt(9) trả về giá trị:  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
☛ ✟  
☛✟  
C
%d  
D
%e  
A
3.0  
B
1
✡✠  
✡ ✠  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
6.0  
D
81.0  
✡✠  
✡ ✠  
Câu 10. Dòng lệnh sau xuất giá trị gì ra màn hình:  
Câu 3. Thiết bị nào sau đây thuộc về phần cứng (hard-  
p r i n t f ( "%d" , 0x6A ) ;  
ware) trong máy tính  
☛ ✟  
☛✟  
☛ ✟  
A
0x6a  
B
6A  
A
Bộ chuyển ngữ (Assembler)  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
✡ ✠  
☛✟  
C
lệnh bị lỗi  
D
106  
B
CPU  
✡✠  
✡ ✠  
✡✠  
☛✟  
C
Bộ tiền xử lý (Preprocessor)  
✡✠  
☛ ✟  
Câu 11. Hãy chọn phát biểu sai  
☛ ✟  
D
Trình biên dịch (Compiler)  
✡ ✠  
A
Máy tính có thể hiểu trực tiếp hợp ngữ  
✡ ✠  
☛✟  
B
Ngôn ngữ toán học cũng là ngôn ngữ lập trình  
✡✠  
☛✟  
Câu 4. Giá trị in ra của đoạn lệnh C sau là  
C
Máy tính có thể hiểu trực tiếp mã giả  
✡✠  
☛ ✟  
int x = 3 , y = 7;  
D
Ngôn ngữ cấp cao chỉ được chuyển ngữ bởi bộ  
p r i n t f ( "%d %d" , x + −−y , x++);  
✡ ✠  
biên dịch (compiler)  
☛ ✟  
☛✟  
A
10 3  
B
7 3  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
Đoạn lệnh sau dùng cho 2 câu 12-13:  
C
7 4  
D
6 4  
✡✠  
✡ ✠  
int a , b ;  
for ( a = 1 , b = 1; a<=50; a+=2){  
Câu 5. Hãy chọn phát biểu sai:  
☛ ✟  
A
Mã lập trình là mã được viết bởi một ngôn  
i f (b>=20)  
break ;  
✡ ✠  
ngữ lập trình nào đó (C, C++,..)  
Trình biên dịch có thể hiểu được mã giả  
i f (( a+b) % 3 == 1)  
☛✟  
B
{ b += 4; continue ;}  
✡✠  
☛✟  
}
C
Để mô tả giải thuật có thể dùng mã giả, lưu  
đồ hoặc mã lập trình  
Lưu đồ sử dụng một số ký hiệu để mô tả giải  
thuật  
✡✠  
☛ ✟  
D
Câu 12. Giá trị của a sau khi thực thi đoạn chương trình  
✡ ✠  
☛ ✟  
☛✟  
A
50  
B
13  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
51  
D
Cả A, B và C đều sai  
Câu 6. Khai báo mảng nào sau đây là sai  
✡✠  
✡ ✠  
☛ ✟  
A
int* a = malloc(2 * sizeof(2));  
✡ ✠  
☛✟  
Câu 13. Thực thi xong đoạn lệnh trên giá trị của b là:  
☛ ✟  
☛✟  
B
int a[2];  
✡✠  
☛✟  
A
16  
B
21  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
int a[] = {1, 3};  
✡✠  
☛ ✟  
C
50  
D
32  
✡✠  
✡ ✠  
D
int a[2] = malloc(2 * sizeof(2));  
✡ ✠  
Câu 14. Dòng lệnh sau xuất giá trị gì ra màn hình?  
Câu 7. Thực thi xong đoạn lệnh sau giá trị của x là:  
p r i n t f ( "%08.1 f " , 123. 154);  
int x = 7;  
i f (x = 3)  
x = x ∗ 3 + 1;  
☛ ✟  
☛✟  
A
00123.15  
B
123.1540  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
000123.2  
D
123.154  
✡✠  
✡ ✠  
☛ ✟  
☛✟  
A
22  
B
3
✡ ✠  
☛✟  
✡✠  
☛ ✟  
Đoạn lệnh sau dùng cho 2 câu tiếp theo 15-16:  
Trang 1/2 − Mã đề 1713  
C
7
D
10  
✡✠  
✡ ✠  
Ngày thi: 11/01/2018  
int i =0, j =1, s =0;  
for ( i =0; i < 4; ++i ) {  
s = s + j ;  
Câu 15. Thực thi xong đoạn lệnh trên giá trị của s là:  
☛ ✟  
☛✟  
A
16  
B
40  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
15  
D
7
✡✠  
✡ ✠  
j = j ∗ 3;  
}
Câu 16. Thực thi xong đoạn lệnh trên giá trị của j là:  
☛ ✟  
☛✟  
A
1
B
81  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
32  
D
27  
✡✠  
✡ ✠  
II. Các câu hỏi điền kết quả (2đ)  
Câu 17. Đoạn chương trình sau tính tổng các số từ 1 đến  
50 thỏa mãn chia hết cho 2 nhưng không chia hết  
cho 4. Hãy điền vào chỗ trống để hoàn thiện  
int i, sum=0;  
Câu 18. Giá trị của biểu thức 5 ∗ (int)2.5 + 1.5 là:  
Câu 19. Biến kiểu char chiếm:  
bộ nhớ.  
byte(s) trong  
for(i = 1;  
)
if(  
sum =  
)
Câu 20. Giá trị của biểu thức 12∧5 là:  
III. Phần tự luận (5đ)  
Câu 21. (1đ) Đây là câu dùng chấm phong cách lập trình. Để được điểm phần này, sinh viên phải làm được ít nhất một phần  
(có điểm dương) của một trong các câu ở dưới.  
Câu 22. (1.5đ) Viết chương trình thực hiện các yêu cầu sau:  
• Nhập vào một số nguyên dương n từ bàn phím. Nếu nhập sai thì yêu cầu nhập lại  
• Tính và in ra tổng bình phương các số nguyên dương từ 1 tới n. S = 12 + 22 + ... + n2  
Câu 23. (2.5đ) Trong không gian 3 chiều Oxyz cho tọa độ 3 đỉnh của một tam giác �ABC.  
• Hãy dùng struct để mô tả kiểu cấu trúc phù hợp về thông tin mỗi điểm trong Oxyz  
• Hãy nhập tọa độ 3 đỉnh �ABC và lưu lại để tính toán  
• Giả sử hình chiếu đứng của �ABC xuống mặt phẳng Oxy là �A�B�C�, hãy tính và xuất ra màn hình tọa độ  
của �A�B�C�  
• Viết hàm trong_tam(...) nhận vào thông tin 3 điểm A�, B�, C� của �A�B�C� ở trên, tính và trả về giao điểm  
3 đường trung tuyến của �A�B�C� (trọng tâm của �A�B�C�)  
Chủ nhiệm Khoa/Bộ môn  
Giảng viên ra đề  
ThS. Võ Thanh Hùng  
Ngày thi: 11/01/2018  
Trang 2/2 − Mã đề 1713  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
—————————————————  
THI CUỐI KỲ - NIÊN KHÓA 2017-2018  
Môn thi: Nhập môn lập trình (CO1003)  
Thời gian làm bài: 90 phút  
� Không được phép dùng tài liệu  
Đề thi số: 1713  
� Được phép dùng tài liệu giấy  
I. Các câu hỏi trắc nghiệm (4đ)  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
Câu 1.  
Câu 2.  
Câu 3.  
Câu 4.  
B
Câu 5.  
Câu 6.  
Câu 7.  
Câu 8.  
B
Câu 9.  
Câu 10.  
Câu 11.  
A
Câu 12.  
Câu 13.  
B
Câu 15.  
Câu 16.  
B
✡ ✠  
✡ ✠  
✡ ✠  
✡ ✠  
✡ ✠  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
A
D
B
B
✡ ✠  
✡ ✠  
✡ ✠  
D
✡ ✠  
✡ ✠  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
B
D
✡ ✠  
✡ ✠  
C
Câu 14.  
C
☛ ✟  
☛ ✟  
✡ ✠  
✡ ✠  
A
B
✡ ✠  
✡ ✠  
II. Các câu hỏi điền kết quả (2đ)  
Câu 17. .  
Câu 19.  
Câu 20.  
1.  
9.  
Câu 18.  
11.5.  
III. Phần tự luận (5đ)  
Câu 21. Lời giải.  
Câu 22. Lời giải. Gợi ý giải (sinh viên có thể có cách làm khác)  
#include <stdio . h>  
#include <math . h>  
int main () {  
int n , S ;  
do {  
p r i n t f ( "Nhap vao so n : " ) ;  
scanf ( "%d" , &n ) ;  
} while (n <= 0 ) ;  
S = 0;  
for ( int i = 1; i <= n ; ++i )  
S += i ∗ i ;  
p r i n t f ( "S=%d\n" , S ) ;  
return 0;  
}
\ f i  
Câu 23. Lời giải. Gợi ý giải, sinh viên có thể làm theo cách khác  
#include <stdio . h>  
#include <s t d l i b . h>  
struct Point {  
float x , y , z ;  
};  
void printPoint ( struct Point p) {  
p r i n t f ( " (%f , %f , %f ) " , p . x , p . y , p . z ) ;  
}
struct Point trong_tam ( struct Point A1, struct Point B1 , struct Point C1) {  
struct Point p ;  
p . x = (A1. x + B1 . x + C1 . x) / 3;  
Ngày thi: 11/01/2018  
Trang 1/2 − Mã đề 1713  
p . y = (A1. y + B1 . y + C1 . y) / 3;  
p . z = (A1. z + B1 . z + C1 . z ) / 3;  
return p ;  
}
int main () {  
struct Point A, B, C;  
// nhap  
p r i n t f ( "Hay nhap vao toa do A, B, C" ) ;  
scanf ( "%f%f%f " , &(A. x ) , &(A. y ) , &(A. z ) ) ;  
scanf ( "%f%f%f " , &(B. x ) , &(B. y ) , &(B. z ) ) ;  
scanf ( "%f%f%f " , &(C. x ) , &(C. y ) , &(C. z ) ) ;  
p r i n t f ( "A (%f , %f , %f )\n" , A. x , A. y , A. z ) ;  
p r i n t f ( "B (%f , %f , %f )\n" , B. x , B. y , B. z ) ;  
p r i n t f ( "C (%f , %f , %f )\n" , C. x , C. y , C. z ) ;  
// hinh chieu  
struct Point A1, B1 , C1 ;  
A1 = A; A1. z = 0;  
B1 = B; B1 . z = 0;  
C1 = C; C1 . z = 0;  
printPoint (A1 ) ; printPoint (B1 ) ; printPoint (C1 ) ;  
p r i n t f ( "\ ntrong tam : " ) ;  
printPoint ( trong_tam (A1, B1 , C1 ) ) ;  
return 0;  
}
Ngày thi: 11/01/2018  
Trang 2/2 − Mã đề 1713  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
Họ và tên:.............................................  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
MSSV:..................................................  
—————————————————  
THI CUỐI KỲ - NIÊN KHÓA 2017-2018  
Môn thi: Nhập môn lập trình (CO1003)  
Thời gian làm bài: 90 phút  
� Không được phép dùng tài liệu  
Đề thi số: 1715  
� Được phép dùng tài liệu giấy  
Đề thi gồm 2 trang.  
Chú ý: Các khai báo về thư viện, các hàm cơ bản và khai báo khác (nếu cần thiết) được xem như đầy đủ. Mỗi câu hỏi trắc  
nghiệm chỉ chọn một đáp án đúng nhất. Phần I, II sinh viên làm trực tiếp vào đề. Sinh viên chỉ được tối đa 10 điểm  
I. Các câu hỏi trắc nghiệm (4đ)  
Câu 1. Thực thi xong đoạn lệnh sau giá trị của x là:  
Câu 8. Khai báo mảng nào sau đây là sai  
☛ ✟  
A
int a[2];  
int x = 7;  
i f (x = 3)  
x = x ∗ 3 + 1;  
✡ ✠  
☛✟  
B
int* a = malloc(2 * sizeof(2));  
✡✠  
☛✟  
C
int a[] = {1, 3};  
✡✠  
☛ ✟  
☛ ✟  
☛✟  
D
int a[2] = malloc(2 * sizeof(2));  
A
3
B
22  
✡ ✠  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
7
D
10  
Câu 9. Thiết bị nào sau đây thuộc về phần cứng (hard-  
✡✠  
✡ ✠  
ware) trong máy tính  
CPU  
☛ ✟  
Câu 2. Hãy chọn phát biểu sai  
A
☛ ✟  
✡ ✠  
☛✟  
A
Ngôn ngữ toán học cũng là ngôn ngữ lập trình  
B
Bộ chuyển ngữ (Assembler)  
✡ ✠  
☛✟  
✡✠  
☛✟  
B
Máy tính có thể hiểu trực tiếp hợp ngữ  
C
Bộ tiền xử lý (Preprocessor)  
✡✠  
☛✟  
✡✠  
☛ ✟  
C
Máy tính có thể hiểu trực tiếp mã giả  
D
Trình biên dịch (Compiler)  
✡✠  
☛ ✟  
✡ ✠  
D
Ngôn ngữ cấp cao chỉ được chuyển ngữ bởi bộ  
biên dịch (compiler)  
✡ ✠  
Câu 10. Lời gọi hàm sqrt(9) trả về giá trị:  
☛ ✟  
☛✟  
A
1
B
3.0  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
6.0  
D
81.0  
Câu 3. Dòng lệnh sau xuất giá trị gì ra màn hình:  
✡✠  
✡ ✠  
p r i n t f ( "%d" , 0x6A ) ;  
Đoạn lệnh sau dùng cho 2 câu 11-12:  
☛ ✟  
☛✟  
int a , b ;  
A
6A  
B
0x6a  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
for ( a = 1 , b = 1; a<=50; a+=2){  
C
lệnh bị lỗi  
D
106  
✡✠  
✡ ✠  
i f (b>=20)  
i f (( a+b) % 3 == 1)  
{ b += 4; continue ;}  
break ;  
Câu 4. Dòng lệnh sau xuất giá trị gì ra màn hình?  
}
p r i n t f ( "%08.1 f " , 123. 154);  
☛ ✟  
☛✟  
Câu 11. Giá trị của a sau khi thực thi đoạn chương trình  
A
123.1540  
B
00123.15  
☛ ✟  
☛✟  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
A
51  
B
50  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
000123.2  
D
123.154  
✡✠  
✡ ✠  
C
13  
D
Cả A, B và C đều sai  
✡✠  
✡ ✠  
Câu 5. Giá trị in ra của đoạn lệnh C sau là  
Câu 12. Thực thi xong đoạn lệnh trên giá trị của b là:  
☛ ✟  
☛✟  
A
21  
B
16  
int x = 3 , y = 7;  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
p r i n t f ( "%d %d" , x + −−y , x++);  
C
50  
D
32  
✡✠  
✡ ✠  
☛ ✟  
☛✟  
A
7 3  
B
10 3  
Câu 13. Kiểu dữ liệu nào sau đây phù hợp nhất để lưu điểm  
tổng kết của một môn học:  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
7 4  
D
6 4  
✡✠  
✡ ✠  
☛ ✟  
☛✟  
A
float  
B
pointer  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
Câu 6. Định dạng dữ liệu khi đọc/ghi bằng scanf, printf  
cho kiểu char là:  
C
int  
D
char  
✡✠  
✡ ✠  
☛ ✟  
☛✟  
Câu 14. Hãy chọn phát biểu sai:  
☛ ✟  
A
%s  
B
%c  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
A
Trình biên dịch có thể hiểu được mã giả  
✡ ✠  
☛✟  
C
%d  
D
%e  
✡✠  
✡ ✠  
B
Mã lập trình là mã được viết bởi một ngôn  
ngữ lập trình nào đó (C, C++,..)  
Để mô tả giải thuật có thể dùng mã giả, lưu  
đồ hoặc mã lập trình  
Lưu đồ sử dụng một số ký hiệu để mô tả giải  
thuật  
✡✠  
☛✟  
Câu 7. Hãy chọn phát biểu sai về các kiểu dữ liệu  
☛ ✟  
C
✡✠  
A
int là kiểu số nguyên và chiếm 6bytes trong bộ  
✡ ✠  
☛ ✟  
nhớ  
☛✟  
D
✡ ✠  
B
pointer là kiểu dẫn xuất  
✡✠  
☛✟  
C
float là kiểu số thực dấu chấm động  
✡✠  
☛ ✟  
Đoạn lệnh sau dùng cho 2 câu tiếp theo 15-16:  
Trang 1/2 − Mã đề 1715  
D
double chiếm 8bytes trong bộ nhớ  
✡ ✠  
Ngày thi: 11/01/2018  
int i =0, j =1, s =0;  
for ( i =0; i < 4; ++i ) {  
s = s + j ;  
Câu 15. Thực thi xong đoạn lệnh trên giá trị của s là:  
☛ ✟  
☛✟  
A
40  
B
16  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
15  
D
7
✡✠  
✡ ✠  
j = j ∗ 3;  
}
Câu 16. Thực thi xong đoạn lệnh trên giá trị của j là:  
☛ ✟  
☛✟  
A
81  
B
1
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
32  
D
27  
✡✠  
✡ ✠  
II. Các câu hỏi điền kết quả (2đ)  
Câu 17. Đoạn chương trình sau tính tổng các số từ 1 đến  
50 thỏa mãn chia hết cho 2 nhưng không chia hết  
cho 4. Hãy điền vào chỗ trống để hoàn thiện  
int i, sum=0;  
Câu 18. Biến kiểu char chiếm:  
bộ nhớ.  
byte(s) trong  
Câu 19. Giá trị của biểu thức 5 ∗ (int)2.5 + 1.5 là:  
for(i = 1;  
)
if(  
sum =  
)
Câu 20. Giá trị của biểu thức 12∧5 là:  
III. Phần tự luận (5đ)  
Câu 21. (1đ) Đây là câu dùng chấm phong cách lập trình. Để được điểm phần này, sinh viên phải làm được ít nhất một phần  
(có điểm dương) của một trong các câu ở dưới.  
Câu 22. (1.5đ) Viết chương trình thực hiện các yêu cầu sau:  
• Nhập vào một số nguyên dương n từ bàn phím. Nếu nhập sai thì yêu cầu nhập lại  
• Tính và in ra tổng bình phương các số nguyên dương từ 1 tới n. S = 12 + 22 + ... + n2  
Câu 23. (2.5đ) Trong không gian 3 chiều Oxyz cho tọa độ 3 đỉnh của một tam giác �ABC.  
• Hãy dùng struct để mô tả kiểu cấu trúc phù hợp về thông tin mỗi điểm trong Oxyz  
• Hãy nhập tọa độ 3 đỉnh �ABC và lưu lại để tính toán  
• Giả sử hình chiếu đứng của �ABC xuống mặt phẳng Oxy là �A�B�C�, hãy tính và xuất ra màn hình tọa độ  
của �A�B�C�  
• Viết hàm trong_tam(...) nhận vào thông tin 3 điểm A�, B�, C� của �A�B�C� ở trên, tính và trả về giao điểm  
3 đường trung tuyến của �A�B�C� (trọng tâm của �A�B�C�)  
Chủ nhiệm Khoa/Bộ môn  
Giảng viên ra đề  
ThS. Võ Thanh Hùng  
Ngày thi: 11/01/2018  
Trang 2/2 − Mã đề 1715  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
—————————————————  
THI CUỐI KỲ - NIÊN KHÓA 2017-2018  
Môn thi: Nhập môn lập trình (CO1003)  
Thời gian làm bài: 90 phút  
� Không được phép dùng tài liệu  
Đề thi số: 1715  
� Được phép dùng tài liệu giấy  
I. Các câu hỏi trắc nghiệm (4đ)  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
Câu 1.  
Câu 2.  
Câu 3.  
Câu 4.  
D
Câu 5.  
Câu 6.  
Câu 7.  
Câu 8.  
B
Câu 9.  
A
Câu 12.  
A
Câu 15.  
Câu 16.  
A
✡ ✠  
✡ ✠  
✡ ✠  
✡ ✠  
✡ ✠  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
C
B
A
✡ ✠  
✡ ✠  
✡ ✠  
Câu 10.  
B
Câu 13.  
Câu 14.  
A
✡ ✠  
☛ ✟  
☛ ✟  
✡ ✠  
☛ ✟  
D
A
✡ ✠  
✡ ✠  
A
☛ ✟  
☛ ✟  
☛ ✟  
✡ ✠  
C
D
Câu 11.  
C
✡ ✠  
✡ ✠  
✡ ✠  
II. Các câu hỏi điền kết quả (2đ)  
Câu 17. .  
Câu 19.  
Câu 20.  
11.5.  
9.  
Câu 18.  
1.  
III. Phần tự luận (5đ)  
Câu 21. Lời giải.  
Câu 22. Lời giải. Gợi ý giải (sinh viên có thể có cách làm khác)  
#include <stdio . h>  
#include <math . h>  
int main () {  
int n , S ;  
do {  
p r i n t f ( "Nhap vao so n : " ) ;  
scanf ( "%d" , &n ) ;  
} while (n <= 0 ) ;  
S = 0;  
for ( int i = 1; i <= n ; ++i )  
S += i ∗ i ;  
p r i n t f ( "S=%d\n" , S ) ;  
return 0;  
}
\ f i  
Câu 23. Lời giải. Gợi ý giải, sinh viên có thể làm theo cách khác  
#include <stdio . h>  
#include <s t d l i b . h>  
struct Point {  
float x , y , z ;  
};  
void printPoint ( struct Point p) {  
p r i n t f ( " (%f , %f , %f ) " , p . x , p . y , p . z ) ;  
}
struct Point trong_tam ( struct Point A1, struct Point B1 , struct Point C1) {  
struct Point p ;  
p . x = (A1. x + B1 . x + C1 . x) / 3;  
Ngày thi: 11/01/2018  
Trang 1/2 − Mã đề 1715  
p . y = (A1. y + B1 . y + C1 . y) / 3;  
p . z = (A1. z + B1 . z + C1 . z ) / 3;  
return p ;  
}
int main () {  
struct Point A, B, C;  
// nhap  
p r i n t f ( "Hay nhap vao toa do A, B, C" ) ;  
scanf ( "%f%f%f " , &(A. x ) , &(A. y ) , &(A. z ) ) ;  
scanf ( "%f%f%f " , &(B. x ) , &(B. y ) , &(B. z ) ) ;  
scanf ( "%f%f%f " , &(C. x ) , &(C. y ) , &(C. z ) ) ;  
p r i n t f ( "A (%f , %f , %f )\n" , A. x , A. y , A. z ) ;  
p r i n t f ( "B (%f , %f , %f )\n" , B. x , B. y , B. z ) ;  
p r i n t f ( "C (%f , %f , %f )\n" , C. x , C. y , C. z ) ;  
// hinh chieu  
struct Point A1, B1 , C1 ;  
A1 = A; A1. z = 0;  
B1 = B; B1 . z = 0;  
C1 = C; C1 . z = 0;  
printPoint (A1 ) ; printPoint (B1 ) ; printPoint (C1 ) ;  
p r i n t f ( "\ ntrong tam : " ) ;  
printPoint ( trong_tam (A1, B1 , C1 ) ) ;  
return 0;  
}
Ngày thi: 11/01/2018  
Trang 2/2 − Mã đề 1715  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
Họ và tên:.............................................  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
MSSV:..................................................  
—————————————————  
THI CUỐI KỲ - NIÊN KHÓA 2017-2018  
Môn thi: Nhập môn lập trình (CO1003)  
Thời gian làm bài: 90 phút  
� Không được phép dùng tài liệu  
Đề thi số: 1717  
� Được phép dùng tài liệu giấy  
Đề thi gồm 2 trang.  
Chú ý: Các khai báo về thư viện, các hàm cơ bản và khai báo khác (nếu cần thiết) được xem như đầy đủ. Mỗi câu hỏi trắc  
nghiệm chỉ chọn một đáp án đúng nhất. Phần I, II sinh viên làm trực tiếp vào đề. Sinh viên chỉ được tối đa 10 điểm  
I. Các câu hỏi trắc nghiệm (4đ)  
Câu 1. Hãy chọn phát biểu sai về các kiểu dữ liệu  
Câu 8. Kiểu dữ liệu nào sau đây phù hợp nhất để lưu điểm  
tổng kết của một môn học:  
☛ ✟  
A
int là kiểu số nguyên và chiếm 6bytes trong bộ  
☛ ✟  
☛✟  
✡ ✠  
nhớ  
A
float  
B
char  
☛✟  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
B
double chiếm 8bytes trong bộ nhớ  
✡✠  
☛✟  
C
int  
D
pointer  
✡✠  
✡ ✠  
C
float là kiểu số thực dấu chấm động  
✡✠  
☛ ✟  
Câu 9. Thiết bị nào sau đây thuộc về phần cứng (hard-  
D
pointer là kiểu dẫn xuất  
✡ ✠  
ware) trong máy tính  
CPU  
☛ ✟  
A
Câu 2. Lời gọi hàm sqrt(9) trả về giá trị:  
✡ ✠  
☛✟  
☛ ✟  
☛✟  
B
Trình biên dịch (Compiler)  
A
1
B
81.0  
✡✠  
☛✟  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
Bộ tiền xử lý (Preprocessor)  
C
6.0  
D
3.0  
✡✠  
☛ ✟  
✡✠  
✡ ✠  
D
Bộ chuyển ngữ (Assembler)  
✡ ✠  
Câu 3. Hãy chọn phát biểu sai:  
☛ ✟  
A
Trình biên dịch có thể hiểu được mã giả  
Câu 10. Dòng lệnh sau xuất giá trị gì ra màn hình:  
✡ ✠  
☛✟  
B
Lưu đồ sử dụng một số ký hiệu để mô tả giải  
thuật  
Để mô tả giải thuật có thể dùng mã giả, lưu  
đồ hoặc mã lập trình  
Mã lập trình là mã được viết bởi một ngôn  
ngữ lập trình nào đó (C, C++,..)  
p r i n t f ( "%d" , 0x6A ) ;  
✡✠  
☛✟  
☛ ✟  
☛✟  
C
A
6A  
B
106  
✡✠  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
lệnh bị lỗi  
D
0x6a  
☛ ✟  
✡✠  
✡ ✠  
D
✡ ✠  
Đoạn lệnh sau dùng cho 2 câu tiếp theo 11-12:  
int i =0, j =1, s =0;  
for ( i =0; i < 4; ++i ) {  
s = s + j ;  
Câu 4. Khai báo mảng nào sau đây là sai  
☛ ✟  
A
int a[2];  
✡ ✠  
☛✟  
B
int a[2] = malloc(2 * sizeof(2));  
j = j ∗ 3;  
✡✠  
☛✟  
}
C
int a[] = {1, 3};  
✡✠  
☛ ✟  
D
int* a = malloc(2 * sizeof(2));  
✡ ✠  
Câu 11. Thực thi xong đoạn lệnh trên giá trị của s là:  
☛ ✟  
☛✟  
Câu 5. Định dạng dữ liệu khi đọc/ghi bằng scanf, printf  
cho kiểu char là:  
A
40  
B
7
✡ ✠  
☛✟  
✡✠  
☛ ✟  
☛ ✟  
☛✟  
C
15  
D
16  
✡✠  
✡ ✠  
A
%s  
B
%e  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
Câu 12. Thực thi xong đoạn lệnh trên giá trị của j là:  
C
%d  
D
%c  
☛ ✟  
☛✟  
✡✠  
✡ ✠  
A
81  
B
27  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
32  
D
1
Đoạn lệnh sau dùng cho 2 câu 6-7:  
✡✠  
✡ ✠  
int a , b ;  
Câu 13. Hãy chọn phát biểu sai  
☛ ✟  
for ( a = 1 , b = 1; a<=50; a+=2){  
A
Ngôn ngữ toán học cũng là ngôn ngữ lập trình  
i f (b>=20)  
break ;  
✡ ✠  
☛✟  
i f (( a+b) % 3 == 1)  
B
Ngôn ngữ cấp cao chỉ được chuyển ngữ bởi bộ  
biên dịch (compiler)  
Máy tính có thể hiểu trực tiếp mã giả  
✡✠  
{ b += 4; continue ;}  
☛✟  
}
C
✡✠  
☛ ✟  
D
Máy tính có thể hiểu trực tiếp hợp ngữ  
✡ ✠  
Câu 6. Giá trị của a sau khi thực thi đoạn chương trình  
☛ ✟  
☛✟  
Câu 14. Thực thi xong đoạn lệnh sau giá trị của x là:  
A
51  
B
13  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
int x = 7;  
i f (x = 3)  
C
50  
D
Cả A, B và C đều sai  
✡✠  
✡ ✠  
x = x ∗ 3 + 1;  
Câu 7. Thực thi xong đoạn lệnh trên giá trị của b là:  
☛ ✟  
☛✟  
☛ ✟  
☛✟  
A
21  
B
32  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
A
3
B
10  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
C
50  
D
16  
✡✠  
✡ ✠  
C
7
D
22  
✡✠  
✡ ✠  
Ngày thi: 11/01/2018  
Trang 1/2 − Mã đề 1717  
Câu 15. Dòng lệnh sau xuất giá trị gì ra màn hình?  
Câu 16. Giá trị in ra của đoạn lệnh C sau là  
p r i n t f ( "%08.1 f " , 123. 154);  
int x = 3 , y = 7;  
p r i n t f ( "%d %d" , x + −−y , x++);  
☛ ✟  
☛✟  
A
123.1540  
B
123.154  
☛ ✟  
☛✟  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
A
7 3  
B
6 4  
C
000123.2  
D
00123.15  
✡ ✠  
☛✟  
✡✠  
☛ ✟  
✡✠  
✡ ✠  
C
7 4  
D
10 3  
✡✠  
✡ ✠  
II. Các câu hỏi điền kết quả (2đ)  
Câu 17. Giá trị của biểu thức 12∧5 là:  
for(i = 1;  
if(  
)
)
sum =  
Câu 19. Giá trị của biểu thức 5 ∗ (int)2.5 + 1.5 là:  
Câu 18. Đoạn chương trình sau tính tổng các số từ 1 đến  
50 thỏa mãn chia hết cho 2 nhưng không chia hết  
cho 4. Hãy điền vào chỗ trống để hoàn thiện  
int i, sum=0;  
Câu 20. Biến kiểu char chiếm:  
bộ nhớ.  
byte(s) trong  
III. Phần tự luận (5đ)  
Câu 21. (1đ) Đây là câu dùng chấm phong cách lập trình. Để được điểm phần này, sinh viên phải làm được ít nhất một phần  
(có điểm dương) của một trong các câu ở dưới.  
Câu 22. (1.5đ) Viết chương trình thực hiện các yêu cầu sau:  
• Nhập vào một số nguyên dương n từ bàn phím. Nếu nhập sai thì yêu cầu nhập lại  
• Tính và in ra tổng bình phương các số nguyên dương từ 1 tới n. S = 12 + 22 + ... + n2  
Câu 23. (2.5đ) Trong không gian 3 chiều Oxyz cho tọa độ 3 đỉnh của một tam giác �ABC.  
• Hãy dùng struct để mô tả kiểu cấu trúc phù hợp về thông tin mỗi điểm trong Oxyz  
• Hãy nhập tọa độ 3 đỉnh �ABC và lưu lại để tính toán  
• Giả sử hình chiếu đứng của �ABC xuống mặt phẳng Oxy là �A�B�C�, hãy tính và xuất ra màn hình tọa độ  
của �A�B�C�  
• Viết hàm trong_tam(...) nhận vào thông tin 3 điểm A�, B�, C� của �A�B�C� ở trên, tính và trả về giao điểm  
3 đường trung tuyến của �A�B�C� (trọng tâm của �A�B�C�)  
Chủ nhiệm Khoa/Bộ môn  
Giảng viên ra đề  
ThS. Võ Thanh Hùng  
Ngày thi: 11/01/2018  
Trang 2/2 − Mã đề 1717  
TRƯỜNG ĐẠI HỌC BÁCH KHOA  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
—————————————————  
THI CUỐI KỲ - NIÊN KHÓA 2017-2018  
Môn thi: Nhập môn lập trình (CO1003)  
Thời gian làm bài: 90 phút  
� Không được phép dùng tài liệu  
Đề thi số: 1717  
� Được phép dùng tài liệu giấy  
I. Các câu hỏi trắc nghiệm (4đ)  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
Câu 1.  
Câu 2.  
Câu 3.  
Câu 4.  
A
Câu 5.  
D
Câu 8.  
Câu 9.  
A
Câu 11.  
Câu 12.  
A
Câu 14.  
Câu 15.  
Câu 16.  
B
✡ ✠  
✡ ✠  
✡ ✠  
✡ ✠  
✡ ✠  
☛ ✟  
☛ ✟  
☛ ✟  
☛ ✟  
D
☛ ✟  
✡ ✠  
A
A
✡ ✠  
Câu 6.  
Câu 7.  
B
✡ ✠  
C
☛ ✟  
✡ ✠  
✡ ✠  
☛ ✟  
☛ ✟  
A
✡ ✠  
A
Câu 10.  
B
☛ ✟  
☛ ✟  
☛ ✟  
✡ ✠  
✡ ✠  
B
Câu 13.  
C
D
✡ ✠  
✡ ✠  
✡ ✠  
II. Các câu hỏi điền kết quả (2đ)  
Câu 17.  
9.  
Câu 19.  
Câu 20.  
11.5.  
1.  
Câu 18. .  
III. Phần tự luận (5đ)  
Câu 21. Lời giải.  
Câu 22. Lời giải. Gợi ý giải (sinh viên có thể có cách làm khác)  
#include <stdio . h>  
#include <math . h>  
int main () {  
int n , S ;  
do {  
p r i n t f ( "Nhap vao so n : " ) ;  
scanf ( "%d" , &n ) ;  
} while (n <= 0 ) ;  
S = 0;  
for ( int i = 1; i <= n ; ++i )  
S += i ∗ i ;  
p r i n t f ( "S=%d\n" , S ) ;  
return 0;  
}
\ f i  
Câu 23. Lời giải. Gợi ý giải, sinh viên có thể làm theo cách khác  
#include <stdio . h>  
#include <s t d l i b . h>  
struct Point {  
float x , y , z ;  
};  
void printPoint ( struct Point p) {  
p r i n t f ( " (%f , %f , %f ) " , p . x , p . y , p . z ) ;  
}
struct Point trong_tam ( struct Point A1, struct Point B1 , struct Point C1) {  
struct Point p ;  
p . x = (A1. x + B1 . x + C1 . x) / 3;  
Ngày thi: 11/01/2018  
Trang 1/2 − Mã đề 1717  
p . y = (A1. y + B1 . y + C1 . y) / 3;  
p . z = (A1. z + B1 . z + C1 . z ) / 3;  
return p ;  
}
int main () {  
struct Point A, B, C;  
// nhap  
p r i n t f ( "Hay nhap vao toa do A, B, C" ) ;  
scanf ( "%f%f%f " , &(A. x ) , &(A. y ) , &(A. z ) ) ;  
scanf ( "%f%f%f " , &(B. x ) , &(B. y ) , &(B. z ) ) ;  
scanf ( "%f%f%f " , &(C. x ) , &(C. y ) , &(C. z ) ) ;  
p r i n t f ( "A (%f , %f , %f )\n" , A. x , A. y , A. z ) ;  
p r i n t f ( "B (%f , %f , %f )\n" , B. x , B. y , B. z ) ;  
p r i n t f ( "C (%f , %f , %f )\n" , C. x , C. y , C. z ) ;  
// hinh chieu  
struct Point A1, B1 , C1 ;  
A1 = A; A1. z = 0;  
B1 = B; B1 . z = 0;  
C1 = C; C1 . z = 0;  
printPoint (A1 ) ; printPoint (B1 ) ; printPoint (C1 ) ;  
p r i n t f ( "\ ntrong tam : " ) ;  
printPoint ( trong_tam (A1, B1 , C1 ) ) ;  
return 0;  
}
Ngày thi: 11/01/2018  
Trang 2/2 − Mã đề 1717  
pdf 16 trang myanh 30820 Free
Bạn đang xem tài liệu "Bộ đề thi cuối kỳ môn Nhập môn lập trình - Ngày thi: 11/01/2018", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbo_de_thi_cuoi_ky_mon_nhap_mon_lap_trinh_nam_hoc_2017_2018.pdf