Các câu h i ôn t p cho kỳ thi gi a kỳ

n

1. Hàm đ quy int Factorial(int N) tính N! ệ

2. Hàm đ quy double Pow(double x, int n) tính x ệ

3. Hàm đ quy USCLN (int a, int b) tìm c s chung l n nh t c a a và b ệ ướ ố ấ ủ ớ

4. Vi t hàm double Value(double a[], int n, double x0) đ tính giá tr c a hàm ế ị ủ ể f(x) = anxn + an-1xn-1+…+a1x + a0 t i x0ạ

ể double Root(double a[], int n, double x1, double x2) đ tìm giao nxn + an-1xn-1+…+a1x + a0 gi a [x1, x2] v i tr c hoành b ng ằ ớ ụ t hàm 5. Vi ế đi m c a f(x) = a ủ ể ph ươ ữ ng pháp chia đôi v i đ chính xác 1e-10 ớ ộ

6. Vi void InsertionSort(int A[], int N, int Indies[]) ế c a m ng ố ầ ử ủ ả t hàm ả ỉ ố tăng d n // A – m ng d li u, N – s ph n t ữ ệ // Indies – m ng các ch s ả sao cho A[Indies[i]] | i = 0…N – 1 có th t ứ ự ầ

7. Vi void SelectionSort(int A[], int N, int Indies[]) ế c a m ng ố ầ ử ủ ả t hàm ả ỉ ố tăng d n // A – m ng d li u, N – s ph n t ữ ệ // Indies – m ng các ch s ả sao cho A[Indies[i]] | i = 0…N – 1 có th t ứ ự ầ

8. Vi void BubbleSort(int A[], int N, int Indies[]) ế c a m ng ố ầ ử ủ ả t hàm ả ỉ ố tăng d n // A – m ng d li u, N – s ph n t ữ ệ // Indies – m ng các ch s ả sao cho A[Indies[i]] | i = 0…N – 1 có th t ứ ự ầ

ị ả ề

c a hàm ủ

9. Vi int Part(int A[], int lb, int ub, int Indies[]) ế c a m ng t hàm ả ầ ử ủ ả ố ỉ ố ỉ ố ố ạ ạ // A – m ng d li u, N – s ph n t ữ ệ // Indies – m ng các ch s ả // lb – ch s đ u đo n, ub – ch s cu i đo n ỉ ố ầ sao cho (A[Indies[l]] | l = lb … j – 1 < A[Indies[j]] < A[Indies[r]] | r = j + 1 … ub) | j – giá tr tr v

10. Vi ế c a m ng t hàm ả void BuildHeap(int A[], int N, int i, int Indies[]) ầ ử ủ ả ố ỉ ố

// A – m ng d li u, N – s ph n t ữ ệ // Indies – m ng các ch s ả // i – ch s c a nút g c ố ỉ ố ủ sao cho A[Indies[j]] | j = i…N – 1 là m t ộ Heap

i = 0…N – 1 có th t

11. Vi ế c a m ng t hàm ả ả ố ứ ự i X int BinarySearch(int A[], int N, int Indies[], int X) // A – m ng d li u, N – s ph n t ầ ử ủ ữ ệ tăng d n // Indies – m ng các ch s , A[Indies[i]] | ầ // giá tr tr v : v trí c a X trong m ng A ho c –1 n u không t n t ồ ạ ả ị ả ề ị ỉ ố ủ ế ả ặ

12. Cho đo n khai báo class sau: ạ class Int32 { int value; public:

giá tr v ạ ừ ị Int32(int v) : value(v) {} // hàm t o t void Parse(const char *s); }; t mã cho hàm void Int32::Parse(const char *s) đ gán giá tr cho Int32::value ể ị Vi t ừ ế xâu đ u vào s ầ

13. Cho đo n khai báo class sau: ạ class Array { int * data, len; // data – m ng s nguyên, len – đ dài c a m ng ố ủ ả ả ộ public: ạ ừ ả m ng A v i N ph n t ớ ầ ử

ấ ấ ị ị ị Array(int A[], int N); // hàm t o t // hàm h yủ ~Array(); c a m ng // hàm tính t ng các ph n t int Sum(); ả ầ ử ủ ổ // hàm tìm giá tr trung bình c a m ng double Avg(); ả ủ // hàm tìm giá tr lón nh t trong m ng int Max(); ả // hàm tìm giá tr nh nh t trong m ng int Min(); ả ỏ void GetRange(int &min, int &max);// hàm tìm giá tr l n nh t và ấ // nh nh t c a m ng ấ ủ ỏ ị ớ ả }; Vi t mã cho các hàm c a class Array. ế ủ

14. Xây d ng class Stack đ có th th c hi n đo n thu t toán sau: ự ể ạ ki u int ệ ể ứ ậ ầ ử ể

ể ự Stack s; // khai báo Stack s có th ch a 20 ph n t int x = 25; do { s.Push(x & 1); x >>=1; } while (x); while (!s.IsEmpty()) cout << s.Pop();

ả ể ệ

Trên màn hình ph i th hi n: Tao stack 11001 Huy stack

15. Cho đo n khai báo class sau: ạ class TamGiac { double _a, _b, _c; // ba c nh c a tam giác ủ ạ private: int Kieu(); ng, vuông, cân, ườ // hàm tìm ki u c a tam giác (th ể ủ // vuông cân ho c đ u) ặ ề public:

TamGiac(double a, double b, double c); void Print(); }; Vi t mã cho các hàm c a class TamGiac sao cho k t qu c a đo n mã: ế ả ủ ủ ế ạ

TamGiac tg(2, sqrt(2), sqrt(2)) tg.Print(); cho hi n trên mà hình k t qu là “vuong can” ệ ế ả

Ví d đ thi ụ ề

Cho tr c các file trong project ThiGiuaKy: ướ

// main.cpp

#include “ThuVien.h” #include using namespace std;

int showMenu() {

cout << “0. Thoat\n”; cout << “1. Stack\n”; cout << “2. Array\n”; cout << “3. InsertionSort”; cout << “> ”; char c = cin.get(); return (c – 48); }

void main() {

int menu; int A[] = { 66, 33, 44, 77, 99, 11, 55, 22, 88 };

while (menu = showMenu()) {

if (menu == 1) { Stack s; int x = 25; do { s.Push(x & 1); x >>=1; } while (x); while (!s.IsEmpty()) cout << s.Pop();

} if (menu == 2) {

int min, max; Array arr(A, 9); cout << “min = “ << arr.Min() << endl; cout << “max = “ << arr.Max();

} if (menu == 3) {

int N = 9, i; int *indies = new int[N];

for (i = 0; i < N; i++) indies[i] = i;

InsertionSort(A, N, indies); for (i = 0; i < N; i++) cout << A[indies[i]] << ‘ ‘;

} cout << endl; } }

// ThiGiuaKy.h

#pragma once

double Value(int a[], int n, double x0); double Root(int a[], int n, double x1, double x2); void swap(int &a, int &b); void SelectionSort(int A[], int N, int Indies[]); void InsertionSort(int A[], int N, int Indies[]); void BubbleSort(int A[], int N, int Indies[]); int Part(int A[], int lb, int ub, int Indies[]); void BuildHeap(int A[], int N, int i, int Indies[]);

class Array {…}; class Stack {…}; class Int32 {…}; class TamGiac {…};

// ThiGiuaKy.cpp

#include “ThiGiuaKy.h”

void swap(int &a, int &b) { int t = a; a = b; b = t; }

// mã c a các hàm c n thi t khác ủ ầ ế

ầ ố ớ ố ệ t mã cho các hàm đ hàm main có th ế ể ể Yêu c u đ i v i sinh viên có s hi u 2008003 Thêm file 2001003.cpp vào project và vi cho k t qu đúng. ế ả