Tải bản đầy đủ (.doc) (49 trang)

Bài giải thực hành kỹ thuật lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (321.14 KB, 49 trang )

ĐẠI HỌC BÁCH KHOA TP. HCM
KHOA CÔNG NGHỆ THÔNG TIN

BÀI GIẢI THỰC HÀNH KỸ THUẬT LẬP TRÌNH
BÀI THỰC TẬP SỐ 1.........................................................................................................................2
Cơ bản về C++.....................................................................................................................................2
BÀI THỰC TẬP SỐ 2.........................................................................................................................4
Cấu trúc lựa chọn..................................................................................................................................4
BÀI THỰC TẬP SỐ 3.........................................................................................................................8
Cấu trúc lặp..........................................................................................................................................8
BÀI THỰC TẬP SỐ 4.......................................................................................................................11
Mảng và Cấu trúc...............................................................................................................................11
BÀI THỰC TẬP SỐ 5.......................................................................................................................16
BÀI THỰC TẬP SỐ 6.......................................................................................................................21
Giới thiệu về Lớp Đối tượng..............................................................................................................21
BÀI THỰC TẬP SỐ 7.......................................................................................................................27
Xử lý Đối tượng.................................................................................................................................27
BÀI THỰC TẬP SỐ 8.......................................................................................................................32
Xử lý Đối tượng (tiếp theo)................................................................................................................32
BÀI THỰC TẬP SỐ 9.......................................................................................................................38
Sự Thừa kế và Bao gộp trong C++.....................................................................................................38
BÀI THỰC TẬP SỐ 10.....................................................................................................................45
Đa hình và Khn hình......................................................................................................................45

Trang 1


BÀI THỰC TẬP SỐ 1
Cơ bản về C++
Câu 1.c. Khai báo hằng PI trong file “mydef.h”, sau đó dùng chỉ thị include để thêm vào đoạn
chương trình


File “mydef.h”
#define PI 3.1415926535897932384

File “main.cpp”
#include <iostream.h>
#include "mydef.h"
void main()
{
float radius = 5;
float area;
area = radius * radius * PI; // Circle area calculation
cout << "The area is " << area << " with a radius of 5.\n";

}

radius = 20; // Compute area with new radius.
area = radius * radius * PI;
cout << "The area is " << area << " with a radius of 20.\n";

Câu 6: Viết chương trình nhập vào 2 thời điểm và cho biết 2 thời điểm cách nhau bao nhiêu giờ,
phút giây.
#include <iostream.h>
void main()
{
int start_hour, start_minute, start_second;
int end_hour, end_minute, end_second;
cout << "Nhap thoi diem thu nhat: " << endl;
cout << "Gio: ";
cin >> start_hour;
cout << "Phut: ";

cin >> start_minute;
cout << "Giay: ";
cin >> start_second;
cout << "Nhap thoi diem thu hai: " << endl;
cout << "Gio: ";
cin >> end_hour;
cout << "Phut: ";
cin >> end_minute;
cout << "Giay: ";
cin >> end_second;

Trang 2


int start_elapsed, end_elapsed;
start_elapsed = start_hour * 3600 + start_minute * 60 + start_second;
end_elapsed = end_hour * 3600 + end_minute * 60 + end_second;
int duration = end_elapsed - start_elapsed;
int hour = duration / 3600;
int minute = (duration % 3600) / 60;
int second = duration - hour * 3600 - minute * 60;
cout << "Hai thoi diem cach nhau: " << hour << " gio " << minute
<< " phut " << second << " giay";
}

Trang 3


BÀI THỰC TẬP SỐ 2
Cấu trúc lựa chọn

Câu 4: Dùng cấu trúc switch để viết lại đoạn chương trình sau:
if (num == 1)
{cout << “Alpha”; }
else if (num == 2)
{ cout << “Beta”; }
else if (num == 3)
{ cout << “Gamma”; }
else
{ cout << “Other”; }
#include <iostream.h>
void main()
{
int num;
cout << "Please enter a number : ";
cin >> num;
switch(num)
{
case 1:
cout << "Alpha \n";
break;
case 2:
cout << "Beta \n";
break;
case 3:
cout << "Gamma \n";
break;
default:
cout << "Other \n";
}
}


Câu 5: Viết chương trình nhập vào số nguyên n gồm ba chữ số. Xuất ra màn hình theo thứ tự tăng
dần của các chữ số.
Ví dụ: n=291. Xuất ra 129.
#include <iostream.h>
void main()
{
int so;
cout << "Nhap mot so nguyen co 3 chu so: ";
cin >> so;
int tram, chuc, don_vi;
tram = so / 100;

Trang 4


chuc = (so % 100) / 10;
don_vi = so - tram * 100 - chuc * 10;
int lon_nhat, giua, be_nhat;
lon_nhat = tram > chuc ? tram : chuc;
lon_nhat = lon_nhat > don_vi ? lon_nhat : don_vi;
be_nhat = tram < chuc ? tram : chuc;
be_nhat = be_nhat < don_vi ? be_nhat : don_vi;
giua = (tram + chuc + don_vi) - lon_nhat - be_nhat;

}

cout << "Cac chu so sau khi sap xep thu tu: "
<< be_nhat << giua << lon_nhat;


Câu 6: Viết chương trình nhập vào năm dương lịch. Cho biết năm này có phải là năm nhuận hay
khơng? In kết quả ra màn hình.
#include <iostream.h>
void main()
{
int nam;
cout << "Nhap vao nam : ";
cin >> nam;
int mod4, mod100, mod400;
mod4 = nam % 4;
mod100 = nam % 100;
mod400 = nam % 400;
if (((mod4 == 0) && (mod100 != 0)) || (mod400 == 0))
cout << "Day la nam nhuan!\n";
else
cout << "Day khong phai la nam nhuan!\n";
}

Câu 7: Viết chương trình tính tiền cước TAXI. Biết rằng:
a. KM đầu tiên là 5000đ.
b. 200m tiếp theo là 1000đ.
c. Nếu lớn hơn 30km thì mỗi km thêm sẽ là 3000
Hãy nhập số km sau đó in ra số tiền phải trả.
#include <iostream.h>
void main()
{
float km, tien;
cout << "Nhap vao so KM : ";
cin >> km;


Trang 5


if (km == 1)
tien = 5000;
else
if ((km >1) && (km <= 30))
tien = 5000 + (km - 1) * 5 * 1000;
else
if (km > 30)
tien = 5000 + 29 * 5 * 1000 + (km - 30) * 3000;
cout << "Tong so tien : " << tien << "\n";
}

Câu 8: Nhập vào ngày, tháng, năm. Kiểm tra xem ngày, tháng, năm đó có hợp lệ hay khơng, nếu
hợp lệ cho biết ngày trước đó là bao nhiêu.
Ví dụ: Nhập 01/01/2003
Ngày trước đó 31/12/2002
#include <iostream.h>
void main()
{
int ngay, thang, nam;
cout << "Nhap vao ngay : ";
cin >> ngay;
cout << "Nhap vao thang : ";
cin >> thang;
cout << "Nhap vao nam : ";
cin >> nam;
if (thang < 1 || thang > 12)
{

cout << "Thang da nhap khong hop le" << endl;
return;
}
int mod4, mod100, mod400;
mod4 = nam % 4;
mod100 = nam % 100;
mod400 = nam % 400;
bool nam_nhuan = ((mod4 == 0) && (mod100 != 0)) || (mod400 == 0);
int so_ngay = 0;
switch (thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
so_ngay = 31;
break;
case 4:

Trang 6


}

case 6:
case 9:
case 11:

so_ngay = 30;
break;
case 2:
so_ngay = nam_nhuan ? 29 : 28;

if (ngay < 1 || ngay > so_ngay)
{
cout << "Ngay da nhap khong hop le" << endl;
return;
}
ngay = ngay - 1;
if (ngay == 0)
{
thang = thang - 1;
if (thang == 0)
{
thang = 12;
nam = nam - 1;
}
switch (thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
so_ngay = 31;
break;

case 4:
case 6:
case 9:
case 11:
so_ngay = 30;
break;
case 2:
so_ngay = nam_nhuan ? 29 : 28;
}
ngay = so_ngay;
}

}

cout << "Ngay hom truoc ngay da nhap: "
<< ngay << "/" << thang << "/" << nam;

Trang 7


BÀI THỰC TẬP SỐ 3
Cấu trúc lặp
Câu 5: Viết một chương trình C++ tính tổng và giá trị trung bình của n số thực chính xác đơn được
nhập vào từ người sử dụng. Trị của n cũng là một giá trị do người sử dụng nhập vào.
#include <iostream.h>
void main()
{
int i, n;
float num, s, avg;
cout << "Ban muon nhap bao nhieu so? ";

cin >> n;
s = 0;
for (i = 1; i <= n; i++)
{
cout << "So thu " << i << ": ";
cin >> num;
s += num;
}
cout << "Tong cac so ban vua nhap vao la : " << s << endl;
avg = s / n;
cout << "Gia tri trung binh cua chung la : " << avg << endl;
}

Câu 6: Viết một chương trình C++ sinh ra một bảng đổi nhiệt độ từ Celcius sang Fahrenheit. Cho
nhiệt độ Celcius tăng từ 5 độ đến 50 độ với mỗi bước tăng 5 độ. Bảng kết quả in ra có dạng:

Độ Celcius

Độ Fahrenheit

--------------

-----------------

5
10
15
20

xxxx

xxxx
xxxx
xxxx

Fahrenheit = (9.0 / 5.0) * Celcius + 32.0;
#include <iostream.h>
#include <iomanip.h>
void main()
{
float c = 5, f;
cout << "
cout << "

Celcius
-------

Fahrenheit\n";
----------\n";

while (c <= 50)
{

Trang 8


}

f = (9/5) * c + 32;
cout << setw(13) << c << setw(26) << f << endl;
c += 5;


}

Câu 7: Giá trị của số Euler e, được tính xấp xỉ bằng cơng thức sau:
e = 1 + 1/1! + ½! + 1/3! + ¼! + 1/5! + …
Dựa vào cơng thức này, viết một chương trình C++ để tính xấp xỉ giá trị của e. Hãy dùng
vòng lặp while mà dừng lại khi độ sai biệt giữa hai lần xấp xỉ nhỏ hơn 1.0E-6.
#include <iostream.h>
#define epxilon 1.0e-6
void main()
{
float i = 1, e = 1, error = 0, gt = 1;
do
{

gt = gt * i;
error = 1 / gt;
e += error;
i = i +1;
} while (error > epxilon);
cout << "Gia tri xap xi cua e tinh duoc la : " << e << endl;
}

Câu 8: Viết một chương trình C++ tính tóan và trình bày số tiền tích lũy được nếu gửi tiết kiệm
1000$ vào ngân hàng sau từng năm trong vịng 10 năm. Chương trình cũng cần trình bày số
tiền tích lũy được với lãi suất thay đổi từ 6% đến 12% với bước tăng 1%. Như vậy, ta nên
dùng hai vòng lặp lồng nhau: vòng lặp ngòai thay đổi theo lãi suất và vòng lặp trong thay
đổi theo số năm. Cơng thức để tính số tiền tích lũy L = P(1+ i) n với P là số tiền gửi ban đầu,
i là lãi suất, n là số chu kì tính lãi.
#include <iostream.h>

#include <math.h>
void main()
{
float deposit = 1000;
for (float i = 0.06; i <= 0.12; i = i + 0.01)
{
cout << "Muc lai suat: " << i * 100 << "%" << endl;
for (int n = 1; n <= 10; n++)
{
cout << " Nam thu " << n << " thu duoc so tien: "
<< deposit * pow(1 + i, n) << endl;
}
cout << endl;
}
}

Trang 9


Câu 9: Viết chương trình nhập số nguyên dương n. Liệt kê n số nguyên tố đầu tiên.
#include <iostream.h>
#include <math.h>
void main()
{
int n;
long so;
bool nguyen_to;
cout << "CHUONG TRINH XUAT RA n SO NGUYEN TO DAU TIEN\n";
cout << "Nhap so n : ";
cin >> n;

so = 1;
for (int i = 1; i <= n; i++)
{
do
{
so = so + 1;
nguyen_to = true;
for (long j = 2; j <= sqrt(so); j++)
{
if (so % j == 0)
{
nguyen_to = false;
break;
}
}
}
while (!nguyen_to);
cout << "So nguyen to thu " << i << " la: " << so << endl;
}
}

Trang 10


BÀI THỰC TẬP SỐ 4
Mảng và Cấu trúc
Câu 5: Hãy viết một chương trình C++ đọc vào một mảng gồm n số thực chính xác đơn và tìm số
nhỏ nhất trong array đó n là một trị số nguyên do người sử dụng nhập vào.
#include<iostream.h>
void main()

{
int n, i;
float mangso[100];
cout << "Nhap vao so nguyen n:"; cin >> n; // 0 < n < 100
for (i = 0; i < n; i++)
{
cout << "Nhap vao so thuc thu " << (i + 1) << ": ";
cin >> mangso[i];
}
float min = mangso[0];
int j = -1;
for (i = 0; i < n; i++)
{
if (min >= mangso[i])
{
min = mangso[i];
j = i + 1;
}
}
cout << "So thuc nho nhat trong mang la so thu " << j << ", co gia tri "
<< min;
}

Câu 6: Hãy viết một chương trình C++ đọc vào một mảng gồm n số thực chính xác đơn và sắp xếp
array đó theo thứ tự giảm dần.
#include<iostream.h>
void main()
{
int n, i, j;
float array[100];

cout << "Nhap vao so nguyen n: ";
cin >> n;
for (i = 0; i < n; i++)
{
cout << "Nhap vao so thuc thu " << (i+1)<< ": ";
cin >> array[i];
}
for (i = n - 1; i > 0; i--)
{
for (j = 0; j < i; j++)
{
if (array[j] < array[j+1])
{
float tg;

Trang 11


}
}

tg = array[j];
array[j] = array[j+1];
array[j+1] = tg;

}

cout << "Mang so thuc sau khi da sap xep theo thu tu giam dan tro thanh:\n
";


cout << "(viet theo hang doc) " << endl;
for (i = 0; i < n; i++)
cout << array[i] << endl;

}

Câu 7: Viết hàm tìm vị trí phần tử có giá trị x xuất hiện cuối cùng trong mảng.
#include<iostream.h>
int tim(float a[], int n, float x)
{
int vitri=-1;
for (int i = n-1; i >=0; i--)
{
if (a[i] == x)
{
vitri = i;
break;
}
}
return vitri;
}
void main()
{
int n;
float mang[100];
cout << "Nhap vao so nguyen n: ";
cin >> n;
for (int i=0; i < n; i++)
{
cout << "Nhap vao so thuc thu " << (i+1) << ": ";

cin >> mang[i];
}
float x;
cout << "Nhap vao gia tri cua x:";
cin >> x;
int vitri = tim(mang, n, x);
if (vitri != -1)
{
cout << "Phan tu cuoi cung trong mang co gia tri " << x << " la:" <<
endl;

cout << "phan tu thu " << (vitri+1) << " hay mang[" << vitri << "]";
}
else
{

Trang 12


}

cout << "Khong co phan tu nao cua mang bang " << x;

}

Câu 8: Viết hàm chèn phần tử có giá trị x vào vị trí đầu tiên của mảng.
#include<iostream.h>
void chen (float mang[], float x, int n)
{
int j;

for (j = n-1; j >= 0 ; j--)
{
mang[j+1] = mang[j];
}
mang[0] = x;
cout << "Sau khi chen phan tu " << x << " vao vi tri dau tien: \n ";
cout << " mang tro thanh ( viet theo hang doc ) : " << endl;
for (j = 0; j <= n; j++)
cout << mang[j] << endl;
}
void main()
{
int n, i;
float mang[100];
cout << "Nhap vao so nguyen n: ";
cin >> n;
for (i = 0; i < n; i++)
{
cout << "Nhap vao so thuc thu " << (i+1) << " ";
cin >> mang[i];
}
float x;
cout << "Nhap vao gia tri cua x: ";
cin >> x;
chen (mang, x, n);
}

Câu 9: Hãy viết một chương trình C++ đọc vào một ma trận n  n và chuyển vị ma trận này và in
ma trận chuyển vị ra. Chuyển vị một ma trận vuông nghĩa là:
aij  aji for all i, j


Thí dụ cho ma trận
1
2

3 5
7 9

4

1 6
Trang 13


sau khi chuyển vi, nó trở thành
1

2

4

3

7

1

5

9


6

#include<iostream.h>
void doi_gia_tri(float& x, float& y)
{
float tg;
tg = x;
x = y;
y = tg;
}
void main()
{
int n, i, j;
float mang[50][50];
cout << "Nhap vao so nguyen n: " ;
cin >> n;
for (i = 0; i < n; i++)
{
for (j = 0; j {
cout << "Nhap vao phan tu a(" << (i + 1) << ", " << (j + 1) <<
"): ";

cin >> mang[i][j];
}

}

cout << "Ma tran ban nhap vao la :" << endl;

for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
cout << mang[i][j] << " ";
cout << endl;
}
for (i = 0; i < n; i++)
{
for (j = 0; j < i; j++)
doi_gia_tri ( mang[i][j] , mang[j][i] );
}
cout << "Ma tran chuyen vi la: " << endl;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
cout << mang[i][j] << " ";
cout << endl;
}
}

Câu 10:

Trang 14


a. Hãy khai báo một kiểu dữ liệu mang tên Car là kiểu cấu trúc mà mỗi chiếc xe (car) có
thể gồm những thơng tin như trong mỗi hàng của bảng sau:
Car_Number
25


Kms_driven
1450

Litre_used
62

36

3240

136

44

1792

76

52

2360

105

68

2114

67


b. Dùng kiểu dữ liệu được định nghĩa ở a., viết một chương trình C++ mà đọc vào dữ liệu
được cho ở bảng trên vào thành một array gồm 5 cấu trúc. Một khi dữ liệu đã được đọc
vào, chương trình sẽ tính tóan và trình bày ra báo cáo gồm các cột: mã số xe, số km đã đi
trên mỗi lít xăng.
#include<iostream.h>
struct Car
{
int car_number;
double kms_driven, litre_used;
};
void main()
{
int i;
Car array[5];
for (i = 0; i < 5; i++)
{
cout << "Nhap vao so lieu cho xe thu " << (i + 1) << endl;
cout << "Car_Number: ";
cin >> array[i].car_number;
cout << "Kms_driven: ";
cin >> array[i].kms_driven;
cout << "Litre_used: ";
cin >> array[i].litre_used;
}
cout << "BAO CAO: " << endl;
for (i = 0; i < 5; i++)
{
cout << "Ma so xe : " << array[i].car_number<< endl;
double km_lit;
km_lit = array[i].kms_driven / array[i].litre_used;

cout << "So km da di tren moi lit xang : " << km_lit << endl;
}
}

Trang 15


BÀI THỰC TẬP SỐ 5
Câu 4: Cho một hàm như sau:
int square(int a)
{
a = a*a;
return a;
}

a.

Viết chương trình C++ nhập vào số ngun x và gọi hàm square
để tính bình phương của x và trình bày kết quả này ra.

b.

Viết lại hàm square để hàm này trở thành một hàm gọi bằng địa
chỉ, đặt tên hàm mới là square2. Viết chương trình C++ nhập vào số nguyên x và gọi
hàm square2 để tính bình phương của x và trình bày giá trị của x sau khi gọi hàm. Có
nhận xét gì về giá trị của x sau khi gọi hàm?

#include<iostream.h>
int square(int a)
{

a = a * a;
return a;
}
int square2(int &a)
{
a = a * a;
return a;
}
void main()
{
int x;
cout << "Nhap gia tri cua x: ";
cin >> x;
cout << "Ham goi bang gia tri" << endl;
cout << "x^2= " << square(x) << endl;
cout << "Gia tri x sau khi goi ham: x= " << x << endl << endl;

}

cout << "Ham goi bang dia chi" << endl;
cout << "x^2= " << square2(x) << endl;
cout <<"Gia tri cua x sau khi goi ham: x= " << x << endl << endl;

Câu 5: Đọc hàm sau đây dùng để tính số nguyên lớn nhất mà bình phương của nó nhỏ hơn hay
bằng một trị số nguyên cho trước.
int Intqrt(int num)
{
int i;
i = 1;
do


Trang 16


++ i
while i*i <= num;
return(i –1);
}

Viết một chương trình C++ đọc vào một số nguyên n và gọi hàm Intqrt để tính số ngun
lớn nhất mà bình phương của nó <= n.
#include<iostream.h>
int Intqrt(int num)
{
int i;
i = 1;
do
++i;
while (i * i <= num);
return (i - 1);
}
void main()
{
int n;
cout << "Nhap 1 so nguyen: ";
cin >> n;
cout << "So nguyen lon nhat ma binh phuong cua no <=" << n
<< " la so: " << Intqrt(n) << endl;
}


Câu 5: Hãy khai báo mảng động cho ma trận hai chiều có kích thước m x n. Sau đó, kiểm tra có
phải ma trận đối xứng không.
#include<iostream.h>
#include<iomanip.h>
void nhap(int m, int n, int **&a)
{
cout << "Nhap mang 2 chieu gom " << m * n << " phan tu" << endl;
a = new int *[m];
for (int i = 0; i < m; i++)
{
a[i] = new int [n];
for (int j = 0; j < n; j++)
{
cout << "phan tu [" << i << "][" << j << "] = ";
cin >> a[i][j];
}
}
}
void in(int m, int n, int **a)
{
cout << "IN MANG 2 CHIEU " << m << "x" << n << endl;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
cout << setw(5) << a[i][j];
cout << endl;

Trang 17



}
cout << endl;
}
void doixung(int m, int n, int **a)
{
if (m != n)
{
cout << "MANG KO DOI XUNG" << endl;
return;
}
int kt = 1;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < i; j++)
if (a[i][j] != a[j][i])
{
kt = 0;
break;
}
if (kt == 0) break;
}
if (kt == 1)
cout << "MANG DOI XUNG QUA DUONG CHEO CHINH" << endl;
else
cout << "MANG KO DOI XUNG" << endl;
}
void xoa(int m, int n, int **&a)
{
cout << "Xoa mang 2 chieu";
for (int i = 0; i < m; i++)

{
delete [] a[i];
}
delete [] a;
}
void main()
{
int m, n, **a;
cout << "Nhap so hang cua ma tran: ";
cin >> m;
cout << "Nhap so cot cua ma tran: ";
cin >> n;
nhap(m,n,a);
in(m,n,a);
doixung(m,n,a);
xoa(m, n, a);
}

Câu 6: Viết chương trình nhập số nguyên dương n gồm k chữ số (0 < k ≤ 5) , sắp xếp các chữ số
của n theo thứ tự tăng dần.
Trang 18


Ví dụ: Nhập n = 1536
Kết quả sau khi sắp xếp: 1356.
#include<iostream.h>
#include<string.h>
void sapxep(char *&n)
{
int t;

for (unsigned int i = 0; i < strlen(n) - 1; i++)
for (unsigned int j= i + 1; j < strlen(n); j++)
if (n[i] > n[j])
{
t = n[i];
n[i] = n[j];
n[j] = t;
}
}
void main()
{
unsigned int k;
do
{
cout << "Nhap so chu so cua so nguyen duong (0cin >> k;
} while (k <= 0 || k > 5);

";

char *n = new char [k+1];
do
{
cout << "Nhap so nguyen duong n co " << k << " chu so: ";
cin >> n;
} while (strlen (n) != k);
cout << "So da nhap: " << n << endl;
sapxep (n);
cout << "Ket qua sau khi sap xep: " << n << endl;
}


Câu 7: Cho công thức tính số tổ hợp m vật lấy từ n vật như sau:
C(n,m) = 1

nếu m = 0 hay m=n

C(n, m) = C(n-1, m) + C(n-1, m-1)

nếu 0 < m < n

a.
b.

Hãy viết hàm đệ quy C++ để tính C(n,m).
Viết chương trình C++ nhập vào hai số nguyên n và m và gọi
hàm C định nghĩa ở câu a để tính C(n,m) và trình bày kết quả ra.

#include<iostream.h>
int tohop(int n, int m)
{
if (m == 0 || m == n)

Trang 19


return 1;

else

return (tohop(n - 1, m) + tohop(n - 1, m - 1));


}

void main()
{
int m,n;
do
{

cout << "Nhap 2 so nguyen duong mcin >> m >> n;
} while (m < 0 || n < 0 || n < m);

}

cout << "To hop " << m << " vat lay tu " << n << " vat bang: "
<< tohop(n,m) << endl;

Câu 8: Hãy viết hàm đệ quy để tìm chữ số đầu tiên của số nguyên dương n.
#include<iostream.h>
int chuso(int n)
{
if (n / 10 == 0)
return n;
else
return chuso(n / 10);
}
void main()
{
int n;

do
{
cout << "Nhap 1 so nguyen duong: ";
cin >> n;
} while (n < 0);
cout << "Chu so dau tien cua so nguyen duong n la: "
<< chuso (n) << endl;
}

Trang 20



×