


















Preview text:
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
MÔN LẬP TRÌNH TRỰC QUAN
BÀI TẬP THỰC HÀNH 1 GVHD: Nguyễn Ngọc Quí
Sinh viên thực hiện: Nguyễn Tấn Đạt - 24520280
Tp. Hồ Chí Minh, 09/2025
IT008 – LẬP TRÌNH TRỰC QUAN
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
Thứ 2, ngày 22 tháng 9 năm 2025 Người nhận xét
(Ký tên và ghi rõ họ tên) 2 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN MỤC LỤC 3 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN DANH MỤC BẢNG
Bảng 2: Code của chương trình tạo số ngẫu nhiên ..................................................................... 5
Bảng 3: Code của chương trình tính tổng các số nguyên tố ...................................................... 8
Bảng 4: Code của chương trình nhập ngày tháng năm ............................................................. 10
Bảng 5: Code của chương trình tính số ngày của một tháng .................................................... 12
Bảng 6: Code của chương trình tìm thứ trong ngày ................................................................. 14
Bảng 7: Code của chương trình thao tác trên ma trận .............................................................. 17 4 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
Bài 1: Viết chương trình cho phép tạo mảng một chiều gồm n số nguyên
ngẫu nhiên. Cài đặt hàm thực hiện các chức năng sau:
a. Tính tổng các số lẻ trong mảng
b. Đếm số nguyên tố trong mảng
c. Tìm số chính phương nhỏ nhất (nếu không có hàm trả về -1 )
Mô tả input, output của bài toán
- Input: Một mảng có số phần tử ngẫu nhiên, và có giá trị phần tử ngẫu nhiên
- Output: tổng các số lẻ, số lượng các số nguyên tố, số lượng các số chính phương
Bảng 1: Code của chương trình tạo số ngẫu nhiên namespace BTTH01 { internal class Program { class MyArray { public List myArray; public MyArray() { myArray = TaoMang(); }
// - Tạo mãng với số phần tử ngẫu nhiên, giá trị phần tử nhẫu nhiên public static List TaoMang() { List list = new List();
Random random = new Random();
int randomNumber = random.Next(1, 100); // Tạo ngẫu nhiên số phần tử
for(int i = 0; i < randomNumber; i++) list.Add(random.Next(- 19999999, 19999999)); return list; } public long TongCacSoLe() { long sum = 0;
myArray.ForEach( x => sum += (x%2 !=0 ) ? x : 0 ); return sum; }
public List SoChinhPhuongNhoNhat() {
var cacSoChinhPhuong = myArray.Where( x => { if (x <= 0) return false;
int sqrt = (int)Math.Sqrt( x ); return x == sqrt * sqrt; });
if ( cacSoChinhPhuong.Count() == 0 ) return new List(); 5 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
int min = cacSoChinhPhuong.Min();
return cacSoChinhPhuong.Where(x => x == min ).ToList(); } public int SoCacSoNguyenTo() {
var laSoNguyenTo = (int x) => { if (x < 2) return false;
for (int i = 2; i < Math.Sqrt(x); i++)
if (x % i == 0) return false; return true; }; int dem = 0; myArray.ForEach(x => {
if (laSoNguyenTo(x) == true) dem++; }); return dem; } public void Run() {
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine( "So phan tu cua mang "+ myArray.Count); Console.ResetColor();
Console.WriteLine("Cac phan tu cua mang");
myArray.ForEach(x => Console.Write(x + " ")); Console.WriteLine();
Console.ForegroundColor= ConsoleColor.Green;
Console.WriteLine("Thong ke: "); Console.ResetColor();
Console.WriteLine(" + Tong cac so le: " + TongCacSoLe());
Console.WriteLine(" + So cac so nguyen to: " + SoCacSoNguyenTo() ) ;
Console.Write(" + Cac so chinh phuong nho nhat: ");
var kq = SoChinhPhuongNhoNhat();
if (kq == null || kq.Count == 0) Console.WriteLine(-1);
kq.ForEach(x => Console.Write(x + " ")); Console.WriteLine(); } }
static void Main(string[] args) {
for (int i = 0; i < 10; i++) {
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Truong hop thu " + (i + 1)); Console.ResetColor();
MyArray test = new MyArray(); test.Run(); } } } }
Kết quả của chương trình: 6 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN 7 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
Bài 2: Viết chương trình nhập số nguyên dương n, tính tổng các số nguyên tố < n
và xuất kết quả ra màn hình.
Mô tả input, output của bài toán
- Input: một số nguyên dương n
- Output: tổng các số nguyên tố bé hơn n
Bảng 2:Code của chương trình tính tổng các số nguyên tố internal class Program {
static void Main(string[] args) { int n = 0; bool viPham = false; do {
Console.Write("Nhap so n :"); try {
n = int.Parse(Console.ReadLine()); viPham = false; } catch (FormatException) { viPham = true; }
} while (viPham || n <= 0);
// Đếm ước của các số < n int[] arr = new int[n];
for (int i = 1; i < n; i++) {
for (int j = i; j < n; j += i) { arr[j]++; } 8 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN } int tong = 0 ;
// Những phần tử có số ước = 2 -> số nguyên tố
for (int i = 0; i < arr.Length; i++) {
tong += (arr[i] == 2) ? i : 0; }
Console.WriteLine($"Tong cac so nguyen to be hon {n} : {tong}" ); } }
Kết quả của chương trình: 9 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
Bài 3:Viết chương trình nhập ngày tháng năm, cho biết ngày tháng năm đó có hợp lệ không?
Mô tả input, output của bài toán
- Input: nhập vào ngày tháng năm
- Output: cho biết ngày đó có hợp vệ không
Bảng 3:Code của chương trình nhập ngày tháng năm internal class ThoiGian { int ngay; int thang; int nam;
static List gioiHanNgay = new List() { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
public ThoiGian(int ngay_ = 0, int thang_ = 0, int nam_ = 0) { ngay = ngay_; thang = thang_; nam = nam_; }
static public bool laNamNhuan(int nam_) {
return (nam_ % 4 == 0 && nam_ % 100 != 0) || nam_ % 400 == 0; } public bool laNamNhuan() { return laNamNhuan(nam); }
static public int GioiHanNgay(int thang_, int nam_) {
if (thang_ == 2 && laNamNhuan(nam_)) return gioiHanNgay[thang_ - 1] + 1;
else return gioiHanNgay[(int)thang_ - 1]; } public int GioiHanNgay() {
return GioiHanNgay(thang, nam); } // ===== Hàm nhập ===== public void Nhap() { do { Console.Write("Nhap nam: ");
nam = int.Parse(Console.ReadLine());
Console.Write("Nhap thang: ");
thang = int.Parse(Console.ReadLine());
Console.Write("Nhap ngay: ");
ngay = int.Parse(Console.ReadLine());
if (thang < 1 || thang > 12 || ngay < 1 || ngay > GioiHanNgay(thang, nam)) {
Console.WriteLine("Ngay thang nam khong hop le, moi nhap lai"); 10 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN } else break; } while (true); } }
Kết quả của chương trình: 11 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
Bài 4: Viết chương trình nhập vào tháng và năm. In ra số ngày của tháng đó.
Mô tả input, output của bài toán
- Input: nhập vào tháng và năm
- Output: số ngày tối đa của tháng đó
Bảng 4: Code của chương trình tính số ngày của một tháng internal class ThoiGian { int ngay; int thang; int nam;
static List gioiHanNgay = new List() { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
public ThoiGian(int ngay_ = 0, int thang_ = 0, int nam_ = 0) { ngay = ngay_; thang = thang_; nam = nam_; }
static public bool laNamNhuan(int nam_) {
return (nam_ % 4 == 0 && nam_ % 100 != 0) || nam_ % 400 == 0; } public bool laNamNhuan() { return laNamNhuan(nam); }
static public int GioiHanNgay(int thang_, int nam_) {
if (thang_ == 2 && laNamNhuan(nam_)) return gioiHanNgay[thang_ - 1] + 1;
else return gioiHanNgay[(int)thang_ - 1]; } public int GioiHanNgay() {
return GioiHanNgay(thang, nam); } public void XuatGioiHanNgay() { do { Console.Write("Nhap nam: ");
nam = int.Parse(Console.ReadLine());
Console.Write("Nhap thang: ");
thang = int.Parse(Console.ReadLine());
if (thang < 1 || thang > 12 || nam < 0 ) {
Console.WriteLine("Ngay thang nam khong hop le, moi nhap lai"); } else {
Console.WriteLine($"Ngay cua thang {thang} la {GioiHanNgay()}"); break; } 12 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN } while (true); } }
Kết quả của chương trình: 13 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
Bài 5: Viết chương trình nhập vào ngày tháng năm, cho biết thứ trong tuần.
Mô tả input, output của bài toán
- Input: nhập vào ngày tháng năm
- Output: thứ ứng với ngày tháng năm vừa nhập
Bảng 5: Code của chương trình tìm thứ trong ngày using System;
using System.Collections.Generic;
using System.Collections.Specialized; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BTTH01 { internal class ThoiGian { int ngay; int thang; int nam;
static List gioiHanNgay = new List() { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
public ThoiGian(int ngay_ = 0, int thang_ = 0, int nam_ = 0) { ngay = ngay_; thang = thang_; nam = nam_; }
static public bool laNamNhuan(int nam_) {
return (nam_ % 4 == 0 && nam_ % 100 != 0) || nam_ % 400 == 0; } public bool laNamNhuan() { return laNamNhuan(nam); }
static public int GioiHanNgay(int thang_, int nam_) {
if (thang_ == 2 && laNamNhuan(nam_)) return gioiHanNgay[thang_ - 1] + 1;
else return gioiHanNgay[(int)thang_ - 1]; } public int GioiHanNgay() {
return GioiHanNgay(thang, nam); }
public void XuatGioiHanNgay() { do { Console.Write("Nhap nam: ");
nam = int.Parse(Console.ReadLine());
Console.Write("Nhap thang: ");
thang = int.Parse(Console.ReadLine());
if (thang < 1 || thang > 12 || nam < 0 ) { 14 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
Console.WriteLine("Ngay thang nam khong hop le, moi nhap lai"); } else {
Console.WriteLine($"Ngay cua thang {thang} la {GioiHanNgay()}"); break; } } while (true); } public void Nhap() { do { Console.Write("Nhap nam: ");
nam = int.Parse(Console.ReadLine());
Console.Write("Nhap thang: ");
thang = int.Parse(Console.ReadLine());
Console.Write("Nhap ngay: ");
ngay = int.Parse(Console.ReadLine());
if (thang < 1 || thang > 12 || ngay < 1 || ngay > GioiHanNgay(thang, nam)) {
Console.WriteLine("Ngay thang nam khong hop le, moi nhap lai"); } else break; } while (true); } // ===== Hàm xuất ===== public void Xuat() {
Console.WriteLine($"{ngay:D2}/{thang:D2}/{nam:D4}"); }
// ===== Hàm tính thứ trong ngày ===== public string ThuTrongNgay() { int d = ngay; int m = thang; int y = nam; if (m < 3) { m += 12; y--; } int k = y % 100; int j = y / 100;
int h = (d + (13 * (m + 1)) / 5 + k + k / 4 + j / 4 + 5 * j) % 7;
string[] thu = { "Thu Bay", "Chu Nhat", "Thu Hai", "Thu Ba", "Thu Tu", "Thu Nam", "Thu Sau" }; 15 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN return thu[h]; } } }
Kết quả của chương trình: 16 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
Bài 6: Viết chương trình cho phép tạo ma trận chứa các số nguyên ngẫu nhiên gồm n dòng, m cột.
Thực hiện các yêu câu sau: a. Xuất ma trận
b. Tìm phần tử lớn nhất/nhỏ nhất
c. Tìm dòng có tổng lớn nhất
d. Tính tổng các số không phải là số nguyên tố
e. Xóa dòng thứ k trong ma trận
f. Xóa cột chứa phần tử lớn nhất
Mô tả input, output của bài toán
- Input: kích thước của ma trận, dòng k muốn xóa
- Output: xuất ra ma trận, phần tử lớn nhất,nhỏ nhất, dòng có tổng lớn nhất, tổng các số
không phải là số nguyên tố, ma trận sau khi xóa dòng k, ma trận sau khi xóa dòng
chứa phần tử lớn nhất.
Bảng 6: Code của chương trình thao tác trên ma trận using System;
using System.Security.Cryptography; namespace BTTH01 { internal class MaTran { int[,] a; int n, m; Random rnd = new Random(); public MaTran(int n, int m) { this.n = n; this.m = m; a = new int[n, m];
// Tạo ma trận ngẫu nhiên
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) a[i, j] = rnd.Next(1, 100); } // Xuất ma trận public void Xuat() {
Console.WriteLine("Ma tran:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
Console.Write(a[i, j] + "\t"); Console.WriteLine(); } }
// Tìm phần tử lớn nhất / nhỏ nhất
public void TimMaxMin(out int max, out int min) 17 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN { max = a[0, 0]; min = a[0, 0];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) {
if (a[i, j] > max) max = a[i, j];
if (a[i, j] < min) min = a[i, j]; } }
// Tìm dòng có tổng lớn nhất public int DongTongLonNhat() {
int dongMax = 0, tongMax = int.MinValue;
for (int i = 0; i < n; i++) { int tong = 0;
for (int j = 0; j < m; j++) tong += a[i, j]; if (tong > tongMax) { tongMax = tong; dongMax = i; } } return dongMax; }
// Tính tổng các số không nguyên tố
public int TongKhongNguyenTo() { int tong = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (!LaNguyenTo(a[i, j])) tong += a[i, j]; return tong; } bool LaNguyenTo(int x) { if (x < 2) return false;
for (int i = 2; i * i <= x; i++)
if (x % i == 0) return false; return true; } // Xóa dòng k public void XoaDong(int k) {
if (k < 0 || k >= n) return;
Console.WriteLine($"Ma tran sau khi xoa dong {k}:");
for (int i = 0; i < n; i++) { if (i == k) continue;
for (int j = 0; j < m; j++)
Console.Write(a[i, j] + "\t"); Console.WriteLine(); } }
// Xóa cột chứa phần tử lớn nhất public void XoaCotMax() {
int max = a[0, 0], cotXoa = 0;
for (int i = 0; i < n; i++) 18 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN
for (int j = 0; j < m; j++) if (a[i, j] > max) { max = a[i, j]; cotXoa = j; }
Console.WriteLine($"Ma tran sau khi xoa cot {cotXoa} (co phan tu lon nhat {max}):");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) { if (j == cotXoa) continue;
Console.Write(a[i, j] + "\t"); } Console.WriteLine(); } } } }
Kết quả của chương trình: 19 | P a g e
IT008 – LẬP TRÌNH TRỰC QUAN 20 | P a g e
