❖ Phân tích bài toán - Dữ liệu nhập vào: 1 xâu str - Dữ liệu xuất ra: Xuất xâu str ra màn hình - Cách làm: Xác định các biến vào/ra/trung gian trong bài toán, chỉ có 1 biến str + Bước 1:
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
KHOA CÔNG NGHỆ THÔNG TIN
Đại học
Chính quy
Trang 2MỤC LỤC
TH01: BÀI THỰC HÀNH CÁC THÀNH PHẦN CƠ BẢN VÀ NHẬP/XUẤT 3
TH02: BÀI THỰC HÀNH VỀ CẤU TRÚC ĐIỀU KHIỂN CHƯƠNG TRÌNH 6
TH03: BÀI THỰC HÀNH VỀ XÂY DỰNG CHƯƠNG TRÌNH CON 17
TH04: BÀI THỰC HÀNH VỀ KIỂU DỮ LIỆU MẢNG 21
TH05: BÀI THỰC HÀNH VỀ KIỂU DỮ LIỆU XÂU KÍ TỰ VÀ CẤU TRÚC 27
TH06: BÀI THỰC HÀNH VỀ KIỂU DỮ LIỆU MẢNG, CHƯƠNG TRÌNH CON VÀ CẤU TRÚC 36 TH07: BÀI THỰC HÀNH VỀ NHẬP XUẤT VỚI FILE VĂN BẢN 45
Trang 3TH01: BÀI THỰC HÀNH CÁC THÀNH PHẦN CƠ BẢN VÀ NHẬP/XUẤT
Mục tiêu
- Trình bày được cú pháp nhập xuất của một chương trình C#
- Sử dụng được các cú pháp vào ra thông dụng
- Vận dụng được để viết các chương trình theo yêu cầu
Hướng dẫn thực hiện
Bài 1 Xây dựng chương trình có giao diện như sau:
********************************************************************
* *
* DANG NHAP *
* *
* Tai khoan: *
* *
* Mat khau: *
* *
******************************************************************** Cách làm: Sử dụng cú pháp lệnh xuất dữ liệu ra màn hình theo định dạng ❖ Chương trình minh họa using System; class Program {
static void Main(string[] args) {
Console.WriteLine("****************************************************************"); Console.WriteLine("* *");
Console.WriteLine("* DANG NHAP *");
Console.WriteLine("* *");
Console.WriteLine("* Tai khoan: *");
Console.WriteLine("* *");
Console.WriteLine("* Mat khau: *");
Console.WriteLine("* *");
Console.WriteLine("****************************************************************"); Console.ReadKey();//Dừng màn hình chạy để nhìn kết quả, ReadKey là chờ người dung nhấn phím bất kỳ }
}
❖ Nhận xét: Các lỗi thường gặp khi soạn thảo code
Thiếu dấu ;
Thiếu dấu đóng ngoặc kép ” trong câu lệnh hiển thị xâu ra màn hình Console WriteLine
Thiếu dấu đóng ngoặc tròn ) trong câu lệnh hiển thị xâu ra màn hình Console WriteLine
Thiếu hoặc đặt không đúng chỗ các dấu { hay }
Viết hoa thường viết thành: Console viết thành console; WriteLine viết thành Writeline
Bài 2 Xây dựng chương trình nhập vào xâu từ bàn phím, sau đó hiển thị xâu đó lên màn hình
❖ Phân tích bài toán
- Dữ liệu nhập vào: 1 xâu str
- Dữ liệu xuất ra: Xuất xâu str ra màn hình
- Cách làm: Xác định các biến vào/ra/trung gian trong bài toán, chỉ có 1 biến str
+ Bước 1: Khai báo và sử dụng cú pháp nhập để nhập một xâu str từ bàn phím
Trang 4+ Bước 2: Sử dụng cú pháp xuất dữ liệu để in dữ liệu xâu str vừa nhập ra màn hình
❖ Chương trình minh họa
❖ Nhận xét: Các lỗi thường gặp khi soạn thảo code
Các lỗi như trong bài 1
Thiếu khai báo biến hoặc đặt khai báo biến không đúng chỗ
Lệnh nhập dữ liệu từ bàn phím Console.ReadLine() viết thành lệnh xuất dữ liệu ra màn
hình Console.WriteLine()
Lệnh nhập dữ liệu từ bàn phím Console.ReadLine() viết thiếu cặp dấu ()
Bài 3 Xây dựng chương trình nhập vào hai số a, b từ bàn phím, sau đó tính tổng và in kết quả ra
màn hình
❖ Phân tích bài toán
- Dữ liệu nhập vào: hai số a, b
- Dữ liệu xuất ra: Tổng a+b
- Cách làm: Xác định các biến vào/ra/trung gian trong bài toán Biến vào a, b kiểu
số (số nguyên hoặc thực); Biến ra tong kiểu số và cùng kiểu vơia a/b
❖ Nhận xét: Các lỗi thường gặp khi soạn thảo code
Thiếu khai báo biến a,b
Trang 5Lệnh nhập dữ liệu từ bàn phím Console.ReadLine() cho biến kiểu dữ liệu khác string viết
thành lệnh xuất dữ liệu ra màn hình Console WriteLine()
Lệnh nhập dữ liệu từ bàn phím Console.ReadLine() viết thiếu cặp dấu ()
Bài 4 Xây dựng chương trình nhập vào hai số a, n từ bàn phím, sau đó tính an và in kết quả ra màn hình
❖ Phân tích bài toán
- Dữ liệu nhập vào: hai số a, n
- Dữ liệu xuất ra: an
- Cách làm: Xác định các biến vào/ra/trung gian trong bài toán Biến vào a, n kiểu
số (Giả sử chọn a và n kiểu số nguyên); Biến ra an kiểu double (Có thể khai báo
biến hoặc xuất trực tiếp ra màn hình, trong bài này chọn cách thứ 2) + Bước 1: Nhập hai số a, n từ bàn phím
+ Bước 2: Sử dụng hàm Pow trong thư viện Math trong để tính an
Bài tập 2 Xây dựng chương trình hiển thị ra màn hình menu như sau:
F2: Nhap them F6: Hiển thị học sinh gioi
F3: Doc tep F7: Thong ke F4: Hien thi ESC: Thoat
Bài tập 3 Sử dụng thư viện Math của C# để viết một chương trình máy tính đơn giản
Trang 6Bài tập 4 Xây dựng chương trình giới thiệu về bạn: tên, tuổi, ngày tháng năm sinh, địa chỉ, nghề nghiệp, sở thích và một số thông tin khác.
Bài tập 5 Mở rộng bài mẫu 2 cho phép chương trình nhập tài khoản sau “Tai khoan:” và mật khẩu từ bàn phím sau “Mat khau:“
Bài tập 6 Xây dựng chương trình sumi giúp người và máy tính nói chuyện với nhau về: tên,
tuổi, giới tính, số điện thoại, email, địa chỉ, nghề nghiệp, sở thích, sở trường và một số thông tin khác
Trang 7TH02: BÀI THỰC HÀNH VỀ CẤU TRÚC ĐIỀU KHIỂN CHƯƠNG TRÌNH
Mục tiêu
- Trình bày được cú pháp của câu lệnh rẽ nhánh dạng khuyết, dạng đủ và đa lựa chọn
- Mô tả được hoạt động của các cấu trúc rẽ nhánh
- So sánh được điểm giống và khác nhau của 2 dạng lệnh rẽ nhánh if, switch
- Sử dụng thành thạo các câu lệnh rẽ nhánh để thể hiện giải thuật
- Vận dụng được để viết các chương trình theo yêu cầu
- Phân tích được cú pháp của các cấu trúc lặp (do while, while, for)
- So sánh được điểm giống và khác nhau giữa các dạng lệnh
- Sử dụng thành thạo các câu lệnh lặp để thể hiện giải thuật
- Vận dụng được để viết các chương trình theo yêu cầu
I Cấu trúc rẽ nhánh
Bài 1 Xây dựng chương trình nhập vào một số từ bàn phím, kiểm tra xem số đó là số đó có chia
hết cho 2 hay không và in kết quả ra màn hình
❖ Phân tích bài toán:
- Dữ liệu nhập vào: a
- Dữ liệu xuất ra: a chia hết cho 2/ a không chia hết cho 2
- Cách làm: Xác định các biến vào/ra/trung gian trong bài toán gồm biến nhập vào a kiểu số nguyên
+ Bước 1: Nhập một số nguyên từ bàn phím (giả sử đặt tên là a) + Bước 2: Kiểm tra số a có chia hết cho 2 hay không (dùng toán tử %, a chia
hết cho 2 thì a chia 2 dư 0, ngược lại a chia 2 dư 1)
+ Bước 3: Dùng cấu trúc điều khiển if…else để kiểm tra
o Nếu số a%2==0 thì in ra thông báo: đây là số chẵn
o Ngược lại thì in ra thông báo: đây là số lẻ
❖ Chương trình minh họa
❖ Phân tích bài toán
− Dữ liệu nhập vào: 1 số a trong khoảng 1 đến 7
Trang 8− Dữ liệu xuất ra: Thứ tương ứng nếu a trong khoảng 2 đến 7, chủ nhật nếu a là 1
− Cách làm: Xác định các biến vào/ra/trung gian trong bài toán gồm biến nhập vào a kiểu
số nguyên
+ Bước 1: Nhập vào một số bất kỳ trong đoạn từ 1→7
+ Bước 2: Kiểm tra xem số vừa nhập vào tương ứng với ngày nào trong tuần sử
Trang 9❖ Phân tích bài toán
o Bước 1: Sử dụng cú pháp xuất dữ liệu ra màn hình 3 dòng theo định dạng
o Bước 2: Hiển thị “Tai khoan:” và nhập giá trị cho biến tk, sử dụng cú pháp xuất dữ liệu ra màn hình Write(" Tai khoan: ");
o Bước 3: Tương tự bước 2 hiển thị “Mat khau: " nhập giá trị cho biến mk
o Bước 4: Dùng cấu trúc rẽ nhánh if để kiểm tra nếu (tk== "CSKTLT" &&
mk == "fit@123”) đúng thì xuất dữ liệu ra màn hình “DANG NHAP THANH CONG”nếu không thì xuất dữ liệu “DANG NHAP THAT BAI”
Chương trình minh họa
Console.Write(" Tai khoan: ");
tk=Console.ReadLine();//Nhập tên tài khoản
Console.WriteLine(" ");
Console.Write(" Mat khau: ");
mk = Console.ReadLine();//Nhập mật khẩu
Console.WriteLine(" ");
//Nếu thông tin đăng nhập là tài khoản và mật khẩu đúng thì thong báo thành công
if( tk== "CSKTLT" && mk == "fit@123" )
Console.Write(" DANG NHAP THANH CONG!");
else //Còn lại thì thong báo thất bại
Console.Write(" DANG NHAP THAT BAI!");
Bài tập 1 Xây dựng chương trình giới thiệu về bạn: tên, tuổi, giới tính, nghề nghiệp, sở
thích Sau đó hiên thị ra màn hình tên, giới tính và nhận xét
Trong đó: Nếu tuổi <30 thì in ra màn hình “Bạn quá trẻ”, còn lại không hiển thị gì;
Nếu nghề nghiệp = “Sinh viên” thì in ra màn hình “Bạn hãy cố gắng trở thành sinh viên xuất sắc nhé!”, còn lại thì in ra màn hình “nghề nghiệp của bạn cũng hay đấy!”;
Trang 10Nếu sở thích =”lập trình” thì in ra màn hình “Tuyệt vời! Chúc bạn sẽ trở thành lập trình viên giỏi”, nếu sở thích =”chơi game” thì in ra màn hình “Đây là sở thích không tốt”, còn lại thì không hiển thị gì ra màn hình
Bài tập 2 Xây dựng chương trình giải phương trình bậc 2: ax2+bx+c=0 (với a,b,c nhập từ
bàn phím)
Gợi ý:
- Bước 1: Nhập các hệ số của phương trình bậc hai
- Bước 2: Sử dụng cấu trúc if…else để giải bài toán
+ Đầu tiên kiểm tra hệ số a, nếu a=0→kết luận đây không là phương trình bậc hai, ngược lại tính delta như sau: delta=b*b-4*a*c
+ Kiểm tra giá trị của delta:
Nếu delta<0→kết luận phương trình vô nghiệm Nếu delta=0→phương trình có nghiệm kép x=-b/(2*a) Nếu delta>0→phương trình có hai nghiệm phân biệt:
X1=-(b+sqlt(delta))/(2*a) X2=-(b-sqlt(delta))/(2*a)
- Bước 3: In kết quả ra màn hình
Bài tập 3 Xây dựng chương trình nhập một tháng, cho biết tháng đó thuộc mùa nào (Xuân,
Hạ, Thu, Ðông), biết rằng tháng 2, 3, 4 là mùa Xuân, tháng 5, 6, 7: mùa Hè, tháng 8, 9, 10: mùa Thu, và tháng 11, 12, 1: mùa Ðông
Gợi ý:
- Bước 1: nhập vào một số từ bàn phím ()
- Bước 2: Sử dụng cấu trúc switch…case để kiểm tra
+ Trường hợp: 2,3,4→thông báo đây là mùa xuân
+ Trường hợp: 5,6,7→thông báo đây là mùa hè
+ Trường hợp: 28,9,10→thông báo đây là mùa thu
+ Trường hợp: 11,12,1→thông báo đây là mùa đông
- Bước 3: In kết quả ra màn hình
Bài tập 4 Xây dựng chương trình quản lý tiền điện của một hộ với các thông tin sau: họ tên
một chủ hộ, chỉ số điện kế tháng trước (chiso1) và chỉ số điện kế tháng này (chiso2), tính tiền điện tháng này cho hộ, biết rằng :
- Mỗi kw trong 60 kw đầu tiên có đơn gía là 5đ,
- Từ kw thứ 61 đến kw thứ 160 có đơn giá 8đ,
- Từ kw thứ 161 trở lên có đơn gía 10đ
Gợi ý: Bước 1: Nhập vào chiso1 và chiso2
- Bước 2: Tính số KW của tháng bằng cách: soKW=chiso2-chiso1
- Bước 3: Dùng cấu trúc if để kiểm tra
+ Nếu soKW<=60→sotien=soKW*5
+ Nếu 61<=soKW<=160→tính số KW vượt quá 60 Vậy số tiền sẽ được tính như sau:
sotien=60*5+soKWvuot*8 + Nếu 161<=soKW→ tính số KW vượt quá 161 Vậy số tiền sẽ được tính như sau:
Sotien=60*5+100*8+soKWvuot*10
- Bước 4: In kết quả ra màn hình
Trang 11II Cấu trúc lặp
Bài 1 Xây dựng chương trình nhập vào một số nguyên dương N sau đó tính tổng N số nguyên
dương đầu tiên
❖ Phân tích bài toán
- Dữ liệu nhập vào: N nguyên dương
- Dữ liệu xuất ra: S=1+2+3+… +N
- Cách làm:
o Bước 1: Nhập số nguyên dương N
o Bước 2: Áp dụng cấu trúc lặp for để duyệt từ 1→N, tại mỗi lần duyệt cộng giá trị
❖ Phân tích bài toán
- Dữ liệu nhập vào: N nguyên dương
- Dữ liệu xuất ra: N!
- Cách làm:
o Bước 1: Nhập số nguyên N (0<N<=10) sử dụng cú pháp vào ra và cấu trúc điều
khiển lặp do…while để đảm bảo giá trị của N thỏa mãn điều kiện
o Bước 2: Khởi gán giá trị cho biến lưu trữ s giá trị là 1
o Bước 3: Dùng cấu trúc lặp for để duyệt từ 1→N, tại mỗi vòng lặp lấy tích của
biến chạy nhân thêm vào biến lưu trữ s
Trang 12o Bước 2: Khởi gán giá trị cho biến lưu trữ s=0 và n=0
o Bước 3: Dùng cấu trúc lặp while để duyệt từ 1→N, tại mỗi vòng lặp tăng n và
cộng them 1/n vào biến lưu trữ s, kiểm tra nếu s thỏa điều kiện>a thì thoát khỏi vòng lặp và in kết quả ra màn hình
❖ Chương trình minh họa
❖ Phân tích bài toán
- Dữ liệu nhập vào: Số nguyên n
- Dữ liệu xuất ra: Có/không
- Cách làm:
- Bước 1: Nhập số nguyên dương N sử dụng cú pháp vào ra
Trang 13- Bước 2: Số nguyên tố là số chỉ có hai ước số là 1 và chính nó Như vậy, nếu trong khoảng từ 2 đến √N không tồn tại một ước số nào của N (số ước=0), thì N là số nguyên tố
- Bước 3: Giả sử dùng biến chạy i, duyệt i từ (2) đến √N (có thể chọn cận trên là N/2 hoặc N-1 cũng được) với bước nhảy là 1 Kiểm tra số N có chia hết cho i hay không, nếu có thì in kết quả ra màn hình N không là số nguyên tố và thoát; Nếu số ước=0 thì N là số nguyên tố
❖ Chương trình minh họa
Bài này có thể dùng kỹ thuật cờ để giải quyết
- Bước 1 Lúc đầu mặc định N là số nguyên tố (phất cờ);
- Bước 2 (lặp) Kiểm tra nếu N có ước khác 1 hoặc chính nó thì N là số nguyên tố (hạ cờ xuống);
- Bước 3 Cuối cùng kiểm tra trạng thái cờ: Nếu cờ đang phất thì đúng N là số
nguyên tố; Nếu cờ đã bị hạ xuống thì sai N không là số nguyên tố
❖ Chương trình minh họa
bool flag = true;
for (int i = 2; i <=Math.Sqrt(n); i++)
if (n % i == 0)
{
flag = false;
break;
Trang 14Bài 5 Xây dựng chương trình ĐĂNG NHẬP có giao diện như bài 1 Cho phép người dùng nhập
tên tài khoản và mật khẩu tối đa 3 lần Nếu tài khoản = “CSKTLT” và mật khẩu=”fit@123” thì hiển thị “DANG NHAP THANH CONG” Nếu cả 3 lần nhập thông tin tên tài khoản và mật khẩu chưa đúng thì hiển thị “DANG NHAP THAT BAI”
❖ Phân tích bài toán
− Dữ liệu nhập vào: tk, mk
− Dữ liệu xuất ra: “DANG NHAP THANH CONG” hoặc “DANG NHAP THAT BAI”
− Cách làm: Xác định các biến vào/ra/trung gian trong bài toán gồm biến nhập vào
tk, mk kiểu string; biến trung gian dem để đếm số lần người dùng nhập tk, mk Dùng lệnh lặp (for, do hoặc while) với điều kiện lặp là dem<3 tức khi dem>=3 thì thoát, công việc lặp gồm: Nhập tk, mk.; kiểm tra xem đăng nhập xem có thành
công không?; Cuối cùng là kiểm tra xem đã quá số lần nhập sai trong giới hạn cho phép là 3 hay chưa?
o Bước 1: Sử dụng lệnh lặp với điều kiện lặp là dem<3
o Bước 2: Viết công việc lặp
▪ Hiển thị “Tai khoan:” và nhập giá trị cho biến tk, sử dụng cú pháp xuất dữ liệu ra màn hình Write(" Tai khoan: ");
▪ Hiển thị “Mat khau: " nhập giá trị cho biến mk
▪ Dùng cấu trúc rẽ nhánh if để kiểm tra nếu (tk== "CSKTLT" && mk
== "fit@123”) đúng thì xuất dữ liệu ra màn hình “DANG NHAP THANH CONG”
▪ Dùng cấu trúc rẽ nhánh if để kiểm tra nếu dem <3 thì hiển thị ra
màn hình thong báo, còn lại thì hiển thị ra màn hình thong báo
“DANG NHAP THAT BAI”
Chương trình minh họa
Trang 15Console.Clear();//Xoa man hinh
Console.WriteLine();
Console.WriteLine(" DANG NHAP");
Console.WriteLine();
Console.WriteLine("***************************************************"); Console.WriteLine();
Console.Write(" Tai khoan: ");
tk = Console.ReadLine();//Nhập tên tài khoản
else //Nếu lần đăng nhập thứ 3 vẫn sai thì thong báo thất bại
Console.Write(" DANG NHAP THAT BAI!");
Bài tập 2 Xây dựng chương trình nhập vào số tự nhiên N, sau đó in ra màn hình tất cả các
số nguyên tố trong đoạn 1→N
Trang 16BÀI KIỂM TRA
1 Mức độ dễ và trung bình
Bài tập 1: Xây dựng chương trình giới thiệu về bạn: tên, tuổi, giới tính, nghề nghiệp, sở thích
Sau đó hiên thị ra màn hình tên, giới tính và nhận xét
Trong đó: Nếu tuổi <30 thì in ra màn hình “Bạn quá trẻ”, còn lại không hiển thị gì;
Nếu nghề nghiệp = “Sinh viên” thì in ra màn hình “Bạn hãy cố gắng trở thành sinh viên xuất sắc nhé!”, còn lại thì in ra màn hình “nghề nghiệp của bạn cũng hay đấy!”;
Nếu sở thích =”lập trình” thì in ra màn hình “Tuyệt vời! Chúc bạn sẽ trở thành lập trình viên giỏi”, nếu sở thích =”chơi game” thì in ra màn hình “Đây là sở thích không tốt”, còn lại thì không hiển thị gì ra màn hình
Bài tập 2: Xây dựng chương trình quản lý tiền điện của một hộ với các thông tin sau: họ tên một
chủ hộ, chỉ số điện kế tháng trước (chiso1) và chỉ số điện kế tháng này (chiso2), tính tiền điện tháng này cho hộ, biết rằng :
- Mỗi kw trong 60 kw đầu tiên có đơn gía là 5đ,
- Từ kw thứ 61 đến kw thứ 160 có đơn giá 8đ,
- Từ kw thứ 161 trở lên có đơn gía 10đ
Bài tập 3: Viết chương trình tìm n số Fibonacci đầu tiên
Quy luật của dãy số Fibonacci: số tiếp theo bằng tổng của 2 số trước, 2 số đầu tiên của dãy số là
0, 1 Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,
Bài tập 4: Xây dựng chương trình tìm bội số chung nhỏ nhất của hai số nguyên dương m, n nhập
từ bàn phím Suy ra ước số chung lớn nhất của chúng Gợi ý: BSCNN * USCLN = m* n
Bài tập 3: Viết chương trình nhập vào hai mốc thời gian: ngày 1, tháng 1, năm 1 và ngày 2,
tháng 2 năm 2 Hãy cho biết giữa hai mốc thời gian trên cách nhau bao nhiêu ngày
Trang 17TH03: BÀI THỰC HÀNH VỀ XÂY DỰNG CHƯƠNG TRÌNH CON
Mục tiêu
- Phân tích được cấu trúc của chương trình con
- So sánh được sự giống và khác nhau giữa thủ tục và hàm
- Sử dụng thành thạo các loại biến và tham số trong các chương trình con
- Sử dụng thành thạo các quy tắc về chương trình con để viết thành chương trình giải quyết bài toán theo yêu cầu
Yêu cầu:
Bài 1 Xây dựng CTC tìm USCLN của hai số nguyên dương bất kỳ
❖ Phân tích bài toán
- Dữ liệu nhập vào: hai số a, b
- Dữ liệu xuất ra: USCLN của a và b
- Cách làm:
o Bước 1: Xây dựng hàm USCLN(a,b) 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)
o Bước 2: Xây dựng hàm Main()
▪ Nhập vào 2 số nguyên dương bất kỳ Gọi hàm USCLN(a,b)
❖ Chương trình minh họa
int usc = USCLN(a, b);
Console.Write("USCLN cua a va b:=" + usc);
Console.ReadKey();
}
}
Trang 18Bài 2 Xây dựng hàm kiểm tra một số có phải là số nguyên tố hay không, sau đó dùng hàm này in
ra tất cả các số nguyên tố trong đoạn 2→n (với n nhập từ bán phím) Có bao nhiêu số như vậy
❖ Phân tích bài toán
o Bước 2: Xây dựng hàm Main()
▪ Nhập vào 1 số nguyên n (có thể dùng tên biến khác n)
▪ Khởi gán giá trị cho biến đếm
▪ Dùng vòng lặp for để duyệt biến chạy i từ 2 đến chặn trên N, mỗi
lần lặp gọi hàm isNT(i) để kiểm tra biến chạy i có là số nguyên tố hay không, nếu đúng i là số nguyên tố thì ta in i ra màn hình và tăng biến đếm lên 1
❖ Chương trình minh họa
Trang 19Bài 3 Xây dựng hàm đệ quy tính n!
❖ Phân tích bài toán
Bài tập 3 Xây dựng chương trình con đổi chỗ của 2 số, sau đó áp dụng chương trình con
vừa rồi sắp xếp ba số a,b,c theo thứ tự tăng dần (với a, b, c nhập từ bàn phím)
Bài tập 4 Xây dựng chương trình con kiểm tra một số có phải là số nguyên tố hay không,
sau đó sử dụng chương trình con vừa viết tình tổng các số nguyên tố từ 1→N (với 1<N<=100)
Trang 20BÀI KIỂM TRA
1 Mức độ dễ và trung bình
Bài tập 1: Viết chương trình tính diện tích và chu vi hình tròn với bán kính được nhập từ bàn phím.
Bài tập 2: Nhập số nguyên dương n (n>0) Liệt kê tất cả các số nguyên tố nhỏ hơn n
Bài tập 3: Nhập vào từ bàn phím n số nguyên(n>=2), sau đó cho biết ước số chung lớn nhất của n số
nguyên đó.
2 Mức độ khó
Bài tập 1: Số nguyên đố xứng là số nguyên viết theo chiều xuôi và chiều ngược là như nhau
Ví dụ:12321
Hãy nhập vào từ bàn phím n số nguyên, sau đó cho biết các số nguyên là số nguyên đố xứng
Bài tập 2: Trong mặt phẳng tọa độ xOy, cho tọa độ ba điểm A,B,C Hãy xây dựng chương trình tính diện
tích của tam giác ABC.
Bài tập 3: Nhập số nguyên dương n (0 <= n< 1000) và in ra cách đọc của n Ví dụ: Nhập n = 105 In ra
màn hình: Mot tram le nam
Trang 21TH04: BÀI THỰC HÀNH VỀ KIỂU DỮ LIỆU MẢNG
Mục tiêu
- Mô tả được cách tổ chức dữ liệu kiểu mảng
- Khai báo được mảng (1 chiều, 2 chiều )
- Phân tích được cách thức truy nhập tới các phần tử của mảng
- Chỉ ra được ưu điểm, nhược điểm của kiểu dữ liệu mảng
- Áp dụng được kiểu dữ liệu mảng để giải quyết các bài toán thực tế
Yêu cầu:
Bài 1 Xây dựng chương trình nhập và tính tổng các phần tử của mảng một chiều có độ dài N (với
N nhập vào từ bàn phím
❖ Cách làm
- Bước 1: Khai báo mảng một chiều và khởi tạo giá trị cho từng phần tử trong mảng một
chiều (sử dụng cấu trúc lặp for)
- Bước 2: Khai báo một biến lưu trữ S chứa tổng các phần tử trong mảng
- Bước 3: Dùng vòng lặp for dể duyệt qua các phần tử trong mảng, với mỗi lần duyệt cộng
thêm giá trị của phần tử vào biến lưu trữ S
static int[] a;//Khai báo mảng a
static int n;//Khai báo số phần tử cua mang
static void Main()
//In cac phần tử cho mảng a
for (int x = 0; i < a.Length; i++)
Trang 22Bài 2 Xây dựng chương trình nhập vào mảng một chiều, sau đó kiểm tra xem mảng đó có đối
xứng hay không (dùng chương trình con)
❖ Phân tích bài toán
- Dữ liệu nhập vào: mảng a[]
o Bước 2: Xây dựng hàm Main() gọi các chương trình con
❖ Chương trình minh họa
using System;
class Mang
{
static int[] a;//Khai báo mảng a
static int n;//Khai báo số phần tử cua mang
//In cac phần tử cho mảng a
static void hienthi()
{
foreach (int x in a)
Console.Write(x+ "\t");
}
//Kiem tra mảng doi xung
static bool isDX()
Trang 23- Bước 1: Khai báo và khởi tạo các giá trị của mảng một chiều
- Bước 2: Dùng 2 vòng for để duyệt qua mảng vừa khởi tạo, vòng for thứ nhất chạy từ 0→n-1, vòng for thứ 2 chạy từ vị trí thứ i+1 của vòng lặp thứ nhất đến n
- Tại mỗi lần lặp, kiểm tra xem giá trị tại phần tử thứ a[i]>a[j] hay không, nếu lớn hơn thì tiến hành đổi chỗ a[i] với a[j]
- Làm tương tự như vậy đến hết mảng ta sẽ thu được mảng sắp xếp với giá trị tăng dần
- Chú ý: cần chú ý thuật toán đổi chỗ hai phần tử của mảng
❖ Chương trình minh họa
using System;
class Mang
{
static int[] a;//Khai báo mảng a
static int n;//Khai báo số phần tử cua mang
//In cac phần tử cho mảng a
static void hienthi()
{
for (int i = 0; i < a.Length; i++)
Console.Write(a[i] + "\t");
}
//Sap xep cac phần tử trong mang
static void SXtang()
Trang 24Bài 4 Xây dựng chương trình khởi tạo mảng hai chiều với các giá trị bất kỳ, hãy tìm phần tử âm
đầu tiên trong mảng
❖ Phân tích bài toán
- Dữ liệu nhập vào: mảng a[,]
- Cách làm:
- Bước 1: Khai báo mảng 2 chiều, sau đó sử dụng 2 vòng for lồng nhau để khởi tạo
giá trị cho từng phần tử của mảng
- Bước 2: Duyệt qua từng phần tử của mảng (dùng 2 vòng for), tại mỗi bước kiểm
tra xem giá trị tại phần tử đó lớn hơn hay nhỏ hơn 0
+ Nếu <0→ thoát khỏi vòng lặp và in ta giá trị tại phần tử đó
+ Nếu>0 → tiếp tục duyệt cho đến khi hết mảng
❖ Chương trình minh họa
using System;
class MaTran
{
static int[,] a;//Khai báo ma tran a
static int n, m;//Khai báo số phần tử cua ma tran
static Random rd = new Random();
//Tao ngau nhien gia tri cho cac phần tử cho ma tran a
static void Nhap()
//In cac phần tử cho ma tran a
static void hienthi()
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Trang 25- Sắp xếp dãy theo thứ tự giảm dần
- Đếm xem có bao nhiêu học sinh có điểm yếu d<5? Bao nhiêu học sinh có điểm trung bình? bao nhiêu học sinh có điểm giỏi? Bao nhiêu học sinh có điểm xuất sắc? biết điểm trung bình nếu điểm khá nếu d trong đoạn [5,7); khá nếu d trong đoạn [7,8); giỏi nếu d trong đoạn [8,9); Xuất sắc nếu d trong đoạn [9,10]
- Sắp xếp dãy giảm dần, in dãy
Bài tập 4: Xây dựng thủ tục đổi số n > 0, ở hệ cơ số 10 sang hệ cơ số 2
Bài tập 5: Xây dựng chương trình nhập một danh sách tên học sinh của 1 lớp
- Hiển thị danh sách tên học sinh
Trang 26- Tìm xem trong lớp có học sinh nào có tên là lan hay không ?
- Sắp xếp tên các học sinh trong lơp theo thứ tự
2 Mức độ khó
Bài tập 1: Viết chương trình tính tổng các phần tử cực tiểu trong mảng các số nguyên ( phần tử
cực tiểu là phần tử nhỏ hơn các phần tử xung quanh nó )
Ví dụ : 6 4 2 9 5 3 7 1 5 8
Bài tập 2: Cho mảng các số nguyên a gồm n phần tử và số dương k ( k ≤ n ) Hãy chỉ ra số hạng
lớn thứ k của mảng Ví dụ: Mảng a: 6 3 1 10 11 18 k = 2 Kết quả: 10
Bài tập 3: Viết chương trình đếm và liệt kê các mảng con tăng dần trong mảng một chiều các số
nguyên Ví dụ: 6 5 3 2 3 4 2 7 các dãy con tăng dần là 2 3 4 và 2 7