tổng hợp các bài tập C# cơ bản
Trang 1ĐẠI HỌC HUẾ
Trường Đại học Kinh tế Khoa Hệ thống thông tin Kinh tế
Cơ sở lập trình Thực hành 3 : Các cấu trúc điều khiển
Giảng viên: Lê Viết Mẫn
Email: lvman@hce.edu.vn
Lệnh điều kiện
Câu 1 Viết lại câu 3 bài thực hành 3 để kiểm tra xem kích cỡ giày có trong khoảng 17-46 hay không Nếu kích cỡ giày nằm ngoài khoảng này thì thông báo “Đây không phải là kích cỡ giày của người Châu Á”
Câu 2 Tiền vé vào cửa ở một viện bảo tàng địa phương được tính như sau : miễn phí cho trẻ
em dưới 5 tuổi, từ 65 tuổi trở lên là $1.50 và những người khác là $2.50 Viết một lệnh if để in
ra entryFee (tiền vào cửa) có kiểu float theo giá trị nhập vào ageOfEntrant (tuổi của người vào cửa) theo kiểu int
Câu 3 Các bản tin dự báo thời tiết thường đề cập tới nhiệt độ trong ngày Với nhiệt độ theo
độ Fahrenheit có công thức tính như sau :
65 − (N hiệt độ cao trong ngày + Nhiệt độ thấp trong ngày)/2
Biểu thức trên là dương thì đó là ngày nhiệt độ nóng, còn nếu là âm thì đó là ngày nhiệt
độ lạnh Viết một lệnh if đưa ra ngày nhiệt độ nóng hay ngày nhiệt độ lạnh Sử dụng các biến nguyên highTemp và lowTemp, các biến thực degDays, heatingDegDays và coolingDegDays Câu 4 Chỉ số lạnh (wind-chill index) dưới -25 là nguy hiểm, dưới -75 là vô cùng nguy hiểm Sửa chương trình tính chỉ số gió lạnh để in ra câu cảnh báo thích hợp
Trang 2Câu 5 Một chỉ số về thời tiết ấm giống chỉ số gió lạnh là chỉ số khó chịu (discomfort index) cũng được gọi là chỉ số nhiệt độ - độ ẩm, được định nghĩa bằng :
discomf ortIndex = 0.4(dryT emp + wetT emp) + 15
Trong đó, dryTemp - “Nhiệt độ khô trên nhiệt kế” là nhiệt độ thông thường đo theo độ Fahrenheit và wetTemp - “Nhiệt độ ẩm trên nhiệt kế” là nhiệt độ theo độ Fahrenheit mà không khí có thể làm mát bằng cách làm bay hơi nước trong một áp suất không đổi Chỉ số lớn hơn
85 là rất khó chịu Viết một chương trình C# tính toán và in ra chỉ số khó chịu với các biến dryTemp và wetTemp nhập từ bàn phím và in ra một câu cho biết thời tiết có dễ chịu hay không Chương trình khi chạy sẽ có dạng như sau :
DISCOMFORT INDEX DETERMINATION
The dry-bulb temperature today is : 76
The wet-bulb temperature today is : 65
The discomfort index today is 71.4, a pleasant day
DISCOMFORT INDEX DETERMINATION
The dry-bulb temperature today is : 106
The wet-bulb temperature today is : 90
The discomfort index today is 93.4, very uncomfortable
Câu 6 Chỉ số độ ẩm H được định nghĩa :
H = T + h trong đó T là nhiệt độ hiện tại đo bằng ◦F và h là số độ ẩm được định nghĩa
h = e − 10
trong đó e là áp suất hơi nước theo millibar (1013.25 millibar = 760 millimet thủy ngân) Vùng khó chịu của độ ẩm là :
85 Mức độ khó chịu trung bình
100 Khó chịu với mọi người
115 Tất cả mọi hoạt động nên được hạn chế
Trang 3Viết một chương trình C# để tính và in ra độ ẩm, với việc nhập vào nhiệt độ và áp suất hơi nước Cũng in thêm một thông báo cho biết mức độ khó chịu
Câu 7 Sau đây là những quy định đối với thành viên quốc hội của Mỹ, được trích dẫn từ mục I trong hiến pháp Mỹ :
Người được chọn vào Hạ Nghị Viện phải là một người ít nhất 25 tuổi, có 7 năm là công dân
Mỹ và không phải là dân di cư đến bang họ được chọn ( eligibleForHouse : đủ tư cách vào
hạ nghị viện)
Thượng nghị sĩ Mỹ phải là người ít nhất 30 tuổi, có 9 năm là công dân Mỹ và không phải dân di cư tới bang họ được chọn ( eligileForSenate : đủ tư cách làm thượng nghị sĩ)
Với age là tuổi của người ứng cử và lengthOfCitizenShip là số năm là công dân Mỹ
Sử dụng biến nguyên age và lengthOfCitizenShip, viết các biểu thức để tính các giá trị đúng cho các biến eligibleForHouse và eligibleForSenate Sử dụng chúng viết một chương trình C# kiểm tra tiêu chuẩn ứng cử vào quốc hội (bỏ qua điều kiện về bang cư trú) khi chạy chương trình sẽ cho kết quả đầu ra dạng như sau :
CONGRESS ELIGIBILITY
Enter age of candidate : 37
Enter years of U.S citizenship : 3
The candidate is not eligible for election to either the House of Representative
or the Senate
CONGRESS ELIGIBILITY
Enter age of candidate : 47
Enter years of U.S citizenship : 8
The candidate is eligible for election to the House of Representative but not eligible for election to the Senate
CONGRESS ELIGIBILITY
Enter age of candidate : 35
Enter years of U.S citizenship : 25
The candidate is eligible for election to both the House of Representative and the Senate
Trang 4Câu 8 Trung tâm kiểm soát bệnh tật ở Atlanta, thuộc bang Georgia, xác định độ béo phì (obese) của một người thông qua chỉ số khối lượng cơ thể (body mas index) của người đó Chỉ
số này bằng trọng lượng (kg) chia cho bình phương chiều cao (m) Đối với một người đàn ông
có chỉ số là 27.8 hay hơn thì đã bị coi là béo Còn với một người phụ nữ không có thai thì giới hạn là 27.3 Viết chương trình đọc vào thông tin của một người theo : sex (giới tính), height (chiều cao), weight (cân nặng), tính ra chỉ số bodyMassIndex và đưa ra thông báo về mức độ béo
Dựa trên chỉ số trên hãy thông báo nguy cơ bị đau tim Nếu bodyMassIndex nhỏ hơn 25 là nguy cơ bị đau tim thấp, từ 25 đến dưới 30 là nguy cơ bị đau tim trung bình và lớn hơn 30 là nguy cơ bị đau tim cao
Chú ý : trong chương trình khi nhập vào theo inch và pound nên cần đổi về mét và kilogram (1 mét = 39.37 inch, 1 kg = 2.20 pound) Chương trình khi thực hiện sẽ cho kết quả đầu ra có dạng như sau :
OBESITY CALCULATION
Enter your sex (0 for male, 1 for female) : 0
Enter the height in inches : 68
Enter the weight in pounds : 154
Your body-mass-index 24.1851, you are not obese
Your risk of heart disease is very low to low
Lệnh lựa chọn
Câu 1 Viết một chương trình đọc vào một số nguyên n ≥ 0 và viết n thành số thứ tự với hậu
tố là : “th”, “st”, “sd” hay “nd” Chương trình khi chạy cho kết quả đầu ra có dạng :
Enter an integer >= 0 : 3
The ordinal form is 3rd
Câu 2 Giá bưu phẩm được tính theo quy tắc sau (với 1 ounce = 28,35 g) :
Loại một, trong nước : $0.32 cho ounce đầu tiên, $0.23 cho mỗi ounce sau
Loại thư gửi nước ngoài : $0.50 cho một nửa ounce
Bưu thiếp trong nước : $0.20
Gửi sách : $1.24 cho pound đầu tiên, 2-7 pounds $0.50 cho mỗi pound thêm, $0.31 cho mỗi pound thêm từ pound thứ 7 trở đi
Viết một câu lệnh switch để tính giá bưu phẩm khi gửi một món hàng với trọng lượng tính theo ounce (16 ounces = 1 pound) và các loại ở trong biến kiểu liệt kê postalClass
Trang 5Câu 3 Có các kiểu ngộ độc sau : thuốc cảm, rượu, thuốc lá, cờlo, thuốc diệt chuột, axit mạnh, kiềm mạnh, strychnine, xăng dầu Ngoại trừ ngộ độc vì trong axit mạnh, kiềm mạnh, strychinine và xăng dầu, để giải độc nói chung, cần phải cho uống một lượng lớn những thứ gây nôn mửa và các loại thuốc giải độc phổ biến Ngộ độc bởi axit mạnh, cho uống nước và sau
đó là thuốc muối magie-cacbonat hoặc natri cacbonat hòa tan; không được gây nôn Ngộ độc bởi kiềm mạnh, cho uống nước và sau đó là dấm hay nước chanh; không được gây nôn Nếu ngộ độc strychinine hay xăng dầu, không được gây nôn, gọi bác sĩ ngay lập tức ! Viết một câu lệnh switch sử dụng kiểu liệt kê poisonType (kiểu độc tố) để in ra cách điều trị thích hợp với từng loại ngộ độc
Câu 4 Nhà toán học nổi tiếng Carl Friedrich Gauss đề ra một cách tính ngày lễ phục sinh theo lịch hiện hành (lịch Gergorian) của năm N (nhỏ hơn hoặc bằng 1999) Định nghĩa :
M = 15 + C − f loor(C/4) − f loor(8C + 13)/25 và
L = 4 + C − f loor(C/4) trong đó C là chỉ số thế kỷ của năm N hay :
C = f loor(N/100)
Chia N cho 4, 7 và 19 được lần lượt các số dư a, b, c Chia 19C + M cho 30 được số dư d Chia 2a + 4b + 6d + L cho 7 được số dư e Sau đó ta có ngày lễ phục sinh là ngày (22 + d + e) của tháng 3 nếu d + e ≤ 9 nếu không ngày lễ phục sinh là ngày (d + e − 9) của tháng 4 Với các ngoại lệ :
1 d = 29 và e = 16 Ngày lễ phục sinh diễn ra sớm hơn một tuần vào ngày 19/04
2 d = 28 và e = 6 và m = 2, 5, 10, 13, 16, 21, 24, hay 29 Ngày lễ phục sinh được diễn ra sớm hơn một tuần vào ngày 18/04
Viết một chương trình tính ngày lễ phục sinh Khi chạy chương trình cho kết quả như sau : CALCULATION OF THE DATE OF EASTER
Enter the year : 1986
The date of Easter is March 30
CALCULATION OF THE DATE OF EASTER
Trang 6Enter the year : 1985
The date of Easter is April 7
Câu 5 Viết một chương trình tính ngày sau ngày đã nhập Chương trình cần phải tính toán
các năm nhuận Chương trình cần kiểm tra tính hợp lệ của ngày nhập vào Chương trình khi
thực hiện cho kết quả như sau :
TOMORROW’S DATE
Enter the day for today’s date : 22
Enter the month for today’s date : 10
Enter the year for today’s date : 1986
Tomorrow’s date is 23/10/1986
TOMORROW’S DATE
Enter the day for today’s date : 31
Enter the month for today’s date : 12
Enter the year for today’s date : 1886
Tomorrow’s date is 1/1/1887
Câu 6 Một dược phẩm cho trẻ em được quy định : ở dạng nước chứa 1.23 gren (1 gren =
0.0648 gam) một ống, dạng xiro chứa 2.46 gren một thìa cà phê và ở dạng viên thuốc nhai
chứa 1.23 gren một viên Liều lượng qui định là 0.0931 gren một pound đối với trẻ nặng 7-110
pound Nếu dạng ống, cho uống mỗi lần nữa ống nhưng không được vượt quá 3 ống đầy Nếu
dạng xiro, mỗi lần từ một phần tư thìa cà phê tới một thìa hoặc từng nữa thìa một nếu uống
nhiều hơn một thìa Thuốc viên không được bẻ vỡ và không dùng cho trẻ dưới 27 pounds Liều
lượng thuốc cho phép được dao động quanh giá trị quy định gần nhất (ví dụ : quy định 0.65
thìa xiro thì có thể được tới 0.75) Viết một chương trình đọc vào cân nặng đứa trẻ theo pound
và in ra liều lượng đúng của dược phẩm (thuốc nước : drop, xiro : syrup, thuốc viên : tablet)
Sau đây là kết quả thực hiện chương trình :
DOSAGE CALCULATOR
Enter the child’s weight in pounds : 38
Recommended dosage is 3.0 droppers of drops or 1.5 teaspoons of syrup or 3 tablets
Trang 7Câu lệnh lặp - for
Câu 1 Viết chương trình in ra nhiệt độ Fahrenheit tương ứng với các nhiệt độ từ -10 ◦C đến
10 ◦C Chú ý : xem lại câu 1 bài thực hành 3
Câu 2 Viết chương trình in lịch theo tháng, năm và kiểu lịch như sau :
October, 1948
Sun Mon Tue Wed Thu Fri Sat
31
Các giá trị cần phải biết để có thể in lịch :
1 Tính số ngày từ 01/01 của năm in lịch đến ngày 01 tháng cần in lịch (gọi số ngày này là dayNumber)
2 Tính số ngày tuyệt đối (absoluteDay) - là số ngày từ ngày đầu tiên sau công nguyên đến ngày 01 tháng năm cần in lịch, theo công thức sau :
absoluteDay = dayN umber+365∗(year−1)+(year−1)/4−(year−1)/100+(year−1)/400
3 Tính thứ của ngày đầu tiên trong tháng dựa vào số ngày tuyệt đối (chia cho 7 lấy phần dư) và ngày của thứ bảy đầu tiên trong tháng
4 Tính số ngày trong tháng (lastDay = 28, 29, 30 hay 31)
Câu 3 Viết chương trình tính giá trị P n
i=1
√ i
Câu 4 Một trường đại học nổi tiếng thường gửi các hóa đơn thanh toán cho các khoa vào ngày 21 hàng tháng Nếu ngày 21 rơi vào thứ bảy hoặc chủ nhật thì hóa đơn được gửi vào ngày thứ 6 trước đó Viết một chương trình in ra danh sách các thứ và ngày hóa đơn gửi của các tháng trong năm được nhập vào
Chú ý : cần xác định xem ngày 21 mỗi tháng là thứ mấy (xem lại câu 2 ở trên)
Câu 5 Dãy số Fibonacci : 0, 1, 1, 2, 3, 5, 8, được xác định theo quy luật là số sau bằng tổng của hai số đứng trước Viết một chương trình in ra 20 số Fibonacci đầu tiên (sử dụng
Trang 8Câu 6 Viết một chương trình đọc vào 1 năm, xác định tháng nào sẽ có thứ sáu vào ngày 13 Kết quả ra có dạng :
OCCURRENCES OF FRIDAY THE 13TH
Enter a year : 1903
Friday the 13th occurs in February March November
OCCURRENCES OF FRIDAY THE 13TH
Enter a year : 1975
Friday the 13th occurs in June
Câu 7 Viết chương trình in các thứ trong tuần và số lần ngày sinh nhật của một người trùng với thứ đó tính từ năm 2000 đến 2999
Câu 8 Viết chương trình in ra tổng các chữ số của mỗi số nguyên từ 150 đến 180 Kết quả
có dạng
SUM OF DIGITS
number sum
Câu 9 Viết chương trình liệt kê tất cả các số nhỏ hơn 3000 thỏa mãn điều kiện : số đó bằng tổng lập phương các chữ số của nó Ví dụ : 153 = 13+ 53+ 33
Câu lệnh lặp - while
Câu 1 Bài toán cổ về bà già và rổ trứng : Một kỵ sĩ va phải một bà già đang trên đường
ra chợ làm vỡ toàn bộ số trứng trong rổ Anh ta muốn đền rổ trứng nhưng bà già không biết chính xác mình có bao nhiêu trứng Bà già chỉ biết nếu bỏ trứng vào rổ 2 quả một thì lẻ 1 quả, tương tự nếu bỏ 3 quả một, 4 quả một, 5 quả một và 6 quả một thì đều lẻ 1 quả còn nếu bỏ 7 quả một thì vừa chẵn Hỏi bà già có thể mang ít nhất bao nhiêu quả trứng Lập trình giải bài toán trên
Câu 2 Viết chương trình reverseDigits đọc vào một số nguyên và in ra một số là số nguyên ban đầu với các chữ số bị đảo ngược thứ tự Kết quả ra có dạng :
DIGIT REVERSAL
Trang 9Enter a positive integer : 12345
The integer with digits reversed is : 54321
Chương trình phải bỏ qua các chữ số 0 ở đầu nếu có Ví dụ : đọc vào 12000 thì in ra 21
Câu 3 Một số mà bằng với số đảo ngược của số đó thì được gọi là palindrome Ví dụ 121 là
số palindrome còn 41 thì không Sử dụng câu 2 ở trên để viết chương trình cho phép nhập vào một số và thông báo số đó có phải là số palindrome hay không
Câu 4 Xét quá trình sau : bắt đầu từ một số nguyên dương không phải là số palindrome, giả sử số 48 Lấy 48 + 84 = 132 Vì 132 không phải số palindrome nên ta lấy 132 + 231 = 363
là số palindrome và dừng lại Viết chương trình đọc vào một số nguyên và áp dụng quá trình trên cho đến khi tìm được số palindrome Chú ý điều kiện dừng của vòng lặp trước khi một số nguyên vượt quá giới hạn kiểu int trong máy tính Ví dụ nếu bắt đầu bằng 89 thì với các số nguyên 32-bit không thể tìm được số palindrome
Câu 5 Xét một quá trình áp dụng cho một số nguyên dương : Nếu số đó là lẻ thì nhân lên 3 rồi cộng 1 Nếu số đó là chẵn thì chia nó cho 2 Quá trình này lặp đến khi số nguyên còn lại là
1 Ví dụ : với số 34, ta phải tiến hành 13 bước và có kết quả là 34, 17, 52, 26, 13, 40, 20, 10, 5,
16, 8, 4, 2, 1
Viết chương trình áp dụng quá trình trên cho các số nguyên từ 1 đến 1000 Sau đó, đưa ra
số bước lớn nhất cần cho quá trình, số trung gian lớn nhất được tạo ra
Tổng hợp
Câu 1 Bài toán thị trường chứng khoán : đọc vào giá trị của cổ phiếu cho các ngày liên tiếp nhau và tìm ra 2 ngày tốt nhất để bán và mua cổ phiếu sao cho thu lợi cao nhất Kết quả ra
có dạng :
STOCK MARKET PROBLEM
Enter value of stock on day 1 : $ 17
Enter value of stock on day 1 : $ 18
Enter value of stock on day 1 : $ 16
Enter value of stock on day 1 : $ 17
Enter value of stock on day 1 : $ 21
Enter value of stock on day 1 : $ 19
Enter value of stock on day 1 : $ 20
Enter value of stock on day 1 : $ ^D
Trang 10Câu 2 Một bảng khấu hao vốn biểu diễn lịch trả tiền lãi hàng tháng cho một khoản vay Ta
có công thức tính phần lãi tháng :
L˜ai = Số dư x L˜aisuất
12
và phần được áp dụng cho vốn gốc là
V ốn gốc = Nợ đã trả - Lãi
và số dư sẽ là
Số dư còn lại = Số dư - Vốn gốc
Ví dụ : Với lãi suất 5.5% của khoản vay $20178.45 và số tiền thực trả hàng tháng là $187.35, chương trình cần ra kết quả như sau :
Enter amount of loan : $ 20178.45
Enter interest rate : 0.055
Enter monthly payment : $ 187.35
Schedule of direct reduction loan
Loan : $ 20178.45
Rate : 5.5%
Monthly Payment : $ 187.35
Payment Interest Principal Balance
20178.45
Chúc các bạn thực hành tốt !