begin
a[j+1]=a[j];
j:=j-1;
end;
a[j+1] = X;
0,25 điểm
end;
3. return;
2
Hãy đưa ra một dãy khoá gồm 10 phần tử bất kỳ, sau đó đưa
0,75 điểm
ra kết quả thực hiện 3 bước đầu tiên để sắp xếp dãy khoá đó
theo thứ tự tăng dần bằng giải thuật sắp xếp kiểu thêm dần.
Cho Một dãy khoá gồm 10 phần tử
0,25 điểm
Chẳng hạn: 40 23 17 55 22 45 15 60 30 20.
Bước 1: 23 40 17 55 22 45 15 60 30 20
Trang:1/ 6
Bước 2: 17 23 40 55 22 45 15 60 30 20 0,25 điểm
Bước 3: 17 23 40 55 22 45 15 60 30 20 0,25
điểm
Câu 2 Xây dựng lớp đa thức bao gồm thành phần các hệ số của đa 3,5 điểm
thức và bậc của đa thức để cài đặt các toán tử toán học cho
lớp đa thức này. Viết chương trình thực hiện
a Xây dựng toán tử nhập dữ liệu của một đa thức. 0,5 điểm
double a[20];// Mang chua cac he so da thuc a0, a1,...
int n ;// Bac da thuc
cout << "\n He so bac " << i <<"=";
is >> d.a[i] ;
cout << "Bac da thuc:";
cin >> d.n;
cout <<"Nhap cac he so da thuc:" ;
for (int i=0 ;i<=d.n ;++i)
{
}
return is;
b
#include
#include
#include
class Dathuc
{
public:
friend ostream& operator<< (ostream& os, Dathuc d);
friend istream& operator>> (istream& is, Dathuc &d);
friend Dathuc operator+(Dathuc d1, Dathuc d2);
friend Dathuc operator*(Dathuc d1, Dathuc d2);
friend double operator^(Dathuc d, double x);
};
istream& operator>> (istream& is, Dathuc &d)
{
}
Xây dựng toán tử toán tử cộng, toán tử nhân hai đa thức.
1 điểm
Dathuc operator+(Dathuc d1, Dathuc d2)
{
Dathuc d;
int k,i;
k = d1.n > d2.n ? d1.n : d2.n ;
for (i=0;i<=k ;++i)
if (i<=d1.n && i<=d2.n) d.a[i] = d1.a[i] + d2.a[i];
0,5 điểm
Trang:2/ 6
if (i<=d1.n) d.a[i] = d1.a[i];
else d.a[i] = d2.a[i];
else
i = k;
while (i>0 && d.a[i]==0.0) --i;
d.n=i;
return d ;
0,5 điểm
for (j=0 ;j<= d2.n ;++j) d.a[i+j] += d1 .a[i]*d2.a[j];
Dathuc d;
int k, i, j;
k = d.n = d1.n + d2.n ;
for (i=0;i<=k;++i) d.a[i] = 0;
for (i=0 ;i<= d1 .n ;++i)
return d;
0,5 điểm }
Dathuc operator*(Dathuc d1 , Dathuc d2)
{
}
Xây dựng toán tử xuất dữ liệu của một đa thức. c
os<<"Cac he so (tu ao):";
for (int i=d.n ;i>= 1 ;--i)
{
if(d.a[i-1]<0)
os << d.a[i] <<" * x^" <
0,5 điểm
ostream& operator<< (ostream& os, Dathuc d)
{
}
Xây dựng toán tử tính giá trị của đa thức tại x.
d
s += d.a[i]*t;
t *= x;
double s=0.0 , t=1.0;
for (int i=0 ;i<= d.n ;++i)
{
}
return s;
double operator^(Dathuc d, double x)
{
}
Trang:3/ 6
e Viết hàm main thực hiện: 1 điểm
- Nhập vào hai đa thức
- Hiển thị ra màn hình tổng, tích của hai đa thức đó.
- Tính giá trị của đa thức tại giá trị x được nhập vào.
0,25 điểm
0,25 điểm
0,25 điểm
0,25 điểm
Dathuc p,q,f,g;
double x,h;
clrscr();
cout <<"\n Nhap da thuc P=";cin >> p;
cout <<"\n Nhap da thuc Q=";cin >> q;
f = p+q;
cout << "\n Tong hai da thuc= "<< f ;
g = p*q;
cout << "\n Tich hai da thuc= "<< g ;
cout << "\n Tinh gia tri cua da thuc P tai x=";cin >> x;
cout << "\n P("<
void main()
{
getch();
}
Câu 3 Cho lược đồ cơ sở dữ liệu sau: 2 điểm
Giaovien(MAGV, HOTEN, TDGV, MAKHOA)
Khoa(MAKHOA, TENKHOA, DTKHOA)
Lop(MALOP, TENLOP, SISO, MAKHOA)
Monhoc(MAMH, TENMH)
Phonghoc(SOPHONG, CHUCNANG)
Lichbaogiang(MALICH, NGAYDAY, MAGV)
Dongbaogiang(MALICH, TUTIET, DENTIET,
BAIDAY, GHICHU, LYTHUYET, MAMH,
MALOP, SOPHONG)
a
0,75 điểm
Hãy thực hiện các câu hỏi sau bằng SQL
Xem lịch báo giảng tuần từ ngày 16/09/2002 đến ngày
23/09/2002 của giáo viên có MAGV (mã giáo viên) là
TH3A040. Thông tin kết xuất: MAGV, HOTEN, TENLOP,
TENMH, SOPHONG, NGAYDAY, TUTIET, DENTIET,
BAIDAY, GHICHU:
SELECT Magv, Hoten, Tenlop, Tenmh, Sophong, Ngayday,
Tutiet, Dentiet, Baiday, Ghichu
FROM (((Lichbaogiang INNER JOIN Dongbaogiang
Trang:4/ 6
b
0,75 điểm
ON Dongbaogiang.Malich = Lichbaogiang.Malich)
INNER JOIN Giaovien ON Lichbaogiang.Magv =
Giaovien.Magv)
INNER JOIN Lop ON Dongbaogiang.Malop =
Lop.Malop)
INNER JOIN Monhoc ON Dongbaogiang.Mamh =
Monhoc.Mamh
WHERE (Ngayday BETWEEN #16/09/2002# AND
#23/09/2002#) AND Giaovien.Magv = “TH3A040”
Xem lịch báo giảng ngày 23/09/2002 của các giáo viên có
mã khoa là CNTT. Thông tin kết xuất: MAGV, HOTEN,
TENLOP, TENMH, SOPHONG, NGAYDAY, TUTIET,
DENTIET, BAIDAY, GHICHU)
SELECT Magv, Hoten, Tenlop, Tenmh, Sophong, Ngayday,
Tutiet, Dentiet, Baiday, Ghichu
FROM (((Lichbaogiang INNER JOIN Dongbaogiang
ON Dongbaogiang.Malich = Lichbaogiang.Malich)
INNER JOIN Giaovien ON Lichbaogiang.Magv =
Giaovien.Magv)
INNER JOIN Lop ON Dongbaogiang.Malop =
Lop.Malop)
INNER JOIN Monhoc ON Dongbaogiang.Mamh =
Monhoc.Mamh
WHERE (Lop.Makhoa = “CNTT”) AND
(Lichbaogiang.Ngayday = #23/09/2002#)
c
0,5 điểm
Cho biết số lượng giáo viên (SOLUONGGV) của mỗi khoa,
kết quả cần sắp xếp tăng dần theo cột tên khoa. Thông tin kết
xuất: TENKHOA, SOLUONGGV ( SOLUONGGV là
thuộc tính tự đặt)
SELECT Tenkhoa, Count(Giaovien.Magv) AS Soluonggv
FROM Giaovien INNER JOIN Khoa ON Khoa.Makhoa =
Giaovien.Makhoa GROUP BY Giaovien.Makhoa,Tenkhoa
II. Phần tự chọn, do trường biên soạn
3 điểm
1
2
Tổng cộng (I + II)
Trang:5/ 6
……….., Ngày…………Tháng………..Năm…………..
Trang:6/ 6