Việc ôn tập với Đề cương ôn tập học kì 2 môn Tin học lớp 11 năm 2020-2021 - Trường THPT Hai Bà Trưng sẽ là phương pháp học hiệu quả giúp các em hệ thống và nâng cao kiến thức trọng tâm môn học một cách nhanh và hiệu quả nhất để chuẩn bị cho kì thi sắp diễn ra. Cùng tham khảo và tải về đề cương này ngay nhé!
Trang 1ĐỀ CƯƠNG ÔN TẬP HỌC KỲ 2 – TIN HỌC 11
Năm học: 2020-2021 Nội Dung:
- Nắm được cú pháp và cách hoạt động của câu lệnh While, điều kiện dừng
Bài tập: Các bài toán tính toán có tính lặp đơn giản.
2 Chủ đề: Kiểu mảng (mảng một chiều)
- Khái niệm và cách khai báo
- Truy xuất đến các phần tử của mảng
Bài tập: duyệt mảng, tìm kiếm tuần tự trong mảng, sắp xếp dữ liệu trong mảng
3 Chủ đề: Kiểu xâu:
- Khái niệm, khai báo và các thao tác xử lí xâu.
- Một số bài tập ví dụ, bài tập thực hành về xâu
- Duyệt xâu từ đầu đến cuối xâu và ngược lại
- Sử dụng một số hàm xử lí xâu
4 Chủ đề: Kiểu dữ liệu tệp và Thao tác với tệp:
- Khai báo được tệp để đọc, Khai báo được tệp để ghi dữ liệu
- Hiểu được quá trình truy xuất tệp
- Đọc dữ liệu từ tệp để gán cho mảng và xử lí dữ liệu
- Một số bài toán tìm kiếm tuần tự, tính toán từ dữ liệu tệp
5 Một số câu hỏi tham khảo:
Trang 2for (int i=1; i<=10; i++) S=S+i;
cho giá trị của S là:
a 100
b 55
c 105
d 10
3/ Để in ra màn hình các số liên tiếp từ 10 đến 1 ta dùng câu lệnh ?
a for (int i = 10; i >= 1; i ) cout << i;
b for (int i = 1; i <= 10; i++) cout << i;
c cout << "10 1";
d cout << "10987654321";
4/ Cho câu lệnh:
for (int i = 1; i <= 10; i++) cout << "Chao ban";
Câu 'Chao ban' xuất ra mấy lần:
M=M+N;
}cout <<"M=" <<M;
Trang 39/ Chọn phát biểu sai trong các phát biểu sau đây:
a Tùy từng trường hợp cụ thể (khi mô tả một thuật toán), khi thì ta biết trước số lần lặp, khi thì ta không cần hoặc không xác định được trước số lần lặp các thao tác nào đó
b Để mô tả việc lặp đi lặp lại một số thao tác (hoặc câu lệnh) trong một thuật toán ta
a Chương trình sẽ lặp đi lặp lại khối lệnh cho đến khi biểu thức điều kiện sai
b Chương trình sẽ lặp đi lặp lại khối lệnh cho đến khi biểu thức điều kiện đúng
c Chương trình sẽ lặp đi lặp lại khối lệnh cho đến khi biểu thức điều kiện bằng 0
d Không có đáp án đúng
11/ Trong vòng lặp while, câu lệnh được thực hiện khi:
a Không cần điều kiện
b Điều kiện sai
c Điều kiện không xác định
d Điều kiện còn đúng
12/ Câu lệnh while có cú pháp nào dưới đây ?
Trang 4a while (<điều kiện>) <câu lệnh>;
b while (<câu lệnh>) <điều kiện>;
c while <điều kiện> <câu lệnh>;
d while (<điều kiện>); <câu lệnh>;
13/ Kiểu dữ liệu của biến lặp trong câu lệnh lặp for là:
a Không cần phải xác định kiểu dữ liệu
b Cùng kiểu với giá trị đầu và giá trị cuối
c Chỉ cần khác kiểu với giá trị đầu
d Cùng kiểu với các biến trong câu lệnh
14/ Câu lệnh lặp for (int i=1; i<=n; i++) dừng lại khi:
Để tổ chức việc lặp như vậy ta dùng câu lệnh while có dạng:
while (<điều kiện>) <câu lệnh>;
Chọn phát biểu sai trong các phát biểu dưới đây :
a Nếu không có lệnh nào thay đổi điều kiện trong câu lệnh của thân cấu trúc lặp nàythì có thể gặp hiện tượng lặp vô hạn khi thực hiện chương trình, nghĩa là lặp khôngdừng được
b Về mặt cú pháp, những biểu thức có thể điền vào điều kiện trong cấu trúc while cũng có thể điền vào điều kiện trong cấu trúc rẽ nhánh if else
c Không cần có lệnh thay đổi điều kiện trong câu lệnh của thân cấu trúc lặp này,
Trang 5vì giá trị của biểu thức điều kiện được tự động điều chỉnh sau mỗi lần thực hiện câu lệnh lặp.
d Điều kiện là biểu thức cho giá trị logic
19/ Trong các ngôn ngữ lập trình bậc cao thường có cấu trúc lặp để mô tả việc lặp đi lặplại một số thao tác nào đó khi một điều kiện cho trước được thỏa mãn
Để tổ chức việc lặp như vậy ta dùng câu lệnh while có dạng:
while (<điều kiện>) <câu lệnh>;
Chọn phát biểu đúng trong các phát biểu dưới đây :
a Biểu thức điều kiện được tính và kiểm tra, nếu biểu thức đó sai thì câu lệnh của thân cấu trúc lặp này được thực hiện
b Câu lệnh của thân cấu trúc lặp này bao giờ cũng được thực hiện ít nhất một lần
c Điều kiện trong cấu trúc lặp while có thể là một biểu thức kiểu nguyên hoặc kiểu kítự
d Khi xác định được trước số lần lặp vẫn có thể dùng cấu trúc lặp while
20/ Câu lệnh lặp while không thực hiện lần nào khi:
a sau điều kiện của câu lệnh while chỉ có một câu lệnh
b điều kiện của câu lệnh while luôn đúng
c lúc đầu điều kiện nhận giá trị False
d lúc đầu điều kiện nhận giá trị True
21/ Câu lệnh for (int i=-10; i<0; i++) cout <<"Xin chao!"; thực hiện
a Ghi ra màn hình 11 lần câu "Xin chao!"
b Ghi ra màn hình 8 lần câu "Xin chao!"
c Ghi ra màn hình 10 lần câu "Xin chao!"
d Ghi ra màn hình 9 lần câu "Xin chao!"
Trang 6}else
{a=a-1;
Trang 9a Bội chung lớn nhất của M và N
b Ước chung lớn nhất của M và N
c Ước chung nhỏ nhất của M và N
d Bội chung nhỏ nhất của M và N
37/ Đoạn chương trình sau, S có kết quả là:
38/ Cách khai báo mảng nào là chính xác ?
a <tên kiểu> <tên mảng>[số phần tử];
b <tên kiểu> <tên mảng>[];
c <tên kiểu> []<tên mảng>;
d <tên kiểu> <tên mảng>(số phần tử);
39/ Khai báo biến mảng A gồm tối đa 100 số nguyên nào sau đây là đúng:
a int A[ ];
b int A(100);
c int [100];
d int A[100];
Trang 1040/ Mảng một chiều là:
a Tập hữu hạn các số nguyên
b Tập hợp các phần tử có cùng kiểu dữ liệu
c Dãy các kí tự trong bộ mã ASCII
d Dãy hữu hạn các phần tử có cùng kiểu dữ liệu
41/ Cho biết ý nghĩa của khai báo sau:
float A[100];
a Khai báo biến mảng A gồm max số nguyên
b Khai báo biến mảng A gồm tối đa 100 số thực
c Khai báo biến mảng A gồm max số nguyên
d Khai báo biến mảng A gồm 100 số thực
42/ Lệnh nào sau đây là đúng khi sử dụng để khai báo một mảng 10 ký tự có tên letters ?
a Khai báo biến mảng một chiều a gồm n phần tử kiểu logic
b Khai báo biến mảng một chiều a tối đa 50 phần tử kiểu logic
c Khai báo biến mảng mảng một chiều a gồm 50 phần tử
d Khai báo biến mảng một chiều a gồm nhiều phần tử kiểu logic
44/ Cho mảng a được khai báo như sau: bool a[100];
Các phần tử của mảng a có thể nhận giá trị nào sau đây:
a true / false
b true
c false
d Số nguyên nhỏ hơn hoặc bằng 100
45/ Kích thưóc mảng: double b[8] là bao nhiêu ?
b Giá trị của phần tử, biến mảng
c Tên kiểu dữ liệu, tên biến mảng
Trang 11d Chỉ số phần tử, tên kiểu dữ liệu
48/ Cách làm việc với mảng một chiều như thế nào?
a Làm việc trực tiếp với mảng
b Thông qua tên biến mảng
c Thông qua tên biến và chỉ số của mảng
d Thông qua chỉ số của mảng
49/ Mỗi phần tử của mảng phải:
a Có kiểu dữ liệu khác nhau
b Có kiểu dữ liệu giống nhau
c Có thể có kiểu dữ liệu giống hoặc khác nhau
d Tất cả các phương án đều sai
50/ Các phần tử của mảng có thể thuộc các kiểu dữ liệu nào ?
a Kiểu số thực
b Kiểu kí tự
c Kiểu logic
d Cả ba kiểu trên
51/ Phát biểu nào dưới đây về kiểu mảng là phù hợp?
a Độ dài tối đa của mảng là 255
b Mảng không thể chứa kí tự
c Là một tập hợp các số nguyên
d Là một dãy hữu hạn các phần tử cùng kiểu
52/ Hãy chọn phương án ghép đúng nhất Để khai báo số phần tử của mảng trong C++, người lập trình cần:
a khai báo chỉ số đầu tiên của mảng là 0
b không cần khai báo gì, hệ thống sẽ tự xác định
c khai báo một hằng số là số phần tử của mảng
d khai báo chỉ số bắt đầu và kết thúc của mảng
53/ Phát biểu nào dưới đây về chỉ số của mảng là phù hợp nhất?
a Dùng để quản lí kích thước của mảng
b Dùng để đếm số phần tử của mảng
c Dùng để truy cập đến một phần tử bất kì trong mảng
d Dùng trong vòng lặp với mảng để quản lí kích thước của mảng
54/ Hãy chọn phương án hợp lý nhất Trong ngôn ngữ lập trình C++:
a Các phần tử của mảng một chiều được sắp thứ tự theo giá trị tăng dần
Trang 12b Các phần tử của mảng một chiều được sắp thứ tự theo chỉ số
c Các phần tử của mảng một chiều không sắp thứ tự
d Các phần tử của mảng một chiều được sắp thứ tự theo giá trị giảm dần
55/ Để khởi tạo số ngẫu nhiên, sử dụng hàm nào ?
59/ Cho khai báo sau: int A[16];
Câu lệnh nào dưới đây sẽ in ra tất cả các phần tử của mảng trên?
a for (int k=0; k<=16; k++) cout <<a[k];
b for (int k=1; k<=16; k++) cout <<a[k];
c for (int k=16; k>=0; k ) cout <<a[k];
d for (int k=0; k<16; k++) cout <<a[k];
60/ Hãy chọn phương án ghép đúng nhất Mảng là kiểu dữ liệu biểu diễn một dãy các phần tử thuận tiện cho:
Trang 1363/ Lệnh nào sau đây là đúng ?
a int billy[] = new int [5];
b int billy[5];
c int[] billy = new int[5];
d int[] billy;
64/ Cho khai báo: int A[Nmax];
Khai báo trên ĐÚNG trong trường hợp nào?
a Nmax là một biến nguyên đã được khai báo trước đó
b Nmax là một hằng số nguyên đã được khai báo trước đó
c Nmax phải là kiểu số nguyên hoặc kiểu ký tự hoặc kiểu logic
d Mọi trường hợp
65/ Cho khai báo:
int A[10], i;
Ðể nhập dữ liệu cho A, chọn câu nào:
a for (i = 0; i < 10; i++) {cout << "A[" << i << "]= "; cin >> A[i];}
b cout << "Nhap A: "; cin >> A;
c for (i = 0; i < 10; i++) cout << "A[" << i << "]= "; cin >> A[i];
d for (i = 0; i < 10; i++) cout << A[i];
66/ Đoạn chương trình sau thực hiện thao tác gì:
for (int i=0; i<10; i++)
{
cout <<"Nhap A[" <<i <<"]=";
cin >> A[i];
}
a Tạo ngẫu nhiên giá trị cho 10 phần tử của mảng A
b Nhập giá trị từ bàn phím cho 10 phần tử của mảng A
c Ghi ra màn hình giá trị của 10 phần tử trong mảng A, mỗi giá trị trên một dòng
d Nhập giá trị từ bàn phím cho 9 phần tử đầu tiên của mảng A
67/ Hàm rand()%51 cho giá trị là:
Trang 14a for (int i = 0 ; i < n ; i++) cout << A[i];
b for (int i = 0 ; i < n ; i++) cout << A[i] << '\n';
c for (int i = 0 ; i < n ; i++) cout << A[i] << endl;
d for (int i = 0 ; i < n ; i++) cout << A[i] << " ";
69/ Cho câu lệnh: for (int i = 0; i < n; i++) a[i] = rand()%100 - rand()%100;Hãy cho biết phạm vi giá trị của các phần tử trong mảng A ở câu lệnh ?
for (int i = 0; i < 5; i++) A[i] = i;
for (int i = 0; i < 5; i++) A[i] = A[i] + 1;
thì mảng A có giá trị là:
a A[0]=1, A[1]=2, A[2]=3, A[3]=4, A[4]=5
b A[0]=0, A[1]=1, A[2]=2, A[3]=3, A[4]=4
c A[0]=1, A[1]=1, A[2]=1, A[3]=1, A[4]=1
d A[0]=4, A[1]=3, A[2]=2, A[3]=1, A[4]=0
71/ Cho mảng A gồm N số nguyên Đoạn chương trình sau thực hiện công việc gì?for (int i = 0 ; i < n ; i++)
if (A[i] > 0) k = i;
cout <<k;
a In giá trị của phần tử nguyên dương cuối cùng trong A ra màn hình
b In giá trị của phần tử nguyên dương đầu tiên trong A ra màn hình
c In chỉ số của phần tử nguyên dương cuối cùng trong A ra màn hình
d In chỉ số của phần tử nguyên dương đầu tiên trong A ra màn hình
72/ Đoạn chương trình sau thực hiện công việc gì?
a Sắp xếp dãy a theo chiều không giảm
b Tìm phần tử có giá trị lớn nhất của dãy a
c Hoán đổi các giá trị của dãy a với nhau
d Sắp xếp dãy a theo chiều không tăng
73/ Đoạn chương trình sau cho kết quả là:
Trang 15a Dãy B: 8 5 9 7 2 4 6
b Dãy B: 8 5 9 4 6 2 7
c Dãy B: 9 5 8 4 6 2 7
d Dãy B: 2 4 5 6 7 8 9
Trang 1674/ Đoạn chương trình sau cho kết quả là:
Trang 17for (int i = 0; i < n; i++) A[i] = rand()%50 - rand()%50;
a Tạo giá trị ngẫu nhiên cho mảng A gồm 49 phần tử
b Tạo giá trị ngẫu nhiên cho mảng A gồm n phần tử
c Tạo giá trị ngẫu nhiên cho mảng A gồm 50 phần tử
d Tạo giá trị ngẫu nhiên cho mảng A gồm n phần tử (các giá trị nằm trong [0 50))
78/ Đoạn chương trình sau thực hiện việc nào trong các việc sau (A là mảng số có N phần tử)?
for (i=0; i<n; i++)
if ((A[i]%k == 0) && (A[i]%2 != 0)
Trang 1881/ Đoạn chương trình sau cho kết quả của M là:
a Giá trị lớn nhất của mảng a gồm n phần tử
b Giá trị có chỉ số lớn nhất của mảng gồm n phần tử
c Giá trị nhỏ nhất của mảng a gồm n phần tử
d Chỉ số nhỏ nhất của mảng gồm n phần tử
82/ Đoạn chương trình sau cho kết quả của M là:
a Chỉ số của giá trị nhỏ nhất trong mảng a gồm n phần tử
b Chỉ số nhỏ nhất của mảng gồm n phần tử
c Giá trị có chỉ số lớn nhất của mảng gồm n phần tử
d Chỉ số của giá trị lớn nhất trong mảng a gồm n phần tử
83/ Đoạn chương trình sau cho kết quả của M là:
a Chỉ số của giá trị nhỏ nhất trong mảng a gồm n phần tử
cout << dem;
Trang 19a Cho biết số lượng các số nguyên dương
b Tính tổng các số nguyên dương
c Cho biết số lượng các số nguyên không âm
d Kiểm tra phần tử thứ i là số âm hay dương 85/ Đoạn chương trình sau cho kết quả là:
Trang 20a s=14; t=7
b s=7; t=14
c s=15; t=0
d s=0; t=14
88/ Cho xâu S= "aaaBBBcccDDD";
Kết quả của lệnh cout <<S.erase(3, S.size()); là:
a Xóa 1 ký tự ‘a’ ở đầu xâu S
b Xóa các ký tự ‘a’ ở đầu xâu S
c Xóa các ký tự ‘a’ và ‘A’ ở đầu xâu S
d Xóa các ký tự trắng ở đầu xâu S
90/ Cho trước xâu S Câu lệnh sau thực hiện công việc gì ? while (S[0] == ' ') S.erase(0,1);
a Xóa 1 ký tự trắng ở đầu xâu S
b Xóa các ký tự trắng ở đầu xâu S
c Xóa từ đầu tiên ở đầu xâu S
d Xóa các ký tự trắng ở cuối xâu S
91/ Cho xâu S= "May vi tinh";
Kết quả của lệnh cout <<S.substr(0,S.find("v")-1); là:
a Ma
b tinh
c M
d May
92/ Cho biết kết quả của đoạn chương trình sau:
string s1="Dong Khanh";
Trang 21string s2=" Hai Ba Trung ";
s1.insert(0,s2);
for (int i = s1.length() - 1; i >= 0; i )
cout << s1[i];
a Hai Ba Trung Dong Khanh
b gnurT aB iaH hnahK gnoD
c Dong Khanh Hai Ba Trung
d hnahK gnoD gnurT aB iaH
93/ Cho biết kết quả của đoạn chương trình sau:string s1="Dong Khanh";
string s2=" Hai Ba Trung ";
s1.insert(s1.length(),s2);
for (int i = s1.length() - 1; i >= 0; i )
cout << s1[i];
a Hai Ba Trung Dong Khanh
b hnahK gnoD gnurT aB iaH
c Dong Khanh Hai Ba Trung
d gnurT aB iaH hnahK gnoD
94/ Cho biết kết quả của đoạn chương trình sau:string s1="Dong Khanh";
string s2=" Hai Ba Trung ";
s2.insert(0,s1);
for (int i = s2.length() - 1; i >= 0; i )
cout << s2[i];
a hnahK gnoD gnurT aB iaH
b Hai Ba Trung Dong Khanh
c Dong Khanh Hai Ba Trung
d gnurT aB iaH hnahK gnoD
95/ Cho biết kết quả của đoạn chương trình sau:string s1="Dong Khanh";
string s2=" Hai Ba Trung ";
s2.insert(s2.length(),s1);
for (int i = s2.length() - 1; i >= 0; i )
cout << s2[i];
a Dong Khanh Hai Ba Trung
b Hai Ba Trung Dong Khanh
c hnahK gnoD gnurT aB iaH
d gnurT aB iaH hnahK gnoD
96/ Cho trước xâu S, câu lệnh sau
for (int i = 0; i < S.size(); i++) cout << S[i];thực hiện công việc:
a Đưa ra màn hình xâu đảo ngược của S
b Đưa ra màn hình xâu S
Trang 22c Đưa ra màn hình các chữ cái trong xâu từ chữ cái đầu tiên đến chữ cái cuối cùng
d Đưa ra màn hình mỗi kí tự trên mỗi dòng của xâu S
97/ Cho trước xâu S, câu lệnh sau
for (int i = S.size() - 1; i >= 0; i ) cout << S[i];
thực hiện công việc:
a Đưa ra màn hình mỗi kí tự trên mỗi dòng của xâu S
b Đưa ra màn hình xâu S
c Đưa ra màn hình các chữ cái trong xâu từ chữ cái đầu tiên đến chữ cái cuối cùng
d Đưa ra màn hình xâu đảo ngược của S
98/ Cho S là biến xâu, câu lệnh sau
for (int i = 0; i < S.size()-1; i++) S[i+1] = S[i];
thực hiện công việc:
a Dịch chuyển các kí tự của xâu sang phải một vị trí
b Gán giá trị của phần tử đầu tiên cho các phần tử còn lại của xâu S
c Dịch chuyển các kí tự của xâu sang phải trái một vị trí
d Gán giá trị của kí tự cuối cùng cho các kí tự còn lại của xâu
99/ Đoạn chương trình sau in ra kết quả nào ?
d Chương trình bị lỗi do hàm length không thể đặt trong lệnh writeln
100/ Giá trị của L sau khi thực hiện đoạn chương trình sau: