- Bài 4. Viết chương trình nhập vào số nguyên dương, in ra số chẵn hay lẻ.
A. LÝ THUYẾT
I. CÂU LỆNH RẼ NHÁNH
1.1. Lệnh IF
Cú pháp:
(1) IF
B THEN S;
(2) IF
B THEN S1
ELSE S2;
Sơ đồ thực hiện:
Chú
ý: Khi sử dụng câu lệnh IF thì
đứng trước từ khoá ELSE không được có dấu chấm phẩy (;).
1.2. Lệnh CASE
Cú pháp:
Dạng 1
|
Dạng 2
|
CASE B OF
Const 1: S1;
Const 2: S2;
...
Const n: Sn;
END;
|
CASE B OF
Const 1: S1;
Const 2: S2;
...
Const n: Sn;
ELSE Sn+1;
END;
|
Trong đó:
F B: Biểu thức kiểu vô hướng đếm
được như kiểu nguyên, kiểu logic, kiểu ký tự, kiểu liệt kê.
F Const i: Hằng thứ i, có thể là
một giá trị hằng, các giá trị hằng (phân cách nhau bởi dấu phẩy) hoặc các đoạn
hằng (dùng hai dấu chấm để phân cách giữa giá trị đầu và giá trị cuối).
F Giá trị của biểu thức và giá trị
của tập hằng i (i=1¸n) phải có cùng kiểu.
Khi gặp
lệnh CASE, chương trình sẽ kiểm tra:
- Nếu
giá trị của biểu thức B nằm trong tập hằng const i thì máy sẽ thực hiện lệnh Si
tương ứng.
- Ngược
lại:
+ Đối với dạng 1: Không làm gì cả.
+ Đối với dạng 2: thực hiện lệnh Sn+1.
B. BÀI TẬP:
Bài tập 2.1:
Viết chương
trình in ra số lớn hơn trong hai số (được nhập từ bàn phím).
a. Hướng dẫn:
-
Nhập hai số vào hai biến a, b.
-
Nếu a > b thì in a. Nếu a <= b thì in b.
- Hoặc: Nếu a > b thì in a.
Ngược lại thì in b.
b. Mã chương trình:
Program SO_SANH1;
uses crt;
var a,b: real;
begin
clrscr;
write('nhap so thu nhat: '); readln(a);
write('nhap so thu hai: '); readln(b);
if a> b then writeln(' So lon la:',a);
if a<= b then writeln(' So lon la:',b:10:2);
readln
end. |
Hoặc:
Program SO_SANH2;
uses crt;
var a,b: real;
begin
clrscr;
write('nhap so thu nhat: '); readln(a);
write('nhap so thu hai: '); readln(b);
if a> b then writeln(' So lon la:',a:10:2)
else writeln(' So lon la:',b:10:2);
readln
end.
|
c. Nhận xét: Khi hai số bằng nhau thì mỗi số được xem
là số lớn. Hãy sửa chương trình để khắc phục yếu điểm này.
Nói chung
nên sử dụng lệnh if … then … else vì chương trình sáng sủa, dễ hiểu hơn. Tuy
nhiên trong vài trường hợp sử dụng các lệnh if … then rời lại dễ diễn đạt hơn.
Hãy xem ví dụ sau: Bài tập 2.2:
Viết chương trình in ra số lớn
nhất trong bốn số nhập từ bàn phím.
a. Hướng dẫn:
Nếu a³ b và
a³
c và a³
d thì a là số lớn nhất.
Tương tự
như thế xét các trường hợp còn lại để tìm số lớn nhất.
b. Mã chương trình:
Program So_Lon_Nhat_1;
Uses crt;
Var a,b,c,d: real;
Begin
Clrscr;
Write('Nhap so thu nhat:');readln(a);
Write('Nhap so thu hai:');readln(b);
Write('Nhap so thu ba:');readln(c);
Write('Nhap so thu tu:');readln(d);
if (a>=b) and (a>=c) and (a>= d) then writeln('So lon nhat la:',a:10:2);
if (b>=a) and (b>=c) and (b>= d) then writeln('So lon nhat la:',b:10:2);
if (c>=a) and (c>=b) and (c>= d) then writeln('So lon nhat la:',c:10:2);
if (d>=a) and (d>=b) and (d>= c) then writeln('So lon nhat la:',d:10:2);
readln
end. |
c. Nhận xét: Hãy sử dụng cấu trúc if … then … else để
giải bài tập trên.
Độ khó của bài toán sẽ tăng lên nhiều nếu thêm yêu cầu có
thông báo khi hai số, ba số, bốn số bằng nhau. Bài tập 2.3:
Viết chương trình in ra số lớn
nhất trong bốn số nhập từ bàn phím với điều kiện chỉ được dùng hai biến.
a. Hướng dẫn:
Sử dụng một
biến max và một biến a để chứa số vừa nhập. Cho max bằng số đầu tiên. Sau khi
nhập một số thực hiện so sánh nếu số vừa nhập lớn hơn max thì lưu số vừa nhập
vào max. Sau khi nhập xong ta có max là số lớn nhất
(Giải thuật này gọi là kỹ thuật lính canh cần hiểu rõ để sử
dụng sau này).
b. Mã chương trình:
Program So_Lon_Nhat_2;
Uses crt;
Var a,max: real;
Begin
Clrscr;
Write('Nhap so thu nhat:');readln(a);Max:=a;
Write('Nhap so thu hai:');readln(a);if a>=Max then Max:=a;
Write('Nhap so thu ba:');readln(a);if a>=Max then Max:=a;
Write('Nhap so thu tu:');readln(a);if a>=Max then Max:=a;
Write('So lon nhat la:',Max:10:2);
readln
end.
|
Bài tập 2. 4
Viết chương
trình xét xem một tam giác có là tam giác đều hay không khi biết ba cạnh của
tam giác.
a. Hướng dẫn:
-
Nhập ba cạnh của tam giác vào ba biến a,b,c.
-
Nếu a = b và b = c thì tam giác là tam giác đều và
ngược lại tam giác không là tam giác đều.
b. Mã chương trình:
Program Tam_giac_deu;
uses crt;
var a,b,c: real;
begin
clrscr;
write('Nhap a = '); readln(a);
write('Nhap b = '); readln(b);
write('Nhap c = '); readln(c);
if (a = b) and (b = c) then writeln('La tam giac deu')
else
writeln('Khong phai la tam giac deu');
readln
end.
|
Bài tập 2. 5
Viết chương
trình xét xem một tam giác có là tam giác cân hay không khi biết ba cạnh của
tam giác.
a.Hướng dẫn:
-
Nhập ba cạnh của tam giác vào ba biến a,b,c.
-
Nếu a = b hoặc b = c hoặc a = c thì tam giác là tam
giác cân và ngược lại tam giác không là tam giác cân.
b.Mã chương trình:
Program Tam_giac_can;
uses crt;
var a,b,c: real;
begin
clrscr;
write('Nhap a = '); readln(a);
write('Nhap b = '); readln(b);
write('Nhap c = '); readln(c);
if (a = b) or (b = c) or (a = c) then writeln('La tam giac can')
else
writeln('Khong phai la tam giac can');
readln
end.
|
Bài tập 2. 6
Viết chương
trình xét xem một tam giác có là tam giác vuông hay không khi biết ba cạnh của
tam giác.
a.Hướng dẫn:
-
Nhập ba cạnh của tam giác vào ba biến a,b,c.
-
Nếu a2 = b2 + c2 hoặc
b2 = c2 + a2 hoặc c2 = a2+b2
thì tam giác là tam giác vuông và ngược lại tam giác không là tam giác vuông.
b.Mã chương trình:
Program Tam_giac_can;
uses crt;
var a,b,c: real;
begin
clrscr;
write('Nhap a = '); readln(a);
write('Nhap b = '); readln(b);
write('Nhap c = '); readln(c);
if (a*a = b*b+c*c) or (b*b = c*c+a*a) or (c*c= a*a+b*b) then writeln('La tam giac vuong')
else
writeln('Khong phai la tam giac vuong');
readln
end.
|
Bài tập 2.7:
Viết chương
trình giải phương trình ax + b = 0 (Các hệ số a, b được nhập từ bàn phím).
a.Hướng dẫn:
-
Nếu a ¹ 0 thì phương trình có nghiệm x =
-
Nếu a = 0 và b = 0 thì phương trình có vô số nghiệm
-
Nếu a = 0 và b ¹ 0 thì phương trình vô
nghiệm Hoặc:
-
Nếu a = 0 thì xét b. Nếu b = 0 thì phương trình có vô
số nghiệm ngược lại (b ¹0) thì phương trình vô nghiệm ngược lại (a ¹0)
phương trình có nghiệm x = .
a. Mã
chương trình:
Program Phuong_trinh_2;
uses crt;
var a,b:real;
begin
clrscr;
Writeln(' CHUONG TRINH GIAI PT ax + b = 0');
Write('Nhap he so a = ');readln(a);
Write('Nhap he so b = ');readln(b);
if (a<>0) then writeln('phuong trinh',a:10:2,'x + ',b:10:2,'= 0',' co nghiem x =;',-b/a:10:2);
if (a=0) and (b=0) then writeln('Phuong trinh co vo so nghiem');
if (a=0) and (b<>0) then writeln('Phuong trinh vo nghiem');
readln end. |
Hoặc:
Program Phuong_trinh_2;
uses crt;
var a,b:real;
begin
clrscr;
Writeln(' CHUONG TRINH GIAI PT ax + b = 0');
Write('Nhap he so a = ');readln(a);
Write('Nhap he so b = ');readln(b);
if (a<>0) then writeln('phuong trinh',a:10:2,'x + ',b:10:2,'= 0',' co nghiem x =;',-b/a:10:2)
else
if (b=0) then writeln('Phuong trinh co vo so nghiem')
else
writeln('Phuong trinh vo nghiem');
readln
end.
Đăng bởi: ngothisaoly- Vào ngày: 04-05-2019- View: 3676 Viết chương trình giải phương trình bậc một ax + b = 0 (với a, b là 2 số nguyên nhập từ bàn phím). Bài giải Phương trình tuyến tính (hay còn gọi là phương trình bậc một hay phương trình bậc nhất) là một phương trình đại số có dạng: f(x) = ax + b = 0. Trong đó: - b là một hằng số (hay hệ số bậc 0).
- a là hệ số bậc một.
Tìm nghiệm của phương trình bậc một như sau: - x = -b/a (Nếu a khác 0)
- Vô số nghiệm nếu a = 0 và b = 0
- Vô nghiệm nếu a = 0 và b khác 0.
Giải phương trình bậc một bằng cách sử dụng cấu trúc điều khiển if else trong C++ như sau: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <iostream> using namespace std; int main() { int a; int b; double nghiem; cout << "Nhap a = "; cin >> a; cout << "Nhap b = "; cin >> b; if(a == 0) { if (b == 0) { cout << "Phuong trinh vo so nghiem" << endl; } else { cout << "Phuong trinh vo nghiem" << endl; } } else { nghiem = (double)-b/a; cout << "Phuong trinh co nghiem la: " << nghiem << endl; } return 0; } |
|
Bài tập 2.8: (HSG lớp
8 -TP Huế 2006-2007)
Ba bạn An, Bình
và Cường cùng tham gia một trò chơi như sau: Mỗi bạn nắm trong tay một đồng
xu, mỗi đồng xu có hai trạng thái :
sấp và ngửa. Theo hiệu lệnh, cả ba bạn cùng đưa đồng xu của mình ra phía trước.
Nếu cả ba đồng xu cùng sấp hoặc cùng ngửa thì chưa phát hiện người thua cuộc
(hòa nhau). Nếu một bạn có trạng thái đồng xu khác với hai bạn kia( nghĩa là
đồng xu của bạn ấy sấp còn hai người kia ngửa và ngược lại đồng xu của bạn ấy
ngửa thì hai người kia sấp) thì bạn đó thắng cuộc. Hãy viết chương trình mô
phỏng trò chơi trên.
Thuật toán:
- Để mô phỏng trạng thái sấp, ngửa của đồng xu ta dùng hàm Random(1) hoặc
dùng Random(n) mod 2 với n > 2.
- Xét tám trường hợp xãy ra để tìm người thắng cuộc.
Cài đặt:
Program Sap_ngua;
uses crt;
Var A, B, C: byte;
Begin
clrscr;
Writeln('Go phim de xem ket qua: ');
A:=Random(10); A:=A mod 2;
B:=Random(10); B:=B mod 2;
C:=Random(10); C:=C mod 2;
Write('Ket qua: ',a,b,c);
if (A=0) and (B=0) and (C=0) then Write(' Hoa');
if (A=0) and (B=0) and (C=1) then Write(' C Thang');
if (A=0) and (B=1) and (C=0) then Write(' B Thang');
if (A=0) and (B=1) and (C=1) then Write(' A Thang');
if (A=1) and (B=0) and (C=0) then Write(' A Thang');
if (A=1) and (B=0) and (C=1) then Write(' B Thang');
if (A=1) and (B=1) and (C=0) then Write(' C Thang');
if (A=1) and (B=1) and (C=1) then Write(' Hoa');
Readln;
Readln
End. |
Bài tập 2.9:
Viết chương
trình dịch các ngày trong tuần sang tiếng anh
2
|
3
|
4
|
5
|
6
|
7
|
8
|
Monday
|
Tuesday
|
Wednesday
|
Thursday
|
Friday
|
Saturday
|
Sunday
|
a. Hướng
dẫn:
-
Dùng biến a kiểu byte để chứa thứ (2 đến 8)
-
Trường hợp a = 2: Monday
-
Trường hợp a = 3: Thursday
-
...
-
Trường hợp a = 8: Sunday
-
Ngoài ra không còn thứ nào.
b. Mã
chương trình:
Program dich;
uses crt;
Var thu:byte;
begin
clrscr;
write('nhap thu can dich 2à8: '); readln(thu);
case thu of
2: Write('--> Monday');
3: Write('--> Tuesday');
4: Write('--> Wednesday');
5: Write('--> Thursday');
6: Write('--> Friday');
7: Write('--> Saturday');
8: Write('--> Sunday');
else
Write(' Khong co thu nay');
end;
readln
end. |
Bài tập 2.10
Viết chương
trình cho phép tính diện tích các hình: Hình vuông; Hình chữ nhật; Hình tròn;
Tam giác; Hình thang. Người dùng chọn hình cần tính diện tích từ bảng chọn, sau
đó khai báo các thông số liên quan và nhận được diện tích của hình:
MOI BAN CHON HINH CAN
TINH DIEN TICH 1. Hình vuông.
2. Hình chữ nhật.
3. Hình tròn.
4. Tam giác.
5. Hình thang.
Muốn tình diện tích tam giác, người dùng gõ 4 và khai báo
đường cao, đáy. Chương trình tính và thông diện tích đến người dùng.
a. Hướng dẫn:
- Dùng cấu
trúc chọn Case chon of với chon có kiểu Char để tạo bảng chọn.
- Dùng 3
biến a,b,c để lưu các thông số của hình; Biến S để lưu diện tích của hình.
- Thực hiện
chung câu thông báo diện tích (Nằm ngoài Case . . . of) để gọn chưong trình.
b. Mã chương trình:
Program Dien_Tich_cac_hinh;
uses crt;
var chon: byte;
a,b,c,S: real;
Begin
clrscr;
writeln('CHUONG TRINH TINH DIEN TICH CAC HINH');
Writeln(' ------------');
writeln('1. DIEN TICH HINH TAM GIAC');
writeln('2. DIEN TICH HINH VUONG');
writeln('3. DIEN TICH HINH CHU NHAT');
writeln('4. DIEN TICH HINH THANG');
writeln('5. DIEN TICH HINH TRON');
write('Moi ban chon hinh can tinh dien tich: ');readln(chon);
case chon of
1 : Begin
Write('Cho biet canh day: '); readln(a);
Write('Cho biet chieu cao: '); readln(b);
S:=(a*b)/2;
end;
2:Begin
Write('Cho biet chieu dai canh: '); readln(a);
S:=a*a;
end;
3:Begin
Write('Cho biet chieu dai: '); readln(a);
Write('Cho biet chieu rong: '); readln(b);
S:=a*b;
end;
4:Begin
Write('Cho biet day lon: '); readln(a);
Write('Cho biet day nho: '); readln(b);
Write('Cho biet chieu cao: '); readln(c);
S:=(a+b)*c/2;
End;
5:Begin
Write('Cho biet ban kinh: '); readln(a);
S:=a*a*pi;
End;
else
Writeln('Chon sai roi!!!');
end;
Writeln('Dien tich cua hinh la: ',S:8:2);
readln
end. |
c. Nhận xét: Với mỗi trường hợp thỏa Case biến
chọn of thực hiện một lệnh. Vì thế, muốn thực hiện nhiều
lệnh ta cần ghép nhiều lệnh thành một lệnh ghép.
|