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

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

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 (147.15 KB, 6 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ố 2 : CÁC CÂU LỆNH RẼ NHÁNH
1. MỤC TIÊU
1.1. Phân tích được yêu cầu bài toán
1.2. Phân tích thành các trường hợp để xử lý bài toán
2. BÀI TẬP THỰC HÀNH
2.1. Chương trình tính tiền điện
2.2. Xác định loại tam giác khi biết độ lớn 3 cạnh
2.3. Một số bài tập đề nghị
3. XÁC ĐỊNH LỖI TRONG CHƯƠNG TRÌNH MẪU
3.1. Tìm số lớn nhất/bé nhất trong 4 số nguyên
3.2. Chương trình tính biểu thức theo công thức cho trước
2. BÀI TẬP THỰC HÀNH
Trong phần này, chúng tôi đưa ra cách giải một số bài tập trong sách giáo khoa.
Để có thể nắm bắt vấn đề tốt, đề nghị các anh chị tham khảo kỹ lý thuyết giáo khoa,
các bài tập mẫu; đồng thời tự rèn luyện, đưa ra các giải quyết cho mình đối với các
bài tập sau (cũng như các bài còn lại trong giáo trình):
2.1. Chương trình tính tiền điện
• Đề bài :
Nhập họ tên một chủ hộ, định mức điện hàng tháng của hộ, chỉ số điện kế
tháng trước và tháng này. Hãy tính tiền điện cho hộ, biết rằng :
- Mỗi kW trong định mức có đơn giá là 5đ,
- 100 kW đầu tiên trên định mức có đơn giá 8đ,
- Từ kW thứ 101 trên định mức trở lên có đơn giá 10đ.
• Phân tích bài toán :
Cách giải quyết đưa ra là so sánh số kW điện mà chủ hộ sử dụng, tính số tiền
tương ứng cho các mức tiêu thụ khác nhau, rồi cộng lại.
Ta có chương trình minh họa VD2_1.cpp.


• Chương trình minh họa :
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
//Khai báo biến
string strTenCH[80]; //Tên chủ hộ
int nDinhMuc, nThangTruoc, nThangNay;
int nSoDien, nSoTien;

//Yêu cầu nhập thông tin
printf(‘Nhap ten chu ho:’);
scanf(“%s”,&strTenHo);
printf(‘Dinh muc dien hang thang:’);
scanf(“%d”, &nDinhMuc);
printf(‘Chi so dien thang truoc:’);
scanf(“%d”,&nThangTruoc);
printf(‘Chi so dien thang nay:’);
scanf(“%d”, &nThangNay);
//Tính số tiền cần trả
nSoDien = nThangNay – nThangTruoc;
if (nSoDien <= nDinhMuc)
nSoTien = nSoDien*5;
else
if (nSoDien <= nDinhMuc + 100)
nSoTien = nDinhMuc*5 + (nSoDien – nDinhMuc)*8;
else
nSoTien = nDinhMuc*5 + 100*8 + (nSoDien – nDinhMuc
– 100)*10;

//Xuất thông tin
printf(‘So tien ma chu ho %s can phai tra la : %d dong.’, sTenCH,
nSoTien);
getch();
}


• Nhận xét :
Chương trình trên chỉ đúng khi các thông tin về sử dụng điện là đúng. Trong
trường hợp nhập sai, ví dụ chỉ số điện tháng này bé hơn tháng trước (?), kết quả sẽ
không chính xác. Đề nghị các anh chị cải tiến lại chương trình (và có thể đưa
thêm các nhận xét khác).
2.2. Xác định loại tam giác khi biết độ lớn 3 cạnh
• Đề bài :
Nhập ba số nguyên a, b, c . Cho biết a, b, c có phải là độ dài ba cạnh của một
tam giác không ; nếu là ba cạnh của một tam giác thì cho biết đó làm tam giác gì:
đều, cân, vuông cân, vuông hay tam giác thường ?
• Phân tích bài toán:
Như đã biết, để a, b, c có thể là ba cạnh của một tam giác thì ta phải có a>0,
b>0, c>0, (a+b)>c, (b+c)>a và (c+a)>b. Chúng tôi sử dụng toán tử logic &&
trong câu lệnh điều kiện if để kiểm tra ba giá trị được nhập. Sau đó, kiểm tra xem
là tam giác gì.
• Chương trình minh họa :
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
int a, b, c;
printf(‘Cho biet gia tri can xac dinh: ‘);

scanf(“%d”, “%d”, “%d”, &a, &b, &c);
if ((a>0) && (b>0) && (c>0) && (a+b>c) && (b+c>a) && (c+a>b))
{
if ((a*a + b*b = c*c) ||
(b*b + c*c = a*a ) ||
(c*c + a*a = b*b)))
{
printf(‘Đây là tam giác vuông.’);
if ((a=b) || (b=c) || (c=a))
printf(‘ cân.’); {Nối vào cuối dòng output ở trên}
}
else
if ((a=b) && (b=c))
printf(‘Đây là tam giác đều.’);
else
if ((a=b) || (b=c) || (c=a))
printf(‘Đây là tam giác cân.’);
else
printf(‘Đây là tam giác thường.’);
}
else
printf(‘Ba giá trị %d %d %d không phải là độ dài 3 cạnh của một
tam giác’, a, b, c);
getch();
}
• Nhận xét :
Để kiểm tra điều kiện cho 3 giá trị nhập vào, ở đây ta dùng toán tử &&. Tuy
nhiên, các anh chị cũng có thể so sánh với toán tử ||.
2.3. Một số bài tập đề nghị
 Bài tập 1:

Nhập một chữ cái, nếu là chữ thường thì đổi thành chữ hoa, ngược lại, nếu là
chữ hoa thì đổi thành chữ thường. Ví dụ : nhập A in ra a, nhập b thì in ra B.
 Bài tập 2:
Nhập một ký tự bất kỳ, cho biết ký tự đó thuộc loại nào: là chữ hoa, là chữ
thường, là chữ số hay các ký tự khác.
 Bài tập 3:
Nhập Họ tên, Chức vụ (giám đốc, trưởng phòng, phó phòng hay nhân viên -
khi nhập gõ tắt là: GD, TP, PP, NV ) và Mức lương tháng của một người.Tính:
Phụ cấp lương cho ngưới đó như sau :
PC = 50% Mức lương tháng nếu là GD
= 40% " " " TP
= 30% " " " PP
= 20% " " " NV
-Tính Tổng thu nhập tháng theo công thức:
TONGTN = Mức lương + PC
-In Họ tên,Chức vụ, Mức lương , Phụ cấp và Tổng thu nhập lên màn hình .
 Bài tập 4:
Nhập vào 4 số nguyên dương, xuất ra số có giá trị lớn nhất.
 Bài tập 5:
Nhập vào 2 số a, b. Hoán đổi 2 giá trị a và b.
 Bài tập 6:
Nhập vào tháng, xuất ra số ngày trong tháng đó.
Biết rằng:
• Tháng 1, 3, 5, 7, 8, 10, 12 có 31 ngày.
• Tháng 4, 6, 9, 11 có 30 ngày
• Tháng 2:
o Năm nhuận: 29 ngày
o Năm thường: 28 ngày
• Năm nhuận là năm chia hết cho 4 và không chia hết cho 100.
3. XÁC ĐỊNH LỖI TRONG CHƯƠNG TRÌNH MẪU

3.1. Tìm số lớn nhất/bé nhất trong 4 số nguyên
 Đề bài :
Nhập bốn số x1, x2, x3, x4, tìm số lớn nhất và số nhỏ nhất của bốn số đó .
 Chương trình:
#include <stdio.h>
#include <conio.h>
void main()
{
int x1, x2, x3, x4;
printf(‘Nhập vào 4 số nguyên bất kỳ :’);
scanf("%d", "%d","%d","%d", &x1, &x2, &x3, &x4);
if ((x1<=x2) && (x1<=x2) && (x1<=x3))
printf(‘Số nhỏ nhất là :’, x1);
else
if ((x2<=x1) && (x2<=x3) && (x2<=x4))
printf(‘Số nhỏ nhất là :’, x2);
else
if ((x3<=x1) && (x3<=x2) && (x3<=x4))
printf(‘Số nhỏ nhất là :’, x3);
else
if ((x4<=x1) && (x4<=x2) && (x4<=x3))
printf(‘Số nhỏ nhất là :’, x4);
else
if ((x1>=x2) && (x1>=x2) && (x1>=x3))
printf(‘Số lớn nhất là :’, x1);
else
if ((x2>=x1) && (x2>=x3) && (x2>=x4))
printf(‘Số lớn nhất là :’, x2);
else
if ((x3>=x1) && (x3>=x2) && (x3>=x4))

printf(‘Số lớn nhất là :’, x3);
else
if ((x4>=x1) && (x4>=x2) &&
(x4>=x3))
printf(‘Số lớn nhất là :’, x4);
getch();
}

×