ĐẠI HC QUC GIA THÀNH PH H CHÍ MINH
TRƯỜNG ĐẠI HC CÔNG NGH THÔNG TIN
KHOA CÔNG NGH PHN MM
MÔN LP TRÌNH TRC QUAN
BÀI TP THC HÀNH 1
GVHD: Nguyn Ngc Quí
Sinh viên thc hin: Nguyn Tấn Đạt - 24520280
 Tp. Hồ Chí Minh, 09/2025 
IT008 LP TRÌNH TRC QUAN
2 | P a g e
NHN XÉT CỦA GIÁO VIÊN HƯỚNG DN
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
Th 2, ngày 22 tháng 9 năm 2025
Ngưi nhn xét
(Ký tên và ghi rõ hn)
IT008 LP TRÌNH TRC QUAN
3 | P a g e
MC LC
IT008 LP TRÌNH TRC QUAN
4 | P a g e
DANH MC BNG
Bng 2: Code của chương trình tạo s ngu nhiên ..................................................................... 5
Bng 3: Code của chương trình tính tổng các s nguyên t ...................................................... 8
Bng 4: Code của chương trình nhập ngày tháng năm ............................................................. 10
Bng 5: Code của chương trình tính số ngày ca mt tháng .................................................... 12
Bng 6: Code của chương trình tìm thứ trong ngày ................................................................. 14
Bng 7: Code của chương trình thao tác trên ma trận .............................................................. 17
IT008 LP TRÌNH TRC QUAN
5 | P a g e
Bài 1: Vit chương trnh cho php to mng mt chiu gm n s nguyên
ngu nhiên. Ci đặt hàm thc hin các chc năng sau:
a. Tính tng các s l trong mng
b. Đm s nguyên t trong mng
c. Tìm s chính phương nhỏ nht (nu không có hàm tr v -1 )
Mô t input, output ca bài toán
- Input: Mt mng có s phn t ngu nhiên, và có giá tr phn t ngu nhiên
- Output: tng các s l, s ng các s nguyên t, s ng các s chính phương
Bng 1: Code của chương trình tạo s ngu nhiên
namespace BTTH01
{
internal class Program
{
class MyArray
{
public List<int> myArray;
public MyArray()
{
myArray = TaoMang();
}
// - To mãng vi s phn t ngu nhiên, giá tr phn t nhu nhiên
public static List<int> TaoMang()
{
List<int> list = new List<int>();
Random random = new Random();
int randomNumber = random.Next(1, 100); // To ngu nhiên s
phn 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<int> 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<int>();
IT008 LP TRÌNH TRC QUAN
6 | P a g e
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();
}
}
}
}
Kt qu của chương trình:
IT008 LP TRÌNH TRC QUAN
7 | P a g e
IT008 LP TRÌNH TRC QUAN
8 | P a g e
Bài 2: Vit chương trnh nhp s nguyên dương n, tnh tng các s nguyên t < n
và xut kt qu ra màn hình.
Mô t input, output ca bài toán
- Input: mt s nguyên dương n
- Output: tng các s nguyên t bé hơn n
Bng 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 ca 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]++;
}
IT008 LP TRÌNH TRC QUAN
9 | P a g e
}
int tong = 0 ;
// Nhng phn 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}" ); }
}
Kt qu của chương trình:
IT008 LP TRÌNH TRC QUAN
10 | P a g e
Bài 3:Vit chương trnh nhp ngy thng năm, cho bit ngy thng năm đ c
hp l không?
Mô t input, output ca 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
Bng 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<int> gioiHanNgay = new List<int>() { 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 nhp =====
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");
IT008 LP TRÌNH TRC QUAN
11 | P a g e
}
else break;
} while (true);
}
}
Kt qu của chương trình:
IT008 LP TRÌNH TRC QUAN
12 | P a g e
Bài 4: Vit chương trnh nhp vo thng v năm. In ra s ngy ca thng đ.
Mô t input, output ca 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 đó
Bng 4: Code của chương trình tính số ngày ca mt tháng
internal class ThoiGian
{
int ngay;
int thang;
int nam;
static List<int> gioiHanNgay = new List<int>() { 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;
}
IT008 LP TRÌNH TRC QUAN
13 | P a g e
} while (true);
}
}
Kt qu của chương trình:
IT008 LP TRÌNH TRC QUAN
14 | P a g e
Bài 5: Vit chương trnh nhp vo ngy thng năm, cho bit th trong tun.
Mô t input, output ca 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 nhp
Bng 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<int> gioiHanNgay = new List<int>() { 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 )
{
IT008 LP TRÌNH TRC QUAN
15 | P a g e
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 xut =====
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" };
IT008 LP TRÌNH TRC QUAN
16 | P a g e
return thu[h];
}
}
}
Kt qu của chương trình:
IT008 LP TRÌNH TRC QUAN
17 | P a g e
Bài 6: Vit chương trnh cho php to ma trn cha các s nguyên ngu nhiên
gm n dòng, m ct.
Thc hin các yêu câu sau:
a. Xut ma trn
b. Tìm phn t ln nht/nh nht
c. Tìm dòng có tng ln nht
d. Tính tng các s không phi là s nguyên t
e. Xóa dòng th k trong ma trn
f. Xóa ct cha phn t ln nht
Mô t input, output ca bài toán
- Input: kích thước ca ma trn, dòng k mun xóa
- Output: xut ra ma trn, phn t ln nht,nh nht, dòng có tng ln nht, tng các s
không phi là s nguyên t, ma trn sau khi xóa dòng k, ma trn sau khi xóa dòng
cha phn t ln nht.
Bng 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];
// To ma trn ngu nhiên
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[i, j] = rnd.Next(1, 100);
}
// Xut ma trn
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 phn t ln nht / nh nht
public void TimMaxMin(out int max, out int min)
IT008 LP TRÌNH TRC QUAN
18 | P a g e
{
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ó tng ln nht
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 tng 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 ct cha phn t ln nht
public void XoaCotMax()
{
int max = a[0, 0], cotXoa = 0;
for (int i = 0; i < n; i++)
IT008 LP TRÌNH TRC QUAN
19 | P a g e
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();
}
}
}
}
Kt qu của chương trình:
IT008 LP TRÌNH TRC QUAN
20 | P a g e

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