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

Thực hành tin học đại cương tuần 6

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 (83.74 KB, 5 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
Đại học Công nghệ Thông tin
  
THỰC HÀNH MÔN TIN HỌC ĐẠI CƯƠNG
Bài số 6 : HÀM
I. Mục tiêu
1. Hiểu được cách khai báo và cách sử dụng hàm.
2. Phân biệt truyền tham số và truyền tham trị.
3. Phân biệt biến toàn cục và biến cục bộ.
II. Bài tập thực hành
1. Hàm kiểm tra số nguyên tố
2. Hàm đổi số từ hệ 10 sang hệ 2
3. Hàm tìm USCLN của 2 số nguyên dương
III. Hướng dẫn thực hành
1. Hàm kiểm tra số nguyên tố
 Đề bài
Viết một hàm để kiểm tra một số nguyên dương có phải là số nguyên
tố hay không. Sau đó dùng hàm đã viết để tìm tất cả các số nguyên tố nằm
trong khoảng từ 100 đến 1000.
 Phân tích bài toán
Số nguyên tố là số có hai ước số duy nhất là 1 và chính nó. Như vậy,
nếu trong khoảng từ 2 đến K/2 không tồn tại một ước số nào của K, thì K là
số nguyên tố.
Duyệt từ chặn dưới (100) đến chặn trên (1000), dùng hàm kiểm tra
số nguyên tố, ta in các số là nguyên tố ra màn hình.
 Chương trình minh họa
#include <stdio.h>
#include <conio.h>
int SoNT(int N);
void main()
{


for (int i = 100; i <= 1000; i++)
{
if (SoNT(i))
printf(“%d\n”, i);
}
}
int SoNT(int N)
{
for (int i = 2; i < N/2; i++)
{
if ((N mod i) == 0)
return 0;
}
return 1;
}
2. Hàm đổi số từ hệ 10 sang hệ 2
 Đề bài
Viết một hàm để đổi số từ hệ 10 sang số hệ 2. Sau đó dùng hàm trên
trong chương trình chính với kết cấu như sau :
- Nhập vào một số hệ 10.
- Gọi hàm để đổi số sang hệ 2.
- Xuất kết quả.
 Phân tích bài toán
Để chuyển đổi một số từ hệ thập phân sang hệ nhị phân, ta lấy số
thập phân chia cho 2 cho đến khi phần thương của phép chia bằng 0. Số đổi
được chính là các phần dư của phép chia theo thứ tự ngược lại.
Chúng ta có thể lưu kết qủa như một chuỗi ký tự, sau đó xuất chuỗi
ra màn hình. Tuy nhiên, ở đây chúng tôi dùng mảng một chiều.
 Chương trình minh họa
#include <stdio.h>

#include <conio.h>
void ChuyenNT(int soTP, int soNP[], int &chieudai);
void main()
{
int soTP = 0;
int soNP[20];
int chieudai = 0;
scanf (“nhap vao 1 so he 10 : %d”, &soTP);
ChuyenNT(soTP, soNP, chieudai);
for (int i = 0; i < chieudai; i++)
printf(“%d”, soNP[i]);
getch();
}
void ChuyenNT(int soTP, int soNP[], int &chieudai)
{
chieudai = 0;
while (soTP != 0)
{
soNP[chieudai++] = soTP mod 2;
soTP = soTP div 2;
}
}
3. Tìm USCLN của hai số nguyên dương bất kỳ
 Đề bài
Viết thủ tục nhập hai số nguyên dương a, b và thủ tục tìm USCLN
của hai số đó (với a, b là hai biến toàn cục trong chương trình). Sau đó, in
ra USCLN của chúng.
 Phân tích bài toán
Ta áp dụng giải thuật Euclide tìm USCLN của hai số nguyên dương
a và b như sau:

- Nếu a>b thì USCLN(a, b) = USCLN(a-b, a).
- Nếu a<b thì USCLN(a, b) = USCLN(a, b-a).
- Nếu a=b thì USCLN(a, b) = a (hoặc b).
 Chương trình minh họa
#include <stdio.h>
#include <conio.h>
int UCLN(int a, int b);
void main()
{
int a, b, uscln;
<kiem tra dieu kien nhap>  các bạn tự đề nghị cách giải quyết
scanf (“nhap vao so 1 : %d”, &a);
<kiem tra dieu kien nhap>  các bạn tự đề nghị cách giải quyết
scanf (“nhap vao so 2 : %d”, &b);
uscln = UCLN(a, b);
printf(“uoc chung lon nhat cua %d va %d la: %d”, a, b, uscln);
getch();
}
int UCLN(int a, int b)
{
while (a != b)
{
if (a > b)
a = a – b;
else
b = b – a;
}
return a;
}

×