MỤC ĐÍCH:
- Biết cách sử dụng lệnh if-else
- Biết cách sử dụng lệnh switch-case
LÝ THUYẾT:
Lệnh if (rẽ nhánh) được sử dụng để ra quyết định thực hiện một công việc nào
đó tùy vào điều kiện đúng hay sai
if-else:
Switch-case:
YÊU CẦU:
Bài làm quen: Nhập vào số nguyên, kiểm tra số vừa nhập là số
chẵn hay số lẻ
Bài 1: Xây dựng chương trình tính học lực biết:
Học lực xuất sắc: Điểm >= 9Học lực giỏi: 9 > điểm >= 8Học lực khá: 8 > điểm >= 6.5Học lực trung bình: 6.5 > điểm >= 5Học lực yếu: 5 > điểm >= 3.5Học lực kém: 3.5 > điểm
Input: Nhập vào điểm của sinh viên (0-10)
Output: Hiển thị ra màn hình học lực của sinh viên
Bài 2: Xây dựng chương trình giải phương trình:
2.1: Phương trình bậc 1 có dạng ax + b = 0
Input: nhập vào từ bàn phím giá trị của a, b
Output: Hiển thị nghiệm của phương trình
Biết rằng:
Nếu a == 0,
- b == 0: Phương trình có vô số nghiệm
- b != 0: Phương trình vô nghiệm
Ngược lại: Phương trình có nghiệm x = -b/a
2.2: Phương trình bậc 2 có dạng: ax2 + bx + c = 0
Input: Nhập vào từ bàn phím: a, b, c
Output: Nghiệm của phương trình
Biết rằng:
Nếu a == 0, phương trình thành bx + c = 0
Ngược lại nếu a != 0
- Tính delta
- Nếu delta < 0: Phương trình vô nghiệm
- Nếu delta == 0: Phương trình có nghiệm kép x = -b/(2*a)
- Nếu delta > 0: Phương trình có 2 nghiệm riêng biệt
+ X1 = (-b + căn(delta))/(2*a)
+ X2 = (-b – căn(delta))/(2*a)
Bài 3: Chương trình tính tiền điện
Input: Nhập vào số điện tiêu thụ hàng tháng
Output: Hiển thị số tiền cần phải đóng
Biết rằng:
TT Số kWh sử dụng được tính theo bậc Giá bán điện (đồng/kWh)
Bậc 1: Cho kWh từ 0 - 50 giá 1.678 (đồng/kWh)Bậc 2: Cho kWh từ 51 - 100 giá 1.734Bậc 3: Cho kWh từ 101 - 200 giá 2.014Bậc 4: Cho kWh từ 201 - 300 giá 2.536Bậc 5: Cho kWh từ 301 - 400 giá 2.834Bậc 6: Cho kWh từ 401 trở lên giá 2.927
Bài 4: Sử dụng lệnh Switch-case để xây dựng menu chương trình cho 3
bài tập trên
Bài làm thêm:
Chương trình tính tiền cho quán Karaoke
Input: Nhập vào giờ bắt đầu, giờ kết thúc
Output: Hiển thị giá tiền cần thanh toán
Biết rằng:
Giá tiền 3 giờ đầu là 150000, bắt đầu giờ thứ 4 giảm 30%.Quán chỉ hoạt động trong khoảng giờ từ 12 giờ -> 23 giờ.Nếu giờ bắt đầu trong khoảng 14 -> 17 thì giảm tiếp 10% tổng tiền thanh toán
THỰC HIỆN:
Bài làm quen:
Nhập vào số nguyên, kiểm tra số vừa nhập là số chẵn hay số lẻ
Lưu đồ thuật toán (Flowchart)
Code:
/*
Nhập vào số nguyên,
Kiểm tra số vừa nhập là số chẵn hay số lẻ
Gợi ý:
Lấy số đó chia cho 2 mà không dư thì đó là số chẵn, ngược lại là số lẻ
*/
#include<stdio.h>
int main()
{
int x ;
printf("Nhap so nguyen: ");
scanf("%d", &x);
printf("\n=======================\n") ;
if (x % 2 == 0) // chia lấy dư
{
printf("%d la so CHAN!\n", x);
} else {
printf("%d la so LE!\n", x);
}
}
Bài 1: Xây dựng chương trình tính học lực biết:
Học lực xuất sắc: Điểm >= 9Học lực giỏi: 9 > điểm >= 8Học lực khá: 8 > điểm >= 6.5Học lực trung bình: 6.5 > điểm >= 5Học lực yếu: 5 > điểm >= 3.5Học lực kém: 3.5 > điểm
Input: Nhập vào điểm của sinh viên (0-10)
Output: Hiển thị ra màn hình học lực của sinh viêncode:
#include<stdio.h>
#include<conio.h>
int main()
{
float diem;
printf("Nhap vao diem Sinh Vien: ");
scanf("%f", &diem);
if (diem >=9)
{
printf("Hoc luc: XUAT SAC");
}
else if (diem >=8)
{
printf("Hoc luc: GIOI");
}
else if (diem >=6.5)
{
printf("Hoc luc: KHA");
}
else if (diem >=5)
{
printf("Hoc luc: TRUNG BINH");
}
else if (diem >=3.5)
{
printf("Hoc luc: YEU");
}
else if (diem < 3.5)
{
printf("Hoc luc: KEM");
}
return 0;
}
Bài 2:
Xây dựng chương trình giải phương trình:
2.1: Phương trình bậc 1 có dạng ax + b = 0
Input: nhập vào từ bàn phím giá trị của a, b
Output: Hiển thị nghiệm của phương trình
Biết rằng:
Nếu a == 0,
- b == 0: Phương trình có vô số nghiệm
- b != 0: Phương trình vô nghiệm
Ngược lại: Phương trình có nghiệm x = -b/a
flow chart:
code:
/*
Xây dựng chương trình giải phương trình:
2.1: Phương trình bậc 1 có dạng ax + b = 0
Input: nhập vào từ bàn phím giá trị của a, b
Output: Hiển thị nghiệm của phương trình
Biết rằng:
Nếu a == 0,
- b == 0: Phương trình có vô số nghiệm
- b != 0: Phương trình vô nghiệm
Ngược lại: Phương trình có nghiệm x = -b/a
*/
#include<stdio.h>
#include<conio.h>
int main()
{
float a, b;
printf("Nhap vao he so a: ");
scanf("%f", &a);
printf("Nhap vao he so b: ");
scanf("%f", &b);
if (a == 0)
{
if (b == 0)
{
printf("Phuong trinh co VO SO NGHIEM!");
} else {
printf("Phuong trinh VO NGHIEM!");
}
} else {
printf("Phuong trinh co nghiem x= %.2f", -b/a);
}
return 0;
}
2.2: Phương trình bậc 2 có dạng: ax2 + bx + c = 0
Input: Nhập vào từ bàn phím: a, b, c
Output: Nghiệm của phương trình
Biết rằng:
Nếu a == 0, phương trình thành bx + c = 0
Ngược lại nếu a != 0
- Tính delta
- Nếu delta < 0: Phương trình vô nghiệm
- Nếu delta == 0: Phương trình có nghiệm kép x = -b/(2*a)
- Nếu delta > 0: Phương trình có 2 nghiệm riêng biệt
+ X1 = (-b + căn(delta))/(2*a)
+ X2 = (-b – căn(delta))/(2*a)
flow chart:
code:
/*
Xây dựng chương trình giải phương trình:
Phương trình bậc 2 có dạng: ax2 + bx + c = 0
Input: Nhập vào từ bàn phím: a, b, c
Output: Nghiệm của phương trình
Biết rằng:
Nếu a == 0, phương trình thành bx + c = 0
Ngược lại nếu a != 0
- Tính delta
- Nếu delta < 0: Phương trình vô nghiệm
- Nếu delta == 0: Phương trình có nghiệm kép x = -b/(2*a)
- Nếu delta > 0: Phương trình có 2 nghiệm riêng biệt
+ X1 = (-b + căn(delta))/(2*a)
+ X2 = (-b – căn(delta))/(2*a)
hàm căn bậc 2 là: sqrt()
*/
#include<stdio.h>
#include<conio.h>
int giaiPhuongTrinhBacNhat(float a, float b){
if (a == 0)
{
if (b == 0)
{
printf("Phuong trinh co VO SO NGHIEM!");
} else {
printf("Phuong trinh VO NGHIEM!");
}
} else {
printf("Phuong trinh co nghiem x= %.2f", -b/a);
}
}
int main()
{
float a, b, c, delta;
printf("Nhap vao he so a: ");
scanf("%f", &a);
printf("Nhap vao he so b: ");
scanf("%f", &b);
printf("Nhap vao he so c: ");
scanf("%f", &c);
if (a == 0)
{
printf("Phuong trinh co dang phuong trinh Bac-Nhat\n");
giaiPhuongTrinhBacNhat(c, b); // gọi hàm giải phương trình bậc nhất
}
else {
// tính delta
delta = b * b - 4 * a * c;
if (delta < 0)
{
printf("Phuong trinh VO NGHIEM!");
}
else if (delta ==0)
{
printf("Phuong co NGHIEM KEP x= %.2f", -b/(2*a));
}
else
{
printf("Phuong trinh co 2 nghiem rieng biet\n");
printf("X1 = %.2f\n", (-b + sqrt(delta))/(2*a));
printf("X2 = %.2f\n", (-b - sqrt(delta))/(2*a));
}
}
return 0;
}
Bài 3:
Chương trình tính tiền điện
Input: Nhập vào số điện tiêu thụ hàng tháng
Output: Hiển thị số tiền cần phải đóng
Biết rằng:
TT Số kWh sử dụng được tính theo bậc Giá bán điện (đồng/kWh)
Bậc 1: Cho kWh từ 0 - 50 giá 1.678 (đồng/kWh)Bậc 2: Cho kWh từ 51 - 100 giá 1.734Bậc 3: Cho kWh từ 101 - 200 giá 2.014Bậc 4: Cho kWh từ 201 - 300 giá 2.536Bậc 5: Cho kWh từ 301 - 400 giá 2.834Bậc 6: Cho kWh từ 401 trở lên giá 2.927
code:
/*
Chương trình tính tiền điện
Input: Nhập vào số điện tiêu thụ hàng tháng
Output: Hiển thị số tiền cần phải đóng
Biết rằng:
tt_ Số kWh sử dụng được tính theo bậc Giá bán điện (đồng/kWh)
Bậc 1: Cho kWh từ 0 - 50 giá 1.678 (đồng/kWh)
Bậc 2: Cho kWh từ 51 - 100 giá 1.734
Bậc 3: Cho kWh từ 101 - 200 giá 2.014
Bậc 4: Cho kWh từ 201 - 300 giá 2.536
Bậc 5: Cho kWh từ 301 - 400 giá 2.834
Bậc 6: Cho kWh từ 401 trở lên giá 2.927
*/
#include<stdio.h>
#include<conio.h>
int main()
{
int soDien, thanhTien;
int tt_050, tt_100, tt_200, tt_300, tt_400, tt_401;
// khởi tạo giá trị ban đầu = 0
tt_050 = 0;
tt_100 = 0;
tt_200 = 0;
tt_300 = 0;
tt_400 = 0;
tt_401 = 0;
printf("Nhap vao so kWh tieu thu: ");
scanf("%d", &soDien);
thanhTien = 0;
if (soDien <= 50)
{
tt_050 = 50 * 1806;
thanhTien = tt_050;
}
else if (soDien <= 100)
{
tt_050 = 50 * 1806;
tt_100 = (soDien - 50) * 1866;
thanhTien = tt_050 + tt_100;
}
else if (soDien <= 200)
{
tt_050 = 50 * 1806;
tt_100 = (100 - 50) * 1866;
tt_200 = (soDien - 100) * 2167;
thanhTien = tt_050 + tt_100 + tt_200;
}
else if (soDien <= 300)
{
tt_050 = 50 * 1806;
tt_100 = (100 - 50) * 1866;
tt_200 = (200 - 100) * 2167;
tt_300 = (soDien - 200) * 2729;
thanhTien = tt_050 + tt_100 + tt_200 + tt_300;
}
else if (soDien <= 400)
{
tt_050 = 50 * 1806;
tt_100 = (100 - 50) * 1866;
tt_200 = (200 - 100) * 2167;
tt_300 = (300 - 200) * 2729;
tt_400 = (soDien - 300) * 3050;
thanhTien = tt_050 + tt_100 + tt_200 + tt_300 + tt_400;
}
else
{
tt_050 = 50 * 1806;
tt_100 = (100 - 50) * 1866;
tt_200 = (200 - 100) * 2167;
tt_300 = (300 - 200) * 2729;
tt_400 = (400 - 300) * 3050;
tt_401 = (soDien - 400) * 3151;
thanhTien = tt_050 + tt_100 + tt_200 + tt_300 + tt_400 + tt_401;
}
printf("\n===========KET QUA===========\n");
printf("So tien phai Thanh toan la: %d\n", thanhTien);
printf("Chi tiet: %d\t%d\t%d\t%d\t%d\t%d", tt_050, tt_100, tt_200, tt_300, tt_400, tt_401);
return 0;
}
Bài 4: Sử dụng lệnh Switch-case để xây dựng menu chương trình cho 3
bài tập trên
code:
/*
Sử dụng lệnh Switch-case để xây dựng menu chương trình cho 3 bài tập trên
*/
#include<stdio.h>
// các hàm
int bai_01() // tính học lực
{
float diem;
printf("Nhap vao diem Sinh Vien: ");
scanf("%f", &diem);
if (diem >=9)
{
printf("Hoc luc: XUAT SAC");
}
else if (diem >=8)
{
printf("Hoc luc: GIOI");
}
else if (diem >=6.5)
{
printf("Hoc luc: KHA");
}
else if (diem >=5)
{
printf("Hoc luc: TRUNG BINH");
}
else if (diem >=3.5)
{
printf("Hoc luc: YEU");
}
else if (diem < 3.5)
{
printf("Hoc luc: KEM");
}
return 0;
}
int bai_21() // phương trình bậc nhất
{
float a, b;
printf("Nhap vao he so a: ");
scanf("%f", &a);
printf("Nhap vao he so b: ");
scanf("%f", &b);
if (a == 0)
{
if (b == 0)
{
printf("Phuong trinh co VO SO NGHIEM!");
} else {
printf("Phuong trinh VO NGHIEM!");
}
} else {
printf("Phuong trinh co nghiem x= %.2f", -b/a);
}
return 0;
}
int giaiPhuongTrinhBacNhat(float a, float b){ // phương trình bậc nhất truyền tham số
if (a == 0)
{
if (b == 0)
{
printf("Phuong trinh co VO SO NGHIEM!");
} else {
printf("Phuong trinh VO NGHIEM!");
}
} else {
printf("Phuong trinh co nghiem x= %.2f", -b/a);
}
}
int bai_22() // phương trình bậc hai
{
float a, b, c, delta;
printf("Nhap vao he so a: ");
scanf("%f", &a);
printf("Nhap vao he so b: ");
scanf("%f", &b);
printf("Nhap vao he so c: ");
scanf("%f", &c);
if (a == 0)
{
printf("Phuong trinh co dang phuong trinh Bac-Nhat\n");
giaiPhuongTrinhBacNhat(c, b); // gọi hàm giải phương trình bậc nhất
}
else {
// tính delta
delta = b * b - 4 * a * c;
if (delta < 0)
{
printf("Phuong trinh VO NGHIEM!");
}
else if (delta ==0)
{
printf("Phuong co NGHIEM KEP x= %.2f", -b/(2*a));
}
else
{
printf("Phuong trinh co 2 nghiem rieng biet\n");
printf("X1 = %.2f\n", (-b + sqrt(delta))/(2*a));
printf("X2 = %.2f\n", (-b - sqrt(delta))/(2*a));
}
}
return 0;
}
int bai_03() // tính tiền điện
{
int soDien, thanhTien;
int tt_050, tt_100, tt_200, tt_300, tt_400, tt_401;
// khởi tạo giá trị ban đầu = 0
tt_050 = 0;
tt_100 = 0;
tt_200 = 0;
tt_300 = 0;
tt_400 = 0;
tt_401 = 0;
printf("Nhap vao so kWh tieu thu: ");
scanf("%d", &soDien);
thanhTien = 0;
if (soDien <= 50)
{
tt_050 = 50 * 1806;
thanhTien = tt_050;
}
else if (soDien <= 100)
{
tt_050 = 50 * 1806;
tt_100 = (soDien - 50) * 1866;
thanhTien = tt_050 + tt_100;
}
else if (soDien <= 200)
{
tt_050 = 50 * 1806;
tt_100 = (100 - 50) * 1866;
tt_200 = (soDien - 100) * 2167;
thanhTien = tt_050 + tt_100 + tt_200;
}
else if (soDien <= 300)
{
tt_050 = 50 * 1806;
tt_100 = (100 - 50) * 1866;
tt_200 = (200 - 100) * 2167;
tt_300 = (soDien - 200) * 2729;
thanhTien = tt_050 + tt_100 + tt_200 + tt_300;
}
else if (soDien <= 400)
{
tt_050 = 50 * 1806;
tt_100 = (100 - 50) * 1866;
tt_200 = (200 - 100) * 2167;
tt_300 = (300 - 200) * 2729;
tt_400 = (soDien - 300) * 3050;
thanhTien = tt_050 + tt_100 + tt_200 + tt_300 + tt_400;
}
else
{
tt_050 = 50 * 1806;
tt_100 = (100 - 50) * 1866;
tt_200 = (200 - 100) * 2167;
tt_300 = (300 - 200) * 2729;
tt_400 = (400 - 300) * 3050;
tt_401 = (soDien - 400) * 3151;
thanhTien = tt_050 + tt_100 + tt_200 + tt_300 + tt_400 + tt_401;
}
printf("\n===========KET QUA===========\n");
printf("So tien phai Thanh toan la: %d\n", thanhTien);
printf("Chi tiet: %d\t%d\t%d\t%d\t%d\t%d", tt_050, tt_100, tt_200, tt_300, tt_400, tt_401);
return 0;
}
// hàm main
int main()
{
int luaChon;
printf("===== MENU LUA CHON ====\n");
printf("1. Tinh hoc luc - Lab3: bai 1\n");
printf("2. Giai phuong trinh bac nhat - Lab3 bai 2.1\n");
printf("3. Giai phuong trinh bac hai - Lab3 bai 2.2\n");
printf("4. Chuong trinh tinh tien dien - Lab3 bai 3\n");
printf("0. THOAT CHUONG TRINH!\n");
printf("\n");
printf("Lua chon cua ban la: ");
scanf("%d", &luaChon);
printf("==================================\n");
switch (luaChon)
{
case 1:
bai_01(); // gọi hàm bai_1 phía trên hàm main()
break;
case 2:
bai_21();
break;
case 3:
bai_22();
break;
case 4:
bai_03();
break;
case 0:
break;
default:
printf("Lua chon KHONG DUNG!");
break;
}
}
Bài làm thêm:
Chương trình tính tiền cho quán Karaoke
Input: Nhập vào giờ bắt đầu, giờ kết thúc
Output: Hiển thị giá tiền cần thanh toán
Biết rằng:
Giá tiền 3 giờ đầu là 150000, bắt đầu giờ thứ 4 giảm 30%.Quán chỉ hoạt động trong khoảng giờ từ 12 giờ -> 23 giờ.Nếu giờ bắt đầu trong khoảng 14 -> 17 thì giảm tiếp 10% tổng tiền thanh toán
Code:
/*
Chương trình tính tiền cho quán Karaoke
Input: Nhập vào giờ bắt đầu, giờ kết thúc
Output: Hiển thị giá tiền cần thanh toán
Biết rằng:
Giá tiền 3 giờ đầu là 150000, bắt đầu giờ thứ 4 giảm 30%.
Quán chỉ hoạt động trong khoảng giờ từ 12 giờ 23 giờ.
Nếu giờ bắt đầu trong khoảng 14 17 thì giảm tiếp 10% tổng tiền thanh toán
*/
#include<stdio.h>
int main()
{
int gioVao;
int gioRa;
int tongThoiGianHat;
// gioVao = 13;
// gioRa = 19;
printf ("Nhap gio vao: ");
scanf ("%d", &gioVao);
printf ("Nhap gio ra: ");
scanf ("%d", &gioRa);
tongThoiGianHat = gioRa - gioVao;
int giaFull = 150000;
int giaGiam = giaFull * 0.7 ;
// int giaGiam = giaFull - giaFull * 0.3 ; // Hoặc
int tongTienThanhToan;
int tongTienDuoi_3gio;
int tongTienTren_3gio_NeuCo;
if (tongThoiGianHat <= 3){
tongTienTren_3gio_NeuCo = 0;
tongTienDuoi_3gio = tongThoiGianHat * giaFull;
}else{
tongTienTren_3gio_NeuCo = (tongThoiGianHat - 3 ) * giaGiam;
tongTienDuoi_3gio = 3 * giaFull;
}
tongTienThanhToan = tongTienDuoi_3gio + tongTienTren_3gio_NeuCo;
if (gioVao >= 14 && gioVao <= 17){
tongTienThanhToan = tongTienThanhToan - tongTienThanhToan * 0.1;
}
printf("\nTong tien thanh toan: %d", tongTienThanhToan);
}