
chuonc1
Chương 1. Phần mở đầu.
Chương 2. Tính toán trong C và các cấu trúc lựa chọn.
Cho đoạn chương trình sau, giá trị của biến i, j, k sẽ bằng bao nhiêu sau khi đoạn chương trình được thực hiện.
int i = 10;
int j = 20;
int k = 30;
i = (j = (k = k + 7) - 3) + 4;
Giá trị của x,y , z sẽ bằng bao nhiêu sao đoạn chương trình sau:
Int i = 20;
Int j = 20;
Int k = 30;
Int x,y,z;
X = i * j % k;
Y = i + 1 * j - 1 /k;
Z = k / 3 % 3 + k / i - 1;
Các biểu thức sau có giá trị bao nhiêu ?
a. (1 + 2 * 3)
b. 10 % 3 * 3 - (1 + 2)
c. ((1 + 2) * 3)
d. (5 == 5)
e. (x = 5)
Giả sử x = 4, y = 6, z = 2. hãy xác định xem các biểu thức sau có giá trị true hay false:
a. if( x == 4)
b. if(x != y - z)
c. if(z = 1)
d. if(y)
in ra gi?
int i = 2;
int j = 3;
i += j + j;
j *= i * 1.5;
cout << "i = " << i << " j = " << j << endl;
(a) i = 6 j = 3
(b) i = 6 j = 9
(c) i = 8 j = 36
(d) i = 9 j = 36
(e) i = 8 j = 24
Xác định kết quả xuất ra màn hình của đoạn lệnh sau?
if (0 == 1 / 2)
if (4 == 3)
cout << 1 << endl;
else if ((3 < 5) && (5 != 1 + 4))
cout << 2 << endl;
else
cout << 3 << endl;
else
cout << 4 << endl;
Hai đoạn mã lệnh sau có tương đương với nhau hay không? Nếu không thì tại sao?
(a) if (m < 5) {
if (n < 10) {
P = true;
}
else {
P = false;
}
}
(b) if ((m < 5) && (n < 10)) {
P = true;
}
else {
P = false;
}
Cho phần khai báo sau:
Các đoạn chương trình sau sẽ in ra gì?
Cho đoạn mã lệnh sau:
if ( 5 / 2 == 2.5 )
cout << "1";
cout << "2";
cout << "3" << endl;
Đoạn chương trình trên sẽ xuất ra màn hình nội dung gì?
(a) 1 2 3
(b) 1 3
(c) 2 3
(d) 3
Xác định giá trị của biến Z sau khi đoạn chương trình sau được thực hiện?
int R = 6;
bool S = true;
bool T = false;
bool Z = !(S || !T) || (R <= 7);
(a) 6
(b) true
(c) false
(d) không thể xác định được giá trị của Z.
(e) 7
Xác định giá trị của biến v sau khi thực nhưng câu lệnh hoặc đoạn mã lệnh sau phần khai báo biến sau:
char a;
int q = 7;
int r = 7;
float s = 7.5;
int t = 15;
bool u = true;
bool v = false;
a........................................................
v = u;
b........................................................
if (s == t/2) {
v = true;}
c........................................................
t = s;
v = (r == t);
d........................................................
v = (r < t) && (t < r) || u && v;
e........................................................
while (cin >> a) {
if (a == '
') {
v = true;
}
}
Chương 3. Các cấu trúc vòng lặp.
x sẽ có giá trị bao nhiêu sau khi vòng lặp sau kết thúc?
for (x = 0; x < 100, x++) ;
ctr có giá trị bao nhiêu sau khi lệnh sau kết thúc?
for (ctr = 2; ctr < 10; ctr += 3) ;
Bạn hãy xác định lỗi của đoạn mã nguồn dưới đây:
record = 0;
while (record < 100)
{
printf( "
Record %d ", record );
printf( "
Getting next number..." );
}
Xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int i = 1;
int j, sum;
do
{
sum = 0;
j = 1;
while (j <= i)
{
sum = sum + j;
j = j + 1;
}
cout << sum << ' ';
i = i + 1;
}while (i <= 3)
Xác định kết quả ra màn hình sau các đoạn mã lệnh sau.
a. int i = 10;
while (i >= 0)
{
i -= 3;
cout << i << " ";
}
cout << i << endl;
b. int i = 10;
do
{
cout << i << " ";
i -= 3;
} while (i <= 0);
cout << i << endl;
Xác định kết quả xuất ra màn hình của đoạn chương trình sau?
for (int i = 1; i < 10; i = i + 3)
{
cout << i << " ";
}
cout << i;
a. 1 2 3 4 5 6 7 8 9
b. 1 2 3 4 5 6 7 8 9 10
c. 1 4 7
d. 1 4 7 10
e. 1 4 7 10 13 16 .... Vô tận
Xác định kết quả xuất ra màn hình của đoạn chương trình sau::
for (int i = 1; i <= 100; i++) {
int count = 0;
if ( (i % 2) == 0 ) {
count++;
}
}
cout << count << endl;
(a) 0
(b) 1
(c) 50
(d) 100
(e) không xuất ra màn hình, trình dịch báo lỗi khi thông dịch mã lệnh.
Xác định giá trị của hai biến p, q sau khi chương trinh thực hiện đoạn mã lệnh sau:
int p = 8;
int q = 2;
while ( p < 14)
{
p = p + q ;
q = q * q ;
}
Xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int i = 1;
int j, sum;
while (i <= 3)
{
sum = 0;
j = 1;
while (j <= i)
{
sum = sum + j;
j = j + 1;
}
cout << sum << ' ';
i = i + 1;
}
Chương trình sau sẽ in ra gì?
/* retire.c */
#include <stdio.h>
int main(void)
{
int age = 20;
while (age++ <= 65)
{
if (( age % 20) == 0)
printf("%d
", age);
if (age = 65)
printf("%d
", age);
}
return 0;
}
Xác định và sửa lỗi trong chương trình sau?
#include <stdio.h>
int main(void)
{
char ch;
int lc = 0; /* lowercase char count
int uc = 0; /* uppercase char count
int oc = 0; /* other char count
while ((ch = getchar()) != '#')
{
if ('a' <= ch >= 'z')
lc++;
else if (!(ch < 'A') || !(ch > 'Z')
uc++;
oc++;
}
printf(%d lowercase, %d uppercase, %d other, lc, uc, oc);
return 0;
}
Xác định kết quả in ra màn hình của các đoạn chương trình sau?
#include <stdio.h>
int main(void)
{
int i = 0;
while (i++ < 4)
printf("Hi! ");
do
printf("Bye! ");
while (i++ < 8);
return 0;
}
Đoạn chương trình sau có lỗi, hãy tìm và sửa các lỗi này.
#include <stdio.h>
int main(void)
{ /* line 3 */
int i, j, list(10); /* line 4 */
for (i = 1, i <= 10, i++) /* line 6 */
{ /* line 7 */
list[i] = 2*i + 3; /* line 8 */
for (j = 1, j > = i, j++) /* line 9 */
printf(" %d", list[j]); /* line 10 */
printf("
"); /* line 11 */
}
Cho đoạn chương trình sau, chuối ký tự CS101 rocks được hiển thị ra màn hình bao nhiêu lần nếu người dùng nhập vào giá trị là 1 ?
int number;
while (cin >> number--) {
cout << "CS101 rocks" << endl;}
(a) 0 times
(b) 1 time
(c) 2 times
(d) 3 times
(e) không phải các trả lời trên
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int i;
for (i= 2; i < 20; i = i * i ){
cout << i << endl;
i = i + 2;
}
Chương 4. Các cấu trúc dữ liệu mở rộng - Mảng, con trỏ, kiểu cấu trúc.
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int a[5];
a[0] = 0;
for (int i = 1; i <= 4; ++i) {
a[i] = a[i-1] + i;
}
cout << a[3] << endl;
5. Chương trình sau sẽ in ra màn hình nội dung gì?
#include <stdio.h>
struct house {
float sqft;
int rooms;
int stories;
char address[40];
};
int main(void)
{
struct house fruzt = {1560.0, 6, 1, "22 Spiffo Road"};
struct house *sign;
sign = &fruzt;
printf("%d %d
", fruzt.rooms, sign->stories);
printf("%s
", fruzt.address);
printf("%c %c
", sign->address[3], fruzt.address[4]);
return 0;
}
6. Cho đoạn chương trình sau:
struct name {
char first[20];
char last[20];
};
struct bem {
int limbs;
struct name title;
char type[30];
};
struct bem * pb;
struct bem deb = {
6,
{"Berbnazel", "Gwolkapwolk"},
"Arcturan"
};
pb = &deb;
a. Đoạn chương trình tiếp theo sau đoạn chương trình trên sẽ in ra màn hình nội dung gì??
printf("%d
", deb.limbs);
printf("%s
", pb->type);
printf("%s
", pb->type + 2);
Cho đoạn chương trình sau:
int a = 3, y = 5;
int *xPtr,x[10] = {0};
xPtr = &x[1];
*(xPtr + 3) = x[5] = a + y;
Hãy xác định giá trị của các phần tử x[3], x[4], x[5] của mảng?
Cho lời khai báo sau:
char s[6] = "abcde";
(a) Câu lệnh sau sẽ in ra màn hình nội dung gì?
cout << s << endl;
(b) Đoạn lệnh sau sẽ in ra màn hình nội dung gì?
for (int i = 0; i < 5; ++i) {
cout << s[i] << endl;
}
cout << endl
Chương 5. Hàm trong C.
Chương 6. Xử lý file dữ liệu trong C.
Chương 7. Lập trình hướng đối tượng.
Cho đoạn chương trình sau, giá trị của biến i, j, k sẽ bằng bao nhiêu sau khi đoạn chương trình được thực hiện.
int i = 2;
int j = 5;
int k = 8;
i += (j = (k = k + 5) - 3) + 4;
a.i = 14; j = 10; k = 13;
b.i = 16; j = 4; k = 13;
c.i = 14; j = 4; k = 13;
d.i = 16; j = 10; k = 13;
Giả sử x = 4, y = 6, z = 2. hãy xác định xem các biểu thức sau có giá trị true hay false:
a. if( x == 4)
b. if(x != y - z)
c. if(z = 1)
d. if(y)
Xác định kết quả xuất ra màn hình của đoạn lệnh sau?
if(0 == 1 / 2)
if (4 != 3)
cout << 1 << endl;
else if ((3 < 5) && (5 != 1 + 4))
cout << 2 << endl;
else
cout << 3 << endl;
else
cout << 4 << endl;
a. 4
b. 1
c. 3
d. 2
Xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int i = 1;
int j, sum;
do
{
sum = 0;
j = 1;
while (j <= i)
{
sum = sum + j;
j = j + 1;
}
cout << sum << ' ';
i++;
}while (i <= 3)
a. 1 2 3
b. 0 1 2
c. 1 3 6
d. 1 3 5
Xác định giá trị của hai biến p, q sau khi chương trinh thực hiện đoạn mã lệnh sau:
int p = 8;
int q = 2;
while ( p <= 15)
{
p += q ;
q *= q ;
}
a. p = 10; q = 4;
b. p = 14; q = 16;
c. p = 10; q = 14;
d. p = 16; q = 14;
Đoạn chương trình sau có lỗi, hãy tìm và sửa các lỗi này.
#include <stdio.h>
int main(void)
{ /* dòng 3 */
int i, j, list(10); /* dòng 4 */
for (i = 1, i <= 10, i++) /* dòng 6 */
{ /* dòng 7 */
list[i] = 2*i + 3; /* dòng 8 */
for (j = 1, j > = i, j++) /* dòng 9 */
printf(" %d", list[j]); /* dòng 10 */
printf("
"); /* dòng 11 */
}
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int a[6] = {1};
a[0] = 0;
for (int i = 1; i <= 4; ++i) {
a[i] = a[i-1] + i;
}
cout << a[3] << " " << a[5] << endl;
a. 6 1
b. 6 0
c. 3 1
d. 3 0
Cho đoạn chương trình sau:
struct name {
char first[20];
char last[20];
};
struct bem {
int limbs;
struct name title;
char type[30];
};
struct bem * pb;
struct bem deb = {
6,
{"Berbnazel", "Gwolkapwolk"},
"Arcturan"
};
pb = &deb;
Đoạn chương trình tiếp theo sau đoạn chương trình trên sẽ in ra màn hình nội dung gì??
printf("%d
", deb.limbs);
printf("%s
", pb->type);
printf("%s
", pb->type + 2);
Cho đoạn chương trình sau:
int a = 2, y = 4;
int *xPtr,x[10] = {1};
xPtr = &x[1];
*(xPtr + 3) += x[5] = a + y;
Xác định giá trị của x[3], x[4] và x[5]?
a. x[3] = 7; x[4] = 1; x[5] = 6;
b. x[3] = 6; x[4] = 1; x[5] = 6;
c. x[3] = 1; x[4] = 6; x[5] = 6;
d. x[3] = 1; x[4] = 7; x[5] = 6;
Đoạn chương trình sau sẽ in ra nội dung gì?
void one(int &x) {
x = x + 1;
}
void two(int x) {
x = x + 2;
}
int main() {
int x = 3;
one(x);
cout << x << " ";
two(x);
cout << x << endl;
}
a.
b.
c.
d.
Đoạn chương trình sau sẽ in ra nội dung gì?
void func();
int i = 2;
int j = 3;
int k = 4;
int m = 5;
int main()
{
cout << i + j << " " << k << " " << m << endl;
func();
cout << i + j << " " << k << " " << m << endl;
return 0;
}
void func()
{
int m = i + j;
j = i + m;
k = m * m;
}
a.
b.
c.
d.
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int test(int x)
{
if (x > 3)
return 1;
else
return 0;
}
int main()
{
int y = 6;
while (test(y + 1) == 1)
{
cout << y << " ";
y = y - 1;
}
cout << endl;
return 0;
}
Cho phần định nghĩa một hàm như sau:
void something ( int a, int& b )
{
int c;
c = a + 3;
a = a * 2;
b = c + a;
}
Xác định thông tin được hiển thị ra màn hình của đoạn mã chương trình sau? Giả thiết các biến trong đoạn mã đã được khai báo và có kiểu là nguyên!
r = 1;
s = 2;
t = 3;
something(t, s);
cout << r << " " << s << " " << t << endl;
a. 1 12 3
b. 1 2 9
c. 6 12 6
d. 1 12 6
Không phải các kết quả trên
Một phân lớp có tên Vehicle, có hai hàm khởi tạo có thuộc tính public, giả thiết một hàm khởi tạo không có đối số, còn một hàm có đối số là x có kiểu nguyên. Ngoài ra phân lớp có một số các hàm thành viên có tên và thuộc tính như sau:
- Hàm get(), là hàm thành viên có thuộc tính truy xuất chi cho phép các thành phần của phân lớp Vehicle hoặc các phân lớp kế thừa từ Vehicle mới được phép truy xuất.
- Hàm charged(), là hàm thành viên có thể được truy xuất (gọi) từ bất cứ hàm thành viên nào của phân lớp Vehicle.
- Hàm set, có một đối số là s có kiểu nguyên và hàm trả về giá trị là void, Hàm này chỉ được phép truy xuất tới các thành phần của phân lớp Vehicle.
- Ngoài ra phân lớp trên có biến thành viên MyTurbo có kiểu nguyên, được phép truy xuất từ bất cứ thành phần nào của phân lớp.
Với các miêu tả trên hãy đưa ra phần định nghĩa phân lớp Vehicle.
Cho phần định nghĩa phân lớp như sau:
class Rect
{
public:
Rect();
Rect( int j, int k);
int get_l();
int get_w();
int area();
private:
int length;
int width;
};
// now the definitions of the member functions
Rect::Rect() {
length = -234;
width = 0;
}
Rect::Rect(int j, int k) {
length = j;
width = k;
}
int Rect::get_l() {
return length;
}
int Rect::get_w() {
return width;
}
int Rect::area()
{
return (length * width);
}
Hãy xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int main()
{
Rect a(4, 7);
cout << a.length << endl;
return 0;
}
int main()
{
Rect box(6, 9);
int x = box.area();
cout << x << " " << box.get_l() << endl;
return 0;
}
int main()
{
Rect alpha;
Rect beta(1, 2);
int one = alpha.get_l() + beta.get_l();
int two = alpha.get_w() + beta.get_w();
cout << one << " " << two << endl;
return 0;
}
a.
b.
c.
d.
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
#include <iostream.h>
class Numbers {
public:
Numbers (const int value);
int sum(int which1, int which2);
int read(int index );
private:
int m[100];
};
Numbers::Numbers( const int value ) {
for (int i = 0; i < 100; ++i) {
m[i] = value + i;
}
}
int Numbers::sum(int which1, int which2) {
return m[which1] + m[which2];
}
int Numbers::read(int index) {
return m[index];
}
void main() {
Numbers n(100);
for (int i = 0; i < 3; ++i) {
cout << n.read(i) << " ";
}
}
a.
b.
c.
d.
Hai đoạn mã lệnh sau có tương đương với nhau hay không? Nếu không thì tại sao?
(a) if (m < 5) {
if (n < 10) {
P = true;
}
else {
P = false;
}
}
(b) if ((m < 5) && (n < 10)) {
P = true;
}
else {
P = false;
}
Xác định giá trị của biến Z sau khi đoạn chương trình sau được thực hiện?
int R = 6;
bool S = true;
bool T = false;
bool Z = !(S || !T) || (R <= 7);
(a) 6
(b) true
(c) false
(d) không thể xác định được giá trị của Z.
(e) 7
Xác định giá trị của biến v sau khi thực nhưng câu lệnh hoặc đoạn mã lệnh sau phần khai báo biến sau:
char a;
int q = 7;
int r = 7;
float s = 7.5;
int t = 15;
bool u = true;
bool v = false;
d........................................................
v = (r < t) && (t < r) || u && v;
e........................................................
while (cin >> a) {
if (a == '
') {
v = true;
}
}
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int i;
for (i= 2; i < 20; i = i * i ){
cout << i << endl;
i = i + 2;
}
Xác định kết quả ra màn hình sau các đoạn mã lệnh sau.
c. int i = 10;
while (i >= 0)
{
i -= 3;
cout << i << " ";
}
cout << i << endl;
d. int i = 10;
do
{
cout << i << " ";
i -= 3;
} while (i <= 0);
cout << i << endl;
Chương trình sau sẽ in ra gì?
/* retire.c */
#include <stdio.h>
int main(void)
{
int age = 20;
while (age++ <= 65)
{
if (( age % 20) == 0)
printf("%d
", age);
if (age = 65)
printf("%d
", age);
}
return 0;
}
Cho đoạn chương trình sau:
int a = 3, y = 5;
int *xPtr,x[10] = {0};
xPtr = &x[1];
*(xPtr + 3) = x[5] = a + y;
Hãy xác định giá trị của các phần tử x[3], x[4], x[5] của mảng?
Cho lời khai báo sau:
char s[6] = "abcde";
(a) Câu lệnh sau sẽ in ra màn hình nội dung gì?
cout << s << endl;
(b) Đoạn lệnh sau sẽ in ra màn hình nội dung gì?
for (int i = 0; i < 5; ++i) {
cout << s[i] << endl;
}
cout << endl
struct fullname {
char fname[20];
char lname[20];
};
struct bard {
struct fullname name;
int born;
int died;
};
struct bard willie;
struct bard *pt = &willie;
a. Truy xuất trực tiếp trường dữ liệu born của biến cấu trúc willie.
b. Truy xuất gián tiếp trường dữ liệu born của biến cấu trúc willie thông qua con trỏ pt.
c. Sử dụng hàm scanf() để nhập giá trị cho trường dữ liệu born của biến cấu trúc willie.
d. Sử dụng hàm scanf() để nhập giá trị cho trường dữ liệu born của biến cấu trúc willie thông qua con trỏ pt.
e. Sử dụng hàm scanf() để nhập giá trị cho trường dữ liệu lname của biến cấu trúc willie.
f. Sử dụng hàm scanf() để nhập giá trị cho trường dữ liệu lname của biến cấu trúc willie thông qua con trỏ pt.
Cho phần định nghĩa một hàm như sau:
void something ( int a, int& b )
{
int c;
c = a + 3;
a = a * 2;
b = c + a;
}
Xác định thông tin được hiển thị ra màn hình của đoạn mã chương trình sau? Giả thiết các biến trong đoạn mã đã được khai báo và có kiểu là nguyên!
r = 1;
s = 2;
t = 3;
something(t, s);
cout << r << " " << s << " " << t << endl;
e. 1 12 3
f. 1 2 9
g. 6 12 6
h. 1 12 6
i. Không phải các kết quả trên
Xác định kết quả xuất ra màn hình của đoạn chương trình sau?
#include <iostream.h>
int counter = 10;
void f() {
++counter;
}
void g() {
f();
f();
}
int main() {
f();
cout << "output1: " << counter << endl;
g();
cout << "output2: " << counter << endl;
return 0;
}
Giả thiết cho phần định nghĩa của hàm f() như sau:
void f(int &i, int j, int &k) {
i = 1;
j = 2;
k = 3;
return;
}
(a) Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int main() {
int i = 10;
int j = 20;
int k = 30;
f(k, j, i);
cout << "i = " << i << " j = " << j
<< "k = " << k << endl;
return 0;
}
(b) Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int main() {
int i = 10;
int j = 20;
int k = 30;
f(j, j, j);
cout << "i = " << i << " j = " << j
<< "k = " << k << endl
return 0;
}
Cho phần định nghĩa phân lớp như sau:
class Rect
{
public:
Rect();
Rect( int j, int k);
int get_l();
int get_w();
int area();
private:
int length;
int width;
};
// now the definitions of the member functions
Rect::Rect() {
length = -234;
width = 0;
}
Rect::Rect(int j, int k) {
length = j;
width = k;
}
int Rect::get_l() {
return length;
}
int Rect::get_w() {
return width;
}
int Rect::area()
{
return (length * width);
}
Hãy xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int main()
{
Rect a(4, 7);
cout << a.length << endl;
return 0;
}
int main()
{
Rect box(6, 9);
int x = box.area();
cout << x << " " << box.get_l() << endl;
return 0;
}
int main()
{
Rect alpha;
Rect beta(1, 2);
int one = alpha.get_l() + beta.get_l();
int two = alpha.get_w() + beta.get_w();
cout << one << " " << two << endl;
return 0;
}
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
#include <iostream.h>
class Numbers {
public:
Numbers (const int value);
int sum(int which1, int which2);
int read(int index );
private:
int m[100];
};
Numbers::Numbers( const int value ) {
for (int i = 0; i < 100; ++i) {
m[i] = value + i;
}
}
int Numbers::sum(int which1, int which2) {
return m[which1] + m[which2];
}
int Numbers::read(int index) {
return m[index];
}
void main() {
Numbers n(100);
for (int i = 0; i < 3; ++i) {
cout << n.read(i) << " ";
}
}
Trêng ®¹i häc gtvt
Khoa ®iÖn - ®iÖn tö
Bé m«n: addasd §Ò Thi 1
M«n: Ng¤N NG÷ LËP TR×NH C++
Thêi gian: 90 phót. Trëng bé m«n kÝ duyÖt
Họ và tên : Lớp:
Mã số sv :
I. Phần bài trắc nghiệm
(Với mỗi câu hỏi chọn một đáp án trả lời bằng cách khoanh tròn vào câu lựa chọn, VD b )
1. Cho đoạn chương trình sau, giá trị của biến i, j, k sẽ bằng bao nhiêu sau khi đoạn chương trình được thực hiện.
int i = 2;
int j = 5;
int k = 8;
i += (j = (k = k + 5) - 3) + 4;
a. i = 14; j = 10; k = 13;
b. i = 16; j = 4; k = 13;
c. i = 14; j = 4; k = 13;
d. i = 16; j = 10; k = 13;
2. Xác định kết quả xuất ra màn hình của đoạn lệnh sau?
if(0 == 1 / 2)
if (4 != 3)
cout << 1 << endl;
else if ((3 < 5) && (5 != 1 + 4))
cout << 2 << endl;
else
cout << 3 << endl;
else
cout << 4 << endl;
a. 4
b. 1
c. 3
d. 2
3. Xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int i = 1;
int j, sum;
do
{
sum = 0;
j = 1;
while (j <= i)
{
sum = sum + j;
j = j + 1;
}
cout << sum << ' ';
i++;
}while (i <= 3)
a. 1 2 3
b. 0 1 2
c. 1 3 6
d. 1 3 5
4. Xác định giá trị của hai biến p, q sau khi chương trinh thực hiện đoạn mã lệnh sau:
int p = 8;
int q = 2;
while ( p <= 15)
{
p += q ;
q *= q ;
}
a. p = 10; q = 4;
b. p = 14; q = 16;
c. p = 10; q = 14;
d. p = 16; q = 14;
5. Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int a[6] = {1};
a[0] = 0;
for (int i = 1; i <= 4; ++i) {
a[i] = a[i-1] + i;
}
cout << a[3] << " " << a[5] << endl;
a. 6 1
b. 6 0
c. 3 1
d. 3 0
6. Cho đoạn chương trình sau:
int a = 2, y = 4;
int *xPtr,x[10] = {1};
xPtr = &x[1];
*(xPtr + 3) += x[5] = a + y;
Xác định giá trị của x[3], x[4] và x[5]?
a. x[3] = 7; x[4] = 1; x[5] = 6;
b. x[3] = 6; x[4] = 1; x[5] = 6;
c. x[3] = 1; x[4] = 6; x[5] = 6;
d. x[3] = 1; x[4] = 7; x[5] = 6;
7. Đoạn chương trình sau sẽ in ra nội dung gì?
void one(int x) {
x = x + 1;
}
void two(int &x) {
x = x + 2;
}
int main() {
int x = 3;
one(x);
cout << x << " ";
two(x);
cout << x << endl;
}
a. 4 6
b. 4 4
c. 3 5
d. 3 3
8. Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
#include <iostream.h>
class Numbers {
public:
Numbers (int value);
int sum(int which1, int which2);
int read(int index );
private:
int m[100];
};
Numbers::Numbers( int value ) {
for (int i = 0; i < 100; ++i) {
m[i] = value + i;
}
}
int Numbers::sum(int which1, int which2) {
return m[which1] + m[which2];
}
int Numbers::read(int index) {
return m[index];
}
void main() {
Numbers n(100);
for (int i = 0; i < 3; ++i) {
cout << n.read(i) << " ";
}
}
a. 0 1 2
b. 100 101 102
c. 200 201 202
d. 101 102 103
9. Cho phần định nghĩa một hàm như sau:
void something ( int a, int& b )
{
int c;
c = a + 3;
a = a * 2;
b = c + a;
}
Xác định thông tin được hiển thị ra màn hình của đoạn mã chương trình sau? Giả thiết các biến trong đoạn mã đã được khai báo và có kiểu là nguyên!
r = 1;
s = 2;
t = 3;
something(t, s);
cout << r << " " << s << " " << t << endl;
a. 1 12 3
b. 1 2 9
c. 6 12 6
d. 1 12 6
II. Phần bài viết:
1. Giả sử x = 3, y = 6, z = 2. hãy xác định xem các biểu thức của các câu lệnh lựa chọn if sau có giá trị true hay false:
a. if( x == 4)
b. if(x != y - z)
c. if(z = 0)
d. if(y)
2. Đoạn chương trình sau có lỗi, hãy tìm và sửa các lỗi này.
#include <stdio.h>
int main(void)
{ /* dòng 3 */
int i, j, list(10); /* dòng 4 */
for (i = 1, i <= 10, i++) /* dòng 6 */
{ /* dòng 7 */
list[i] = 2*i + 3; /* dòng 8 */
for (j = 1, j > = i, j++) /* dòng 9 */
printf(" %d", list[j]); /* dòng 10 */
printf("
"); /* dòng 11 */
}
3. Cho đoạn chương trình khai báo như sau:
struct TEN {
char first[20];
char last[20];
};
struct LILICH {
int tuoi;
struct TEN ten;
char diachi[30];
};
struct LILICH *pb;
struct LILICH deb = {
26,
{"Hung", "Nguyen Van"},
"Ha Tay"
};
pb = &deb;
Đoạn chương trình tiếp theo sau đoạn chương trình trên sẽ in ra màn hình nội dung gì??
printf("%d
", deb.tuoi);
printf("%s
", pb->diachi[0]);
printf("%s
", (pb->ten).first[0]);
4.Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int test(int x)
{
if (x > 3)
return 1;
else
return 0;
}
int main()
{
int y = 6;
while (test(y + 1) == 1)
{
cout << y << " ";
y = y - 1;
}
cout << endl;
return 0;
}
5. Một phân lớp có tên Vehicle, có hai hàm khởi tạo có thuộc tính public, giả thiết một hàm khởi tạo không có đối số, còn một hàm có đối số là x có kiểu nguyên. Ngoài ra phân lớp có một số các hàm thành viên có tên và thuộc tính như sau:
- Hàm get(), là hàm thành viên có thuộc tính truy xuất chi cho phép các thành phần của phân lớp Vehicle hoặc các phân lớp kế thừa từ Vehicle mới được phép truy xuất.
- Hàm charged(), là hàm thành viên có thể được truy xuất (gọi) từ bất cứ hàm thành viên nào của phân lớp Vehicle.
- Hàm set, có một đối số là s có kiểu nguyên và hàm trả về giá trị là void, Hàm này chỉ được phép truy xuất tới các thành phần của phân lớp Vehicle.
- Ngoài ra phân lớp trên có biến thành viên MyTurbo có kiểu nguyên, được phép truy xuất từ bất cứ thành phần nào của phân lớp.
Với các miêu tả trên hãy đưa ra phần định nghĩa phân lớp Vehicle.
Trêng ®¹i häc gtvt
Khoa ®iÖn - ®iÖn tö
Bé m«n: t ViÔn Th«ng §Ò Thi 2
M«n: Ng¤N NG÷ LËP TR×NH C++
Thêi gian: 90 phót. Trëng bé m«n kÝ duyÖt
Họ và tên : Lớp:
Mã số sv :
I. Phần bài trắc nghiệm
(Với mỗi câu hỏi chọn một đáp án trả lời bằng cách khoanh tròn vào câu lựa chọn, VD b )
1. Cho đoạn mã lệnh sau:
float f = 5;
if ( f / 2 == 2.5 )
cout << "1";
cout << "2";
cout << "3" << endl;
Đoạn chương trình trên sẽ xuất ra màn hình nội dung gì?
a. 1 2 3
b. 1 3
c. 2 3
d. 3
2. Xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int i = 1;
int j, sum;
do
{
sum = 0;
j = 1;
while (j <= i)
{
sum = sum + j;
j = j + 1;
}
cout << sum << ' ';
i++;
}while (i <= 3)
a. 1 2 3
b. 0 1 2
c. 1 3 6
d. 1 3 5
3. Cho phần định nghĩa phân lớp như sau:
class Rect
{
public:
Rect();
Rect( int j, int k);
int get_l();
int get_w();
int area();
private:
int length;
int width;
};
// now the definitions of the member functions
Rect::Rect() {
length = -234;
width = 0;
}
Rect::Rect(int j, int k) {
length = j;
width = k;
}
int Rect::get_l() {
return length;
}
int Rect::get_w() {
return width;
}
int Rect::area()
{
return (length * width);
}
Hãy xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int main()
{
Rect box(6, 9);
int x = box.area();
cout << x << " " << box.get_l() << " "
<< box.get_w() << " "
<< box.get_w() + box.get_l() << endl;
return 0;
}
a. 54 6 9 15
b. 6 54 15 9
c. 9 6 15 54
d. 54 9 6 15
4. Cho phần định nghĩa của các hàm chức năng sau và đoạn chương trình nằm trong thân chương trình chính. Xác định kết quả hiển thị ra màn hình của đoạn chương trình này?
void f1(int& z, int &q)
{
int temp;
temp=q;
q=z;
z=temp;
}
void f2( int& a, int& b)
{
if( a<b)
f1(a,b);
else
a=b;
}
int x=3, y=4;
f2(y,x);
cout << x <<" " << y << endl;
i. 3 3
ii. 4 3
iii. 3 4
iv. 4 4
5. Cho đoạn chương trình sau:
int a = 2, y = 4;
int *xPtr,x[10] = {1};
xPtr = &x[1];
*(xPtr + 3) += x[5] = a + y;
Xác định giá trị của x[3], x[4] và x[5]?
a. x[3] = 7; x[4] = 1; x[5] = 6;
b. x[3] = 6; x[4] = 1; x[5] = 6;
c. x[3] = 1; x[4] = 6; x[5] = 6;
d. x[3] = 1; x[4] = 7; x[5] = 6;
6. Giả thiết cho phần định nghĩa một hàm như sau
int curse(int n) {
if (n <= 0) {
return 1;
}
else {
return n + curse(n-1);
}
}
Câu lệnh sau sẽ in ra màn hình nội dung gì?
cout << curse(5) << endl;
a. 13
b. 14
c. 15
d. 16
7. Cho đoạn chương trình sau, chuối ký tự "hello" được hiển thị ra màn hình bao nhiêu lần nếu người dùng nhập vào giá trị là 2 ?
int number;
while (cin >> number--) {
cout << "hello" << endl;}
a. Không hiển thị gì ra màn hình
b. 1 lần
c. 2 lần
d. không phải các câu trả lời trên
8. Giả thiết cho phần định nghĩa của hàm f() như sau:
void f(int i, int j, int &k) {
i = 4
j = 5
k = 6
return;
}
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int main() {
int i = 1
int j = 2;
int k = 3;
f(k, j, i);
cout << "i = " << i << ";j = " << j
<< ";k = " << k << endl;
return 0;
}
a. i = 1;j = 2;k = 3
b. i = 1;j = 4;k = 6
c. i = 4;j = 5 ;k = 6
d. i = 4;j = 2;k = 6
II. Phàn bài viết:
1. Giá trị của x,y , z sẽ bằng bao nhiêu sao đoạn chương trình sau:
int i = 20;
int j = 20;
int k = 30;
int x,y,z;
x = i * j % k;
y = i + 1 * j - 1 /k;
z = k / 3 % 3 + k / i - 1;
2. Bạn hãy xác định lỗi của đoạn mã nguồn dưới đây:
record = 0;
while (record < 100)
{
printf( "
Record %d ", record );
printf( "
Getting next number..." );
}
3. Cho đoạn chương trình như sau
#include <stdio.h>
struct NHA {
float dientich;
int sophong;
int sotang;
char diachi[40];
};
int main(void)
{
struct NHA home = {1560.0, 6, 1, "20, Hoang Hoa Tham"};
struct NHA *sign;
sign = &home;
printf("%d %d
", home.sophong, sign->sotang);
printf("%s
", home.diachi);
printf("%c %c
", sign->diachi[0], home.diachi[1]);
return 0;
}
Xác định nội dung mà chương trình xuất ra màn hình?
4. Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
void f(char &a) {
cout << "char " << a << "
";
return;
}
void f(int &a) {
cout << "int " << a << "
";
return;
}
int main() {
int i = 1;
char c = 'c';
f(i);
f(c);
return 0;
}
5. Cho lời khai báo sau:
char s[6] = "abcde";
(a) Câu lệnh sau sẽ in ra màn hình nội dung gì?
cout << s << endl;
(b) Đoạn lệnh sau sẽ in ra màn hình nội dung gì?
for (int i = 0; i < 5; ++i) {
cout << s[i] << endl;
}
cout << endl
6. Hai phân lớp có tên là Hoo và Wahoo được định nghĩa như sau.
class Hoo {
public:
Hoo( );
Hoo( &int n );
int Hoo( int n, int m );
protected:
int HooYear;
int HooTime;
private:
HooDay;
};
class Wahoo : public Hoo {
public:
Wahoo(int n, int m);
};
Wahoo::Wahoo(int time, int day ) {
HooTime = time;
HooDay = day;
}
Trong đoạn mã lệnh trên có lỗi hãy chỉ ra các lỗi này. Giả thiết các phần định nghĩa các hàm chức năng còn lại trong chương trình chứa đoạn mã lệnh trên đều không có lỗi.
Trêng ®¹i häc gtvt
Khoa ®iÖn - ®iÖn tö
Bé m«n: Kü ThuËt ViÔn Th«ng §Ò Thi 1
M«n: Ng¤N NG÷ LËP TR×NH C++
Thêi gian: 70 phót. Trëng bé m«n kÝ duyÖt
Họ và tên : Lớp:
I. Phần bài trắc nghiệm
(Với mỗi câu hỏi chọn một đáp án trả lời bằng cách khoanh tròn vào câu lựa chọn, VD b )
1. Cho đoạn chương trình sau, giá trị của biến i, j, k sẽ bằng bao nhiêu sau khi đoạn chương trình được thực hiện.
int i = 2;
int j = 5;
int k = 8;
i += (j = (k += 5) - 3) + 4;
a. i = 14; j = 10; k = 13;
b. i = 16; j = 4; k = 13;
c. i = 14; j = 4; k = 13;
d. i = 16; j = 10; k = 13;
2. Xác định kết quả xuất ra màn hình của đoạn lệnh sau?
if(0 == 1 % 2)
if (2 / 3)
cout << 1 << endl;
else if ((3 < 5) && (5 != 5 % 10))
cout << 2 << endl;
else
cout << 3 << endl;
else
cout << 4 << endl;
a. 4
b. 1
c. 3
d. 2
3. Xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int i = 1;
int j, sum;
do
{
sum = 0;
j = 1;
while (j <= i)
{
sum = sum + j;
j += 1;
}
cout << sum << ' ';
i++;
}while (i <= 3)
a. 1 2 3
b. 0 1 2
c. 1 3 6
d. 1 3 5
4. Cho đoạn chương trình sau:
int a = 2, y = 4;
int *xPtr,x[10] = {1};
xPtr = &x[1];
*(xPtr + 3) += x[5] = a + y;
Xác định giá trị của x[3], x[4] và x[5]?
a. x[3] = 7; x[4] = 1; x[5] = 6;
b. x[3] = 6; x[4] = 1; x[5] = 6;
c. x[3] = 1; x[4] = 6; x[5] = 6;
d. x[3] = 1; x[4] = 7; x[5] = 6;
5. Đoạn chương trình sau sẽ in ra nội dung gì?
void one(int x) {
x = x + 1;
}
void two(int &x) {
x = x + 2;
}
int main() {
int x = 3;
one(x);
cout << x << " ";
two(x);
cout << x << endl;
}
a. 4 6
b. 4 4
c. 3 5
d. 3 3
6. Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
#include <iostream.h>
class Numbers {
public:
Numbers (int value);
int sum(int which1, int which2);
int read(int index );
private:
int m[100];
};
Numbers::Numbers( int value ) {
for (int i = 0; i < 100; ++i) {
m[i] = value + i;
}
}
int Numbers::sum(int which1, int which2) {
return m[which1] + m[which2];
}
int Numbers::read(int index) {
return m[index];
}
void main() {
Numbers n(100);
for (int i = 0; i < 3; ++i) {
cout << n.read(i) << " ";
}
}
a. 0 1 2
b. 100 101 102
c. 200 201 202
d. 101 102 103
II. Phần bài viết:
1. Đoạn chương trình sau có lỗi, hãy tìm và sửa các lỗi này.
#include <stdio.h>
int main(void)
{ /* dòng 3 */
int i, j, list(10); /* dòng 4 */
for (i = 1, i <= 10, i++) /* dòng 6 */
{ /* dòng 7 */
list[i] = 2*i + 3; /* dòng 8 */
for (j = 1, j > = i, j++) /* dòng 9 */
printf(" %d", list[j]); /* dòng 10 */
printf("
"); /* dòng 11 */
}
2. Cho đoạn chương trình khai báo như sau:
struct TEN {
char first[20];
char last[20];
};
struct LILICH {
int tuoi;
struct TEN ten;
char diachi[30];
};
struct LILICH *pb;
struct LILICH deb = {
26,
{"Hung", "Nguyen Van"},
"Ha Tay"
};
pb = &deb;
Viết câu lệnh nhập giá trị dùng hàm scanf cho trường dữ liệu "first" của biến cấu trúc deb thông qua con trỏ pb
3.Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int test(int &x)
{
if (x > 3)
{
x--;
return 1;
}
else
return 0;
}
int main()
{
int y = 6;
while (test(y + 1) == 1)
cout << y << " ";
cout << endl;
return 0;
}
Trêng ®¹i häc gtvt
Khoa ®iÖn - ®iÖn tö
Bé m«n: Kü ThuËt ViÔn Th«ng §Ò Thi Sè:
M«n: NGÔN NGỮ LẬP TRÌNH C++
Thêi gian: 90 phót. Trëng bé m«n kÝ duyÖt
I. Phần bài trắc nghiệm.
1) Chỉ thị nào sau đây là đúng khi dùng để khai báo một biến nguyên có tên là sum và một biến kiểu float có tên là avr?
a) int sum, float avr;
b) int sum; float avr; c) int float sum, avr;
d) int avr; float sum;
2) Chỉ thị nào sau đây là đúng khi khai báo một hằng số có tên là FALSE và giá trị là 0?
a) int FALSE = 0;
b) #define FALSE = 0; c) #define FALSE 0;
d) #define FALSE 0
3) Chỉ thị nào sau đây là đúng khi khai báo một hằng số có tên là SOLUONG và giá trị là 12.5?
a) const float SOLUONG = 12.5;
b) #define SOLUONG = 12.5; c) float SOLUONG = 12.5;
d) #define SOLUONG 12.5;
4) Câu lệnh nào sau đây là đúng để thực hiện việc gán giá trị trung bình cộng hai biến toan va hoa cho biến biến trung_binh?
a) trungbinh := toan+hoa/2;
b) trung binh = (toan+hoa)/2; c) trung_binh = (toan+hoa)/2;
d) trung_binh := (toan+hoa)/2;
5) Câu lệnh nào sau đây là đúng để thực hiện việc gán ký tự A cho biến ký tự kytu?
a) kytu = 'A';
b) kytu = A; c) char kytu = "A";
d) kytu = "A"
6) Câu lệnh nào sau đây là đúng để thực hiện việc in ra giá trị tích của hai biến num1 và num2?
a) printf("tich = %s",num1 * num2);
b) print("tich = %d",&num1 * num2); c) printf("tich = %d",num1* num2);
d) printf("tich = %d",&(num1 * num2));
7) Câu lệnh nào sau đây là đúng để thực hiện việc in ra giá trị của biến thực saiso có 3 số phần thập phân?
a) printf("%3.0f", saiso);
b) printf("%3f",&saiso); c) printf("%2.3f",saiso);
d) printf("%*.3f",2,saiso);
8) Câu lệnh nào sau đây là đúng để thực hiện việc đọc giá trị cho biến nguyên có tên là soluong từ bàn phím?
a) scanf("%d",&soluong);
b) scanf("%s",&soluong); c) scanf("%d",*soluong);
d) scanf(soluong);
9) Câu lệnh nào sau đây là đúng khi sử dụng để khai báo một mảng 20 ký tự có tên hoten?
a) letters: hoten[20];
b) char[20] hoten; c) char array hoten[10];
d) char hoten[20];
10) Câu lệnh nào sau đây là đúng khi gán ký tự 'B' cho phần tử thứ sáu của mảng ký tự có tên là noisinh?
a) noisinh[5] = 'b';
b) noisinh[6]:= "B"; c) noisinh[6] = "B";
d) noisinh[5] = 'B';
11) Câu lệnh nào sau đây là đúng để gán xâu "Hello" cho mảng ký tự words tại thời điểm khai báo?
a) char words[10] = 'Hello';
b) static char words[] = "Hello"; c) static char words["hello"];
d) static char words[] = { Hello };
12) Câu lệnh nào sau đây là đúng để in ra màn hình giá trị của phần tử thứ 3 của mảng số nguyên có tên totals?
a) printf("%d
", &totals[3] );
b) printf("%d
", totals[3] ); c) printf("%c
", totals[2] );
d) printf("%d
", totals[2] );
13) Chỉ thị nào sao đây là đúng để khai báo một biến con trỏ nguyên có tên address?
a) int address;
b) address *int; c) int *address;
d) *int address;
14) Câu lệnh nào sau đây là đúng khi gán địa chỉ của biến thực balance cho con trỏ thực temp?
a) temp = &balance;
b) balance = float temp; c) float temp *balance;
d) &temp = balance;
15) Cho biết kết quả trên màn hình sau khi chạy đoạn chương trình sau?
int *ptinh, saiso = 2, tonghop = 0;
ptinh = &saiso;
*temp = 5;
tonghop = 50;
temp = &tonghop;
*temp += saiso;
printf("saiso = %d, tonghop= %d
", saiso, tonghop);
a) saiso = 5, tonghop = 52
b) saiso = 5, tonghop = 50 c) saiso = 2, tonghop = 50
d) saiso = 2, tonghop = 52
16) Một kiểu dữ liệu cấu trúc có tên Hoso mà các trường của nó bao gồm một số nguyên Lop, một xâu ký tự Hoten có độ dài tối đa là 15 và một số thực có tên Diemtb được khai báo như thế nào?
a)
struct Hoso {
int Lop;
float Diemtb;
char Hoten[15];
};
b)
type structure record {
Lop : integer;
Diemtb : real;
Hoten : array[0..4] of char;
}; c)
type record {
integer Lop;
float Diemtb;
char Hoten[14];
}
17) Chỉ thị nào sau đây là đúng khi khai báo một biến struct record có tên sample?
a) type sample : record;
b) struct sample; c) struct record sample;
d) declare sample as type record;
18) Câu lệnh gán giá trị 10 cho trường loop của biến sample ở câu 3 là?
a) loop = 10;
b) sample.loop = 10; c) record.sample.loop = 10;
d) record.loop = 10;
19) Câu lệnh nào đúng để in ra các số nguyên lẻ từ 1 đến 50. (cho sẵn biến j là biến kiểu nguyên)
a) for(j = 1; j <= 50; j++) printf("%d", j);
b) for(j = 1; j <= 50; j++) printf("%d", j/2); c) for(j = 1; j < 50; j += 2) printf("%d", j/2 + 1);
d) for(j = 1; j < 50; j ++) printf("%d", j/2 + 1);
20) Cho một mảng số nguyên 40 phần tử có tên là diemtb. Giả thiết giá trị các phần tử của mảng đã được thiết lập trước đó. Khối lệnh nào dưới đây thực hiện việc đếm số lượng các phần tử có giá trị lớn hơn 5 trong mảng. (giả thiết các biến đã được khai báo trước đó)
a) soluong = 0; j = 0;
while(j < 40)
if( diemtb[j] > 5) soluong ++;
b) soluong = 0; j = 0;
while(j <= 39)
if( j > 5) soluong ++; c) soluong = 0; j = 0;
while(j < 40);
if( diemtb[j] > 5) soluong += 1;
d) soluong = 0; j = 0;
while(j < 39)
if( diemtb[j] > 5) soluong += 1;
II. Phần bài viết.
1. Thực hiện sủa các lỗi có trong đoạn chương trình sau:
#include <stdio.h>
#define SIZE 10;
void main()
{
int n[SIZE] = {19 , 3 , 15 , 7 ; 11, 9 , 13 , 5 , 17 , 1};
int i , j
printf( "%s%13s%17s
", "STT", "gia tri", 'danh gia' );
for( i = 0; i < SIZE - 1, i++)
{
printf( "%7d%13d ", i, n[ i ]) ;
for(j = 1; j < n[i] ; j++)
printf('%c','*');
printf("
");
}
}
2. Viết kết quả của đoạn chương trình trên sau khi đã sửa lỗi:
Họ và tên: Lớp:
'
Trêng ®¹i häc gtvt
Khoa ®iÖn - ®iÖn tö
Bé m«n: Kü ThuËt ViÔn Th«ng §Ò Thi Sè:
M«n: NGÔN NGỮ LẬP TRÌNH C++
Thêi gian: 90 phót. Trëng bé m«n kÝ duyÖt
I. Phần bài trắc nghiệm.
(Với mỗi câu hỏi chọn một đáp án trả lời bằng cách khoanh tròn vào câu lựa chọn, VD b )
1) Câu lệnh nào sau đây là đúng khi sử dụng để khai báo một mảng 20 ký tự có tên hoten?
a) letters: hoten[20];
b) char[20] hoten; c) char array hoten[10];
d) char hoten[20];
2) Chỉ thị nào sao đây là đúng để khai báo một biến con trỏ nguyên có tên address?
a) int address;
b) address *int; c) int *address;
d) *int address;
3) Chỉ thị nào sau đây là đúng khi khai báo một biến struct record có tên sample?
a) type sample : record;
b) struct sample; c) struct record sample;
d) declare sample as type record;
4) Chỉ thị nào sau đây là đúng khi khai báo một hằng số có tên là SOLUONG và giá trị là 12.5?
a) const float SOLUONG = 12.5;
b) #define SOLUONG = 12.5; c) float SOLUONG = 12.5;
d) #define SOLUONG 12.5;
5) Chỉ thị nào sau đây là đúng khi dùng để khai báo một biến nguyên có tên là sum và một biến kiểu float có tên là avr?
e) int sum, float avr;
f) int sum; float avr; g) int float sum, avr;
h) int avr; float sum;
6) Câu lệnh nào sau đây là đúng để thực hiện việc đọc giá trị cho biến nguyên có tên là soluong từ bàn phím?
a) scanf("%d",&soluong);
b) scanf("%s",&soluong); c) scanf("%d",*soluong);
d) scanf(soluong);
7) Câu lệnh nào sau đây là đúng để in ra màn hình giá trị của phần tử thứ 3 của mảng số nguyên có tên totals?
a) printf("%d
", &totals[3] );
b) printf("%d
", totals[3] ); c) printf("%c
", totals[2] );
d) printf("%d
", totals[2] );
8) Câu lệnh nào sau đây là đúng để thực hiện việc in ra giá trị tích của hai biến num1 và num2?
a) printf("tich = %s",num1 * num2);
b) print("tich = %d",&num1 * num2); c) printf("tich = %d",num1* num2);
d) printf("tich = %d",&(num1 * num2));
9) Câu lệnh nào đúng để in ra các số nguyên lẻ từ 1 đến 50. (cho sẵn biến j là biến kiểu nguyên)
e) for(j = 1; j <= 50; j++) printf("%d", j);
f) for(j = 1; j <= 50; j++) printf("%d", j/2); g) for(j = 1; j < 50; j += 2) printf("%d", j/2 + 1);
h) for(j = 1; j < 50; j ++) printf("%d", j/2 + 1);
10) Câu lệnh nào sau đây là đúng khi gán ký tự 'B' cho phần tử thứ sáu của mảng ký tự có tên là noisinh?
a) noisinh[5] = 'b';
b) noisinh[6]:= "B"; c) noisinh[6] = "B";
d) noisinh[5] = 'B';
11) Chỉ thị nào sau đây là đúng khi khai báo một hằng số có tên là FALSE và giá trị là 0?
a) int FALSE = 0;
b) #define FALSE = 0; c) #define FALSE 0;
d) #define FALSE 0
12) Câu lệnh nào sau đây là đúng để thực hiện việc gán giá trị trung bình cộng hai biến toan va hoa cho biến biến trung_binh?
a) trungbinh := toan+hoa/2;
b) trung binh = (toan+hoa)/2; c) trung_binh = (toan+hoa)/2;
d) trung_binh := (toan+hoa)/2;
13) Câu lệnh nào sau đây là đúng để gán xâu "Hello" cho mảng ký tự words tại thời điểm khai báo?
a) char words[10] = 'Hello';
b) static char words[] = "Hello"; c) static char words["hello"];
d) static char words[] = { Hello };
14) Cho biết kết quả trên màn hình sau khi chạy đoạn chương trình sau?
int *ptinh, saiso = 2, tonghop = 0;
ptinh = &saiso;
*temp = 5;
tonghop = 50;
temp = &tonghop;
*temp += saiso;
printf("saiso = %d, tonghop= %d
", saiso, tonghop);
a) saiso = 5, tonghop = 52
b) saiso = 5, tonghop = 50 c) saiso = 2, tonghop = 50
d) saiso = 2, tonghop = 52
15) Cho một mảng số nguyên 40 phần tử có tên là diemtb. Giả thiết giá trị các phần tử của mảng đã được thiết lập trước đó. Khối lệnh nào dưới đây thực hiện việc đếm số lượng các phần tử có giá trị lớn hơn 5 trong mảng. (giả thiết các biến đã được khai báo trước đó)
e) soluong = 0; j = 0;
while(j < 40)
if( diemtb[j] > 5) soluong ++;
f) soluong = 0; j = 0;
while(j <= 39)
if( j > 5) soluong ++; g) soluong = 0; j = 0;
while(j < 40);
if( diemtb[j] > 5) soluong += 1;
h) soluong = 0; j = 0;
while(j < 39)
if( diemtb[j] > 5) soluong += 1;
16) Câu lệnh nào sau đây là đúng để thực hiện việc gán ký tự A cho biến ký tự kytu?
a) kytu = 'A';
b) kytu = A; c) char kytu = "A";
d) kytu = "A"
17) Câu lệnh nào sau đây là đúng để thực hiện việc in ra giá trị của biến thực saiso có 3 số phần thập phân?
a) printf("%3.0f", saiso);
b) printf("%3f",&saiso); c) printf("%2.3f",saiso);
d) printf("%*.3f",2,saiso);
18) Câu lệnh nào sau đây là đúng khi gán địa chỉ của biến thực balance cho con trỏ thực temp?
a) temp = &balance;
b) balance = float temp; c) float temp *balance;
d) &temp = balance;
19) Một kiểu dữ liệu cấu trúc có tên Hoso mà các trường của nó bao gồm một số nguyên Lop, một xâu ký tự Hoten có độ dài tối đa là 15 và một số thực có tên Diemtb được khai báo như thế nào?
a)
struct Hoso {
int Lop;
float Diemtb;
char Hoten[15];
};
b)
type structure record {
Lop : integer;
Diemtb : real;
Hoten : array[0..4] of char;
}; c)
type record {
integer Lop;
float Diemtb;
char Hoten[14];
}
20) Câu lệnh gán giá trị 10 cho trường loop của biến sample ở câu 3 là?
a) loop = 10;
b) sample.loop = 10; c) record.sample.loop = 10;
d) record.loop = 10;
II. Phần bài viết.
1. Thực hiện sủa các lỗi có trong đoạn chương trình sau:
#include <stdio.h>
#define SIZE = 10
void main()
{
int n[SIZE] = {19 , 3 , 15 , 7 , 11, 9 , 13 ; 5 , 17 , 1};
int i , j
printf( "%s%13s%17s
", "STT", "gia tri", 'danh gia' );
for( i := 0; i < SIZE - 1; i++)
{
printf( "%7d%13d ", i, n[ i ]) ;
for(j = 1; j < n[i] ; j++)
printf(' %c","*');
printf("
")
}
}
2. Viết kết quả của đoạn chương trình trên sau khi đã sửa lỗi:
Họ và tên: Lớp:
'
Câu hỏi kiểm tra
I. Phần bài tập trắc nghiệm:
1) Chỉ thị nào sau đây là đúng khi dùng để khai báo một biến nguyên có tên là sum và một biến kiểu float có tên là avr?
i) int sum, float avr;
j) int sum; float avr;
k) int float sum, avr;
l) int avr; float sum;
2) Chỉ thị nào sau đây là đúng khi khai báo một hằng số có tên là FALSE và giá trị là 0?
a) int FALSE = 0;
b) #define FALSE = 0;
c) #define FALSE 0;
d) #define FALSE 0
3) Chỉ thị nào sau đây là đúng khi khai báo một hằng số có tên là SOLUONG và giá trị là 12.5?
a) const float SOLUONG = 12.5;
b) #define SOLUONG = 12.5;
c) float SOLUONG = 12.5;
d) #define SOLUONG 12.5;
4) Câu lệnh nào sau đây là đúng để thực hiện việc gán giá trị trung bình cộng hai biến toan va hoa cho biến biến trung_binh?
a) trungbinh := toan+hoa/2;
b) trung binh = (toan+hoa)/2;
c) trung_binh = (toan+hoa)/2;
d) trung_binh := (toan+hoa)/2;
5) Câu lệnh nào sau đây là đúng để thực hiện việc gán ký tự A cho biến ký tự kytu?
a) kytu = 'A';
b) kytu = A;
c) char kytu = "A";
d) kytu = "A"
6) Câu lệnh nào sau đây là đúng để thực hiện việc in ra giá trị tích của hai biến num1 và num2?
a) printf("tich = %s",num1 * num2);
b) print("tich = %d",&num1 * num2);
c) printf("tich = %d",num1* num2);
d) printf("tich = %d",&(num1 * num2));
8) Câu lệnh nào sau đây là đúng để thực hiện việc đọc giá trị cho biến nguyên có tên là soluong từ bàn phím?
a) scanf("%d",&soluong);
b) scanf("%s",&soluong);
c) scanf("%d",*soluong);
d) scanf(soluong);
9) Câu lệnh nào sau đây là đúng khi sử dụng để khai báo một mảng 20 ký tự có tên hoten?
a) letters: hoten[20];
b) char[20] hoten;
c) char array hoten[10];
d) char hoten[20];
10) Câu lệnh nào sau đây là đúng khi gán ký tự 'B' cho phần tử thứ sáu của mảng ký tự có tên là noisinh?
a) noisinh[5] = 'b';
b) noisinh[6]:= "B";
c) noisinh[6] = "B";
d) noisinh[5] = 'B';
11) Câu lệnh nào sau đây là đúng để gán xâu "Hello" cho mảng ký tự words tại thời điểm khai báo (khởi tạo giá trị ban đầu cho mảng)?
a) char words[10] = 'Hello';
b) static char words[] = "Hello";
c) static char words["hello"];
d) static char words[] = { Hello };
12) Câu lệnh nào sau đây là đúng để in ra màn hình giá trị của phần tử thứ 3 của mảng số nguyên có tên totals?
a) printf("%d
", &totals[3] );
b) printf("%d
", totals[3] );
c) printf("%c
", totals[2] );
d) printf("%d
", totals[2] );
13) Chỉ thị nào sao đây là đúng để khai báo một biến con trỏ kiểu nguyên có tên address?
a) int address;
b) address *int;
c) int *address;
d) *int address;
14) Câu lệnh nào sau đây là đúng khi gán địa chỉ của biến thực balance cho con trỏ thực temp?
a) temp = &balance;
b) balance = float temp;
c) float temp *balance;
d) &temp = balance;
15) Cho biết kết quả trên màn hình sau khi chạy đoạn chương trình sau?
int *ptinh, saiso = 2, tonghop = 0;
ptinh = &saiso;
*temp = 5;
tonghop = 50;
temp = &tonghop;
*temp += saiso;
printf("saiso = %d, tonghop= %d
", saiso, tonghop);
a) saiso = 5, tonghop = 52
b) saiso = 5, tonghop = 50
c) saiso = 2, tonghop = 50
d) saiso = 2, tonghop = 52
16) Câu lệnh nào đúng để in ra các số nguyên lẻ từ 1 đến 50
(cho sẵn biến j là biến kiểu nguyên)
i) for(j = 1; j <= 50; j++) printf("%d", j);
j) for(j = 1; j <= 50; j++) printf("%d", j/2);
k) for(j = 1; j < 50; j += 2) printf("%d", j/2 + 1);
l) for(j = 1; j < 50; j ++) printf("%d", j/2 + 1);
17) Cho một mảng số nguyên 40 phần tử có tên là diemtb. Giả thiết giá trị các phần tử của mảng đã được thiết lập trước đó. Khối lệnh nào dưới đây thực hiện việc đếm số lượng các phần tử có giá trị lớn hơn 5 trong mảng. (giả thiết các biến đã được khai báo trước đó)
i) soluong = 0; j = 0;
while(j < 40)
if( diemtb[j] > 5) soluong ++;
j) soluong = 0; j = 0;
while(j <= 39)
if( j > 5) soluong ++;
k) soluong = 0; j = 0;
while(j < 40);
if( diemtb[j] > 5) soluong += 1;
l) soluong = 0; j = 0;
while(j < 39)
if( diemtb[j] > 5) soluong += 1;
II. Phần bài tập trả lời:
1. Các biểu thức sau có giá trị bao nhiêu ?
a. (1 + 2 * 3)
b. 10 % 3 * 3 - (1 + 2)
c. ((1 + 2) * 3)
d. (5 == 5)
e. (x = 5)
2. Hãy viết lệnh if để giá trị của x được gán cho y chỉ khi nào giá trị của x nằm trong khoảng từ 1 đến 20. Nếu giá trị của x không nằm trong khoảng này thì giá trị của y được giữ nguyên.
3. Hãy viết lệnh if để xác định một người đã đủ tuổi thành niên (21 tuổi) nhưng chưa quá 65 tuổi.
4. Giả sử x = 4, y = 6, z = 2. hãy xác định xem các biểu thức trong các câu lệnh lựa chọn sau có giá trị true hay false:
a. if( x == 4)
b. if(x != y - z)
c. if(z = 1)
d. if(y)
5. CHƯƠNG TRÌNH CÓ LỖI : Hãy sủa lại chương trình này để nó có thể chạy đúng:
/* a program with problems... */
#include <stdio.h>
int x= 1:
main()
{
if( x = 1);
printf(" x equals 1" );
otherwise
printf(" x does not equal 1");
return 0;
}
6. Hãy khai báo một mảng dùng để chứa 50 giá trị kiểu long.
7. Hãy viết lệnh gán giá trị 123.456 cho phần tử thứ 50 của mảng ở bài tập số 1.
8. x sẽ có giá trị bao nhiêu sau khi vòng lặp sau kết thúc?
for (x = 0; x < 100, x++) ;
9. ctr có giá trị bao nhiêu sau khi lệnh sau kết thúc?
for (ctr = 2; ctr < 10; ctr += 3) ;
10. Bao nhiêu kí tự X sẽ được hiển thị sau khi vòng lặp sau kết thúc?
for (x = 0; x < 10; x++)
for (y = 5; y > 0; y--)
puts("X");
11. Hãy viết lệnh do...while để đếm từ 1 đến 100, mỗi lần tăng thêm 3 đơn vị.
12. Bạn hãy xác định lỗi của đoạn mã nguồn dưới đây:
record = 0;
while (record < 100)
{
printf( "
Record %d ", record );
printf( "
Getting next number..." );
}
III. Phần bài tập phân tích chương trình:
1. Tìm và sửa lỗi trong đoạn chương trình sau:
#include stdio.h
int main(void)
{
float length; width;
printf("Enter the length of the rectangle:
);
while (scanf("%f", &length) == 1)
{
printf("Length = %0.2f:
", length);
printf("Enter its width:
")
if (scanf("%f", &width) != 1)
break;
printf("Width = %0.2f
", width);
printf(Area = %0.2f
, length * width);
printf("Enter the length of the rectangle:
");
}
printf("Done.
");
return 0;
}
2. Thực hiện sủa các lỗi có trong đoạn chương trình sau:
#include <stdio.h>
#define SIZE 10;
void main()
{
int n[SIZE] = {19 , 3 , 15 , 7 ; 11, 9 , 13 , 5 , 17 , 1};
int i , j
printf( "%s%13s%17s
", "STT", "gia tri", 'danh gia' );
for( i = 0; i < SIZE - 1, i++)
{
printf( "%7d%13d ", i, n[ i ]) ;
for(j = 1; j < n[i] ; j++)
printf('%c','*');
printf("
");
}
}
Giá trị của x,y , z sẽ bằng bao nhiêu sao đoạn chương trình sau:
int i = 20;
int j = 20;
int k = 30;
int x,y,z;
x = i * j % k;
y = i + 1 * j - 1 /k;
z = k / 3 % 3 + k / i - 1;
Các biểu thức sau có giá trị bao nhiêu ?
a. (1 + 2 * 3)
b. 10 % 3 * 3 - (1 + 2)
c. ((1 + 2) * 3)
d. (5 == 5)
e. (x = 5)
Cho đoạn mã lệnh sau:
if ( 5 / 2 == 2.5 )
cout << "1";
cout << "2";
cout << "3" << endl;
Đoạn chương trình trên sẽ xuất ra màn hình nội dung gì?
(a) 1 2 3
(b) 1 3
(c) 2 3
(d) 3
Cho đoạn chương trình sau, chuối ký tự CS101 rocks được hiển thị ra màn hình bao nhiêu lần nếu người dùng nhập vào giá trị là 1 ?
int number;
while (cin >> number--) {
cout << "CS101 rocks" << endl;}
(a) 0 times
(b) 1 time
(c) 2 times
(d) 3 times
(e) không phải các trả lời trên
Xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int i = 1;
int j, sum;
while (i <= 3)
{
sum = 0;
j = 1;
while (j <= i)
{
sum = sum + j;
j = j + 1;
}
cout << sum << ' ';
i = i + 1;
}
Bạn hãy xác định lỗi của đoạn mã nguồn dưới đây:
record = 0;
while (record < 100)
{
printf( "
Record %d ", record );
printf( "
Getting next number..." );
}
#include <stdio.h>
struct house {
float sqft;
int rooms;
int stories;
char address[40];
};
int main(void)
{
struct house fruzt = {1560.0, 6, 1, "22 Spiffo Road"};
struct house *sign;
sign = &fruzt;
printf("%d %d
", fruzt.rooms, sign->stories);
printf("%s
", fruzt.address);
printf("%c %c
", sign->address[3], fruzt.address[4]);
return 0;
}
Cho đoạn chương trình sau:
int a = 3, y = 5;
int *xPtr,x[10] = {0};
xPtr = &x[1];
*(xPtr + 3) = x[5] = a + y;
Hãy xác định giá trị của các phần tử x[3], x[4], x[5] của mảng?
Cho lời khai báo sau:
char s[6] = "abcde";
(a) Câu lệnh sau sẽ in ra màn hình nội dung gì?
cout << s << endl;
(b) Đoạn lệnh sau sẽ in ra màn hình nội dung gì?
for (int i = 0; i < 5; ++i) {
cout << s[i] << endl;
}
cout << endl
Giả thiết cho phần định nghĩa một hàm như sau
int curse(int n) {
if (n <= 0) {
return 1;
}
else {
return n * curse(n-2);
}
}
Câu lệnh sau sẽ in ra màn hình nội dung gì?
cout << curse(5) << endl;
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
void f(char &a) {
cout << "char " << a << "
";
return;
}
void f(int &a) {
cout << "int " << a << "
";
return;
}
int main() {
int i = 1;
char c = 'c';
f(i);
f(c);
return 0;
}
Cho phần định nghĩa của các hàm chức năng sau và đoạn chương trình nằm trong thân chương trình chính. Xác định kết quả hiển thị ra màn hình của đoạn chương trình này?
void f1(int& z, int &q)
{
int temp;
temp=q;
q=z;
z=temp;
}
void f2( int& a, int& b)
{
if( a<b)
f1(a,b);
else
a=b;
}
int x=3, y=4;
f2(y,x);
cout << x <<" " << y << endl;
v. 3 3
vi. 4 3
vii. 3 4
viii. 4 4
Cho phần định nghĩa phân lớp như sau:
class Rect
{
public:
Rect();
Rect( int j, int k);
int get_l();
int get_w();
int area();
private:
int length;
int width;
};
// now the definitions of the member functions
Rect::Rect() {
length = -234;
width = 0;
}
Rect::Rect(int j, int k) {
length = j;
width = k;
}
int Rect::get_l() {
return length;
}
int Rect::get_w() {
return width;
}
int Rect::area()
{
return (length * width);
}
Hãy xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int main()
{
Rect a(4, 7);
cout << a.length << endl;
return 0;
}
int main()
{
Rect box(6, 9);
int x = box.area();
cout << x << " " << box.get_l() << endl;
return 0;
}
int main()
{
Rect alpha;
Rect beta(1, 2);
int one = alpha.get_l() + beta.get_l();
int two = alpha.get_w() + beta.get_w();
cout << one << " " << two << endl;
return 0;
}
Hai phân lớp có tên là Hoo và Wahoo được định nghĩa như sau.
class Hoo {
public:
Hoo( );
Hoo( &int n );
int Hoo( int n, int m );
protected:
int HooYear;
int HooTime;
private:
HooDay;
};
class Wahoo : public Hoo {
public:
Wahoo(int n, int m);
};
Wahoo::Wahoo(int time, int day ) {
HooTime = time;
HooDay = day;
}
Trong đoạn mã lệnh trên có lỗi hãy chỉ ra các lỗi này. Giả thiết các phần định nghĩa các hàm chức năng còn lại trong chương trình chứa đoạn mã lệnh trên đều không có lỗi.
Trêng ®¹i häc gtvt
Khoa ®iÖn - ®iÖn tö
Bé m«n: Kü ThuËt ViÔn Th«ng §Ò Thi 2
M«n: Ng¤N NG÷ LËP TR×NH C++
Thêi gian: 75 phót. Trëng bé m«n kÝ duyÖt
Họ và tên : Lớp:
Mã số sv :
I. PhÇn bµi tr¾c nghiÖm
(Với mỗi câu hỏi chọn một đáp án trả lời bằng cách khoanh tròn vào câu lựa chọn, VD b )
1. Một mảng được khai báo theo câu lệnh sau. Câu lệnh nào sau đây thiết lập giá trị cho tất cả các phần tử của mảng?
int array[10];
a. for (int i = 1; i <= 10; i = i + 1)
array[i] = 0;
b. for (int i = 0; i <= 10; i = i + 1)
array[i] = 0;
c. for (int i = 0; i < 10; i = i + 1)
array[i] = 0;
d. for (int i = 1; i < 10; i = i + 1)
array[i] = 0;
2. Cho biết kết quả trên màn hình sau khi chạy đoạn chương trình sau?
int *ptinh, saiso = 2, tonghop = 0;
ptinh = &saiso;
*ptinh = 4;
tonghop = 50;
ptinh = &tonghop;
*ptinh += saiso;
printf("saiso = %d, tonghop= %d
", saiso, tonghop);
a) saiso = 2, tonghop = 54 b) saiso = 2, tonghop = 52
c) saiso = 4, tonghop = 52 d) saiso = 4, tonghop = 54
3. Câu lệnh nào sau đây là đúng để thực hiện việc đọc giá trị cho biến nguyên có tên là soluong từ bàn phím?
a. scanf("%d",*soluong);
b. scanf("%s",&soluong);
c. scanf("%d",&soluong);
d. scanf(soluong);
4. Cho phần định nghĩa một hàm như sau:
void something ( int a, int& b )
{
int c;
c = a + 3;
a = a * 2;
b = c + a;
}
Xác định thông tin được hiển thị ra màn hình của đoạn mã chương trình sau? Giả thiết các biến trong đoạn mã đã được khai báo và có kiểu là nguyên!
r = 1;
s = 2;
t = 3;
something(t, s);
cout << r << " " << s << " " << t << endl;
a. 1 12 6
e. 1 2 9
f. 6 12 6
g. 1 12 3
5. Đoạn chương trình sau sẽ in ra nội dung gì?
void one(int &x) {
x = x + 1;
}
void two(int &x) {
x = x + 2;
}
int main() {
int x = 3;
one(x);
cout << x << " ";
two(x);
cout << x << endl;
}
a. 4 6
b. 4 4
c. 3 5
d. 3 3
6. Cho đoạn chương trình sau:
int a = 2, y = 4;
int *xPtr,x[10] = {0};
xPtr = &x[1];
*(xPtr + 3) += x[5] = a + y;
Xác định giá trị của x[3], x[4] và x[5]?
a. x[3] = 7; x[4] = 1; x[5] = 6;
b. x[3] = 6; x[4] = 1; x[5] = 6;
c. x[3] = 0; x[4] = 6; x[5] = 6;
d. x[3] = 1; x[4] = 7; x[5] = 6;
7. Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int a[6] = {2};
a[0] = 0;
for (int i = 1; i <= 4; ++i) {
a[i] = a[i-1] + i;
}
cout << a[3] << " " << a[5] << endl;
a. 6 2
b. 6 0
c. 3 2
d. 3 0
8. Cho đoạn chương trình sau, giá trị của biến i, j, k sẽ bằng bao nhiêu sau khi đoạn chương trình được thực hiện.
int i = 2;
int j = 5;
int k = 8;
i += (j = (k = k + 5) - 3) + 4;
a. i = 14; j = 10; k = 13;
b. i = 16; j = 4; k = 13;
c. i = 14; j = 4; k = 13;
d. i = 16; j = 10; k = 13;
9. Kết quả nào chính xác nhất khi đoạn chương trình sau được thực hiện
for (int n = 1; n > 0; n = n * 10) {
cout << "gia tri cua n la : " << n << endl;
}
(a) Vòng lặp kết thúc khi n tràn, một số giá trị của n đã in ra màn hình.
(b) Vòng lặp không bao giờ kết thúc, Kết quả in ra sẽ lơn hơn nhiều giá trị của n.
(c) Vòng lặp không bao giờ kết thúc. Vòng lặp sẽ xuất ra vô hạn các giá trị của n và lặp lại.
(d) Vòng lặp không bao giờ kết thúc. Vòng lặp không kết thúc và không in ra giá trị nào.
(e) Vòng lặp kết thúc khi n = 10.
II. PhÇn bµi viÕt
1. Đoạn chương trình sau sẽ in ra nội dung gì?
void one(int &x) {
x = x + 1;
}
void two(int &x) {
x = x + 2;
}
int main() {
int x = 3;
one(x);
cout << x << " ";
two(x);
cout << x << endl;
}
2. Chương trình sau sẽ in ra gì?
/* retire.c */
#include <stdio.h>
int main(void)
{
int age = 20;
while (age++ < 65)
{
if (( age % 20) == 0)
printf("tuoi la %d
", age);
if (age = 65)
printf("tuoi la %d
", age);
}
return 0;
}
3. Đoạn chương trình sau có lỗi, hãy tìm và sửa các lỗi này. Sau khi sửa lỗi hãy viết kết quả in ra màn hình của chương trình.
#include <stdio.h> /* dòng 1 */
int main(void) /* dòng 2 */
{ /* dòng 3 */
int i, j, list(10); /* dòng 4 */
for (i = 1, i <= 10, i++) /* dòng 6 */
{ /* dòng 7 */
list[i] = 2*i + 3; /* dòng 8 */
for (j = 1, j > = i, j++) /* dòng 9 */
printf(" %d", list[j]); /* dòng 10 */
printf('
'); /* dòng 11 */
} /* dòng 12 */
Trêng ®¹i häc gtvt
Khoa ®iÖn - ®iÖn tö
Bé m«n: Kü ThuËt ViÔn Th«ng §Ò Thi 2
M«n: Ng¤N NG÷ LËP TR×NH C++
Thêi gian: 70 phót. Trëng bé m«n kÝ duyÖt
Họ và tên : Lớp:
I. Phần bài trắc nghiệm
(Với mỗi câu hỏi chọn một đáp án trả lời bằng cách khoanh tròn vào câu lựa chọn, VD b )
1. Xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int i = 1;
int j, sum;
do
{
sum = 0;
j = 1;
while (j <= i)
{
sum += j;
j += 1;
}
cout << sum << ' ';
i++;
}while (i <= 3)
a. 1 2 3
b. 0 1 2
c. 1 3 6
d. 1 3 5
2. Cho phần định nghĩa phân lớp như sau:
class Rect
{
public:
Rect();
Rect( int j, int k);
int get_l();
int get_w();
int area();
private:
int length;
int width;
};
// now the definitions of the member functions
Rect::Rect() {
length = -234;
width = 0;
}
Rect::Rect(int j, int k) {
length = j;
width = k;
}
int Rect::get_l() {
return length;
}
int Rect::get_w() {
return width;
}
int Rect::area()
{
return (length * width);
}
Hãy xác định kết quả xuất ra màn hình của đoạn chương trình sau:
int main()
{
Rect box(6, 9);
int x = box.area();
cout << x << " " << box.get_l() << " "
<< box.get_w() << " "
<< box.get_w() + box.get_l() << endl;
return 0;
}
a. 54 6 9 15
b. 6 54 15 9
c. 9 6 15 54
d. 54 9 6 15
3. Cho phần định nghĩa của các hàm chức năng sau và đoạn chương trình nằm trong thân chương trình chính. Xác định kết quả hiển thị ra màn hình của đoạn chương trình này?
void f1(int& z, int &q)
{
int temp;
temp=q;
q=z;
z=temp;
}
void f2( int& a, int& b)
{
if( a<b)
f1(a,b);
else
a=b;
}
int x=3, y=4;
f2(y,x);
cout << x <<" " << y << endl;
ix. 3 3
x. 4 3
xi. 3 4
xii. 4 4
4. Cho đoạn chương trình sau:
int a = 2, y = 4;
int *xPtr,x[10] = {0};
xPtr = &x[1];
*(xPtr + 3) += x[5] = a + y;
Xác định giá trị của x[3], x[4] và x[5]?
a. x[3] = 7; x[4] = 0; x[5] = 6;
b. x[3] = 6; x[4] = 0; x[5] = 6;
c. x[3] = 0; x[4] = 6; x[5] = 6;
d. x[3] = 0; x[4] = 7; x[5] = 6;
5 Giả thiết cho phần định nghĩa một hàm như sau
int curse(int n) {
if (n <= 0) {
return 1;
}
else {
return n + curse(n-1);
}
}
Câu lệnh sau sẽ in ra màn hình nội dung gì?
cout << curse(5) << endl;
a. 13
b. 14
c. 15
d. 16
6. Giả thiết cho phần định nghĩa của hàm f() như sau:
void f(int i, int j, int &k) {
i = 4
j = 5
k = 6
return;
}
Đoạn chương trình sau sẽ in ra màn hình nội dung gì?
int main() {
int i = 1
int j = 2;
int k = 3;
f(k, j, i);
cout << "i = " << i << ";j = " << j
<< ";k = " << k << endl;
return 0;
}
a. i = 1;j = 2;k = 3
b. i = 1;j = 4;k = 6
c. i = 4;j = 5 ;k = 6
d. i = 4;j = 2;k = 6
II. Phần bài viết:
1. Giá trị của x,y , z sẽ bằng bao nhiêu sao đoạn chương trình sau:
int i = 20;
int j = 20;
int k = 30;
int x,y,z;
x = i * j % k;
y = i + 1 * j - 1 /k;
z = k / 3 % 3 + k / i - 1;
2. Đoạn chương trình sau có lỗi, hãy tìm và sửa các lỗi này.
#include <stdio.h>
int main(void)
{ /* dòng 3 */
int i, j, list(10); /* dòng 4 */
for (i = 1, i <= 10, i++) /* dòng 6 */
{ /* dòng 7 */
list[i] = 2*i + 3; /* dòng 8 */
for (j = 1, j > = i, j++) /* dòng 9 */
printf(" %d", list[j]); /* dòng 10 */
printf("
"); /* dòng 11 */
}
3. Hai phân lớp có tên là Hoo và Wahoo được định nghĩa như sau.
class Hoo {
public:
Hoo( );
Hoo( &int n );
int Hoo( int n, int m );
protected:
int HooYear, HooTime;
private:
HooDay;
};
class Wahoo : public Hoo {
public:
Wahoo(int n, int m);
};
Wahoo::Wahoo(int time, int day ) {
HooTime = time;
HooDay = day;
}
Trong đoạn mã lệnh trên có lỗi hãy chỉ ra các lỗi này. Giả thiết các phần định nghĩa các hàm chức năng còn lại trong chương trình chứa đoạn mã lệnh trên đều không có lỗi.
Trêng ®¹i häc gtvt
Khoa ®iÖn - ®iÖn tö
Bé m«n: Kü ThuËt ViÔn Th«ng §Ò Thi Sè:
M«n: NGÔN NGỮ LẬP TRÌNH C++
Thêi gian: 90 phót. Trëng bé m«n kÝ duyÖt
I. Phần bài trắc nghiệm.
(Với mỗi câu hỏi chọn một đáp án trả lời bằng cách khoanh tròn vào câu lựa chọn, VD b )
1) Câu lệnh nào sau đây là đúng để in ra màn hình giá trị của phần tử thứ 3 của mảng số nguyên có tên totals?
a) printf("%d
", &totals[3] );
b) printf("%d
", totals[3] ); c) printf("%c
", totals[2] );
d) printf("%d
", totals[2] );
2) Chỉ thị nào sau đây là đúng khi khai báo một hằng số có tên là FALSE và giá trị là 0?
a) int FALSE = 0;
b) #define FALSE = 0; c) #define FALSE 0;
d) #define FALSE 0
3) Câu lệnh nào sau đây là đúng khi sử dụng để khai báo một mảng 20 ký tự có tên hoten?
a) letters: hoten[20];
b) char[20] hoten; c) char array hoten[10];
d) char hoten[20];
4) Câu lệnh nào sau đây là đúng khi gán địa chỉ của biến thực balance cho con trỏ thực temp?
a) temp = &balance;
b) balance = float temp; c) float temp *balance;
d) &temp = balance;
5) Câu lệnh nào sau đây là đúng để gán xâu "Hello" cho mảng ký tự words tại thời điểm khai báo?
a) char words[10] = 'Hello';
b) static char words[] = "Hello"; c) static char words["hello"];
d) static char words[] = { Hello };
6) Chỉ thị nào sau đây là đúng khi khai báo một hằng số có tên là SOLUONG và giá trị là 12.5?
a) const float SOLUONG = 12.5;
b) #define SOLUONG = 12.5; c) float SOLUONG = 12.5;
d) #define SOLUONG 12.5;
7) Chỉ thị nào sao đây là đúng để khai báo một biến con trỏ nguyên có tên address?
a) int address;
b) address *int; c) int *address;
d) *int address;
8) Câu lệnh nào sau đây là đúng khi gán ký tự 'B' cho phần tử thứ sáu của mảng ký tự có tên là noisinh?
a) noisinh[5] = 'b';
b) noisinh[6]:= "B"; c) noisinh[6] = "B";
d) noisinh[5] = 'B';
9) Cho biết kết quả trên màn hình sau khi chạy đoạn chương trình sau?
int *ptinh, saiso = 2, tonghop = 0;
ptinh = &saiso;
*temp = 5;
tonghop = 50;
temp = &tonghop;
*temp += saiso;
printf("saiso = %d, tonghop= %d
", saiso, tonghop);
a) saiso = 5, tonghop = 52
b) saiso = 5, tonghop = 50 c) saiso = 2, tonghop = 50
d) saiso = 2, tonghop = 52
10) Câu lệnh nào sau đây là đúng để thực hiện việc gán ký tự A cho biến ký tự kytu?
a) kytu = 'A';
b) kytu = A; c) char kytu = "A";
d) kytu = "A"
11) Câu lệnh gán giá trị 10 cho trường loop của biến sample ở câu 3 là?
a) loop = 10;
b) sample.loop = 10; c) record.sample.loop = 10;
d) record.loop = 10;
12) Cho một mảng số nguyên 40 phần tử có tên là diemtb. Giả thiết giá trị các phần tử của mảng đã được thiết lập trước đó. Khối lệnh nào dưới đây thực hiện việc đếm số lượng các phần tử có giá trị lớn hơn 5 trong mảng. (giả thiết các biến đã được khai báo trước đó)
m) soluong = 0; j = 0;
while(j < 40)
if( diemtb[j] > 5) soluong ++;
n) soluong = 0; j = 0;
while(j <= 39)
if( j > 5) soluong ++; o) soluong = 0; j = 0;
while(j < 40);
if( diemtb[j] > 5) soluong += 1;
p) soluong = 0; j = 0;
while(j < 39)
if( diemtb[j] > 5) soluong += 1;
13) Chỉ thị nào sau đây là đúng khi khai báo một biến struct record có tên sample?
a) type sample : record;
b) struct sample; c) struct record sample;
d) declare sample as type record;
14) Câu lệnh nào sau đây là đúng để thực hiện việc đọc giá trị cho biến nguyên có tên là soluong từ bàn phím?
a) scanf("%d",&soluong);
b) scanf("%s",&soluong); c) scanf("%d",*soluong);
d) scanf(soluong);
15) Câu lệnh nào sau đây là đúng để thực hiện việc gán giá trị trung bình cộng hai biến toan va hoa cho biến biến trung_binh?
a) trungbinh := toan+hoa/2;
b) trung binh = (toan+hoa)/2; c) trung_binh = (toan+hoa)/2;
d) trung_binh := (toan+hoa)/2;
16) Một kiểu dữ liệu cấu trúc có tên Hoso mà các trường của nó bao gồm một số nguyên Lop, một xâu ký tự Hoten có độ dài tối đa là 15 và một số thực có tên Diemtb được khai báo như thế nào?
a)
struct Hoso {
int Lop;
float Diemtb;
char Hoten[15];
};
b)
type structure record {
Lop : integer;
Diemtb : real;
Hoten : array[0..4] of char;
}; c)
type record {
integer Lop;
float Diemtb;
char Hoten[14];
}
17) Chỉ thị nào sau đây là đúng khi dùng để khai báo một biến nguyên có tên là sum và một biến kiểu float có tên là avr?
m) int sum, float avr;
n) int sum; float avr; o) int float sum, avr;
p) int avr; float sum;
18) Câu lệnh nào sau đây là đúng để thực hiện việc in ra giá trị tích của hai biến num1 và num2?
a) printf("tich = %s",num1 * num2);
b) print("tich = %d",&num1 * num2); c) printf("tich = %d",num1* num2);
d) printf("tich = %d",&(num1 * num2));
19) Câu lệnh nào sau đây là đúng để thực hiện việc in ra giá trị của biến thực saiso có 3 số phần thập phân?
a) printf("%3.0f", saiso);
b) printf("%3f",&saiso); c) printf("%2.3f",saiso);
d) printf("%*.3f",2,saiso);
20) Câu lệnh nào đúng để in ra các số nguyên lẻ từ 1 đến 50. (cho sẵn biến j là biến kiểu nguyên)
m) for(j = 1; j <= 50; j++) printf("%d", j);
n) for(j = 1; j <= 50; j++) printf("%d", j/2); o) for(j = 1; j < 50; j += 2) printf("%d", j/2 + 1);
p) for(j = 1; j < 50; j ++) printf("%d", j/2 + 1);
II. Phần bài viết.
1. Thực hiện sủa các lỗi có trong đoạn chương trình sau:
#include <stdio.h>
#define SIZE 10;
void main()
{
int n[SIZE] = {19 , 3 , 15 , 7 ; 11, 9 , 13 , 5 , 17 , 1};
int i , j
printf( "%s%13s%17s
", "STT", "gia tri", 'danh gia' );
for( i = 0; i < SIZE - 1, i++)
{
printf( "%7d%13d ", i, n[ i ]) ;
for(j = 1; j < n[i] ; j++)
printf('%c','*');
printf("
");
}
}
2. Viết kết quả của đoạn chương trình trên sau khi đã sửa lỗi:
Họ và tên: Lớp:
'
Bạn đang đọc truyện trên: Truyen247.Pro