CÁC CÂU LỆNH RẼ NHÁNH

Bài tập có hướng dẫn

Nhập vào một ký tự. Hãy in thông báo cho biết ký tự đó là ký tự số, ký tự chữ cái, ký tự phép toán hay là ký tự dạng khác với các dạng trên:

Hướng dẫn

char ch;
<Nhap ch>
if(ch >= '0' && ch <= '9')
	<Day la ky tu so>
else if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
	<Day la ky tu chu cai>
else if(ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '%')
	<Day la ky tu phep toan>
else 
	<Day la ky tu dang khac>
		

Nhập vào hai số nguyên. Hãy mô phỏng một máy tính đơn giản gồm 5 phép tính hai ngôi (+, -, *, /, %) trên hai số nguyên này

Hướng dẫn:

int a, b;
char pt; //Phép toán
<Nhap a>
fflush(stdin); //Xóa dữ liệu trong vùng đệm
<Nhap pt>
<Nhap b>
switch(pt) {
	case '+': <In a + b>; break;
	case '-': <In a - b>; break;
	case '*': <In a * b>; break;
	case '/': <In a / b>; break;
	case '%': <In a % b>; break;
	default: <Phep toan khong hop le>
}
		

Nhập vào hai số thực a, b. Hãy tính và in ra nghiệm phương trình bậc nhất: ax + b = 0

Hướng dẫn

float a, b;
float x; //Nghiệm
<Nhap a, b>
if(a == 0) {
	if(b == 0)
		<Phuong trinh vo so nghiem>
	else 
		<Phuong trinh vo nghiem>
}else {
	x = -b / a;
	<In nghiem x>
}
		

Nhập vào ba số thực a, b, c (a khác 0). Hãy tính và in ra nghiệm phương trình bậc hai: ax2 + bx + c = 0.

Hướng dẫn

float a, b, c; //Lưu ba hệ số
float x1, x2, delta; //Lưu nghiệm & Lưu biệt số delta
<Nhap a, b, c>
delta = b * b - 4 *a * c;
if(delta < 0)
	<Phuong trinh vo nghiem>
else if(delta == 0) {
	x1 = x2 = -b / (2 * a);
	<In x1 hoac x2>
}
else {
	x1 = (-b + sqrt(delta)) / (2 * a);
	x2 = (-b - sqrt(delta)) / (2 * a);
	<In x1 va x2>
}
		

Nhiệt độ F(Fahrenheit) và nhiệt độ C(Celcius) liên hệ với nhau theo công thức: C = 5(F – 32)/9. Viết chương trình cho phép người dùng nhập vào độ F hay độ C và đổi sang độ còn lại

Hướng dẫn

float f, c;
int chon;//Chức năng chọn
printf("BANG CHON\n");
printf("1: Nhap F, tinh C\n");
printf("2: Nhap C, tinh F\n");
printf("Moi chon:"); scanf("%d", &chon);
switch(chon) {
	case 1: 
		<Nhap f>; 
		<Tinh c>; 
		<In c>; 
		break;
	case 2: <Nhap c>; 
		<Tinh f>; 
		<In f>; 
		break;
	default: 
		<Ban chon khong hop le>
}
		

Nhập vào ngày, tháng, năm. Kiểm tra xem ngày, tháng, năm đó có hợp lệ hay không, nếu hợp lệ hãy cho biết ngày hôm sau của ngày đã nhập là ngày nào

(Biết rằng năm nhuận là năm (chia hết cho 400) hoặc (chia hết cho 4 và không chia hết cho 100)).
Ví dụ: Nhập 31-12-2000 → Ngày hôm sau là 01-01-2001

Hướng dẫn
int nhuan; //Biến cờ = 0: Không là năm nhuận, = 1: Là năm nhuận
int d, m, y; //Ngày nhập
int nd, nm, ny; //Ngày kế tiếp
int sntt; //Số ngày trong tháng
<Nhap d, m, y> //Kiểm tra năm nhuận
nhuan = 0;
if(y % 400 == 0 || (y%4 == 0 && y % 100 != 0))
	nhuan = 1;
//Tính số ngày trong tháng
switch(m) {
	case 1: case 3: case 5: case 7: case 8: case 10: case 12:
		sntt = 31; break;
	case 4: case 6: case 9: case 11:
		sntt = 30; break;
	case 2:
		sntt = (nhuan ? 29 : 28); break;
	default: sntt = 0;
}
//Kiểm tra hợp lệ
if(d > 0 && d <= sntt && m >0 && m < 13 && y > 0) {
	//Tính ngày kế tiếp
	nd = d + 1; nm = m; ny =y;
	if(nd > sntt) {
		nd= 1;
		nm++;
		if(nm > 12) {
			nm = 1;
			ny++;
		}
	}
	<In nd, nm, ny>
}
else 
	<Ngay nhap khong hop le>
		

Nhập vào giờ, phút, giây. Kiểm tra giờ, phút giây đó có hợp lệ hay không, nếu hợp lệ hãy cho biết giờ sau đó 1 giây là bao nhiêu

Ví dụ: Nhập 01:59:59 → Giờ sau đó 1 giây là 02:00:00

Hướng dẫn
<Nhap h, m, s>
if(h >=0 && h < 24 && m >= 0 && m < 59 && s >= 0 && s < 59) {
	ns =s + 1 ; nm = m ; nh = h ;
	if(ns > 59) {
		ns = 0
		nm++ ;
		if(nm > 59) {
			nm = 0 ;
			nh++ ;
		}
	}
}
else 
	<Gio nhap khong hop le>
		

Nhập vào số ngày thuê và loại phòng (một trong 3 loại A, B hoặc C). Hãy tính và in ra tiền thuê phòng với

quy định như sau:

Loại A: 250000đ/ngày

Loại B: 200000đ/ngày

Loại C: 150000đ/ngày

Nếu thuê quá 12 ngày thì phần trăm đuợc giảm trên tổng số tiền (tính theo giá quy định) là: 10% cho phòng loại A, 8% cho phòng loại B hoặc C

Hướng dẫn
#define DON_GIA_A 250000.0
#define DON_GIA_B 200000.0
#define DON_GIA_C 150000.0
#define GIAM_A 0.1
#define GIAM_B_C 0.08
#define GIOI_HAN 12
int snt; //Số ngày thuê
char lp; //Loại phòng
float tien; //Tiền thuê phòng
<Nhap snt>
fflush(stdin); //Xóa dữ liệu trong vùng đệm
<Nhap lp>
if(snt > 0) {
	switch(lp) {
		case 'a': case 'A':
		tien = DON_GIA_A * snt;
		if(snt > GIOI_HAN)
			tien *= (1 - GIAM_A);
		<In tien>
		break;
		case 'b': case 'B': ...
		case 'c': case 'C': ...
		default: <Loai phong khong hop le>
	}
}
else
	<So ngay thue khong hop le>
		

Bài tập luyện tập

Nhập vào ba số thực a, b, c (a bất kỳ). Hãy tính và in ra nghiệm phương trình bậc hai ax2 + bx + c = 0

Nhập vào sáu số thực a, b, c, d, m, n. Hãy tính và in ra nghiệm hệ phương trình hai ẩn số:

ax + by = m
cx + dy = n

Nhắc lại:

Tính DX = md – nb, DY = an – cm và D = ad – cb.

Nghiệm: x = DX/D, y = DY/D (D khác 0)

Bài tập luyện tập

Nhập vào các số thực a, b, c. Hãy kiểm tra xem ba số này có lập thành 3 cạnh của một tam giác hay không? Nếu có hãy tính và in ra chu vi, diện tích, chiều dài mỗi đường cao của tam giác.

Nhập vào một số nguyên gồm 3 chữ số. Xuất ra màn hình chữ số lớn nhất ở vị trí nào.

Ví dụ: Nhập vào 384 → Chữ số lớn nhất nằm ở hàng chục

Nhập vào ba số nguyên d, m, y là ngày, tháng, năm. Hãy in thông báo cho biết đó là ngày thứ mấy trong tuần. Sử dụng công thức sau để biến đổi ngày, tháng, năm thành thứ trong tuần:

A = d + 2m + (3(m + 1)/5) + y + (y/4) – (y /100) + (y/400) + 2

Với quy ước tháng 1, 2 của năm y được xem là tháng 13, 14 của năm y–1. Số dư trong phép chia A cho 7 cho kết quả là thứ trong tuần theo nghĩa số dư là 0: Thứ bảy, số dư là 1: Chủ nhật, số dư là 2: Thứ hai.

Nhập vào ngày, tháng, năm. Kiểm tra xem ngày, tháng, năm đó có hợp lệ không, nếu hợp lệ hãy cho biết ngày hôm trước của ngày đã nhập là ngày nào.

(Biết rằng năm nhuận là năm (chia hết cho 400) hoặc (chia hết cho 4 và không chia hết cho 100)).

Ví dụ: Nhập 01-01-2001 → Ngày hôm sau là 31-12-2000

Nhập vào giờ, phút, giây. Kiểm tra giờ, phút giây đó có hợp lệ hay không, nếu hợp lệ hãy cho biết giờ trước đó 1 giây là bao nhiêu.

Ví dụ: Nhập 02:00:00 → Giờ sau đó 1 giây là 01:59:59

Nhập vào giờ vào ca, giờ ra ca. Hãy tính và in ra tiền lương ngày cho công nhân, biết rằng tiền trả cho mỗi giờ trước 12 giờ trưa là 6000đ và mỗi giờ sau 12 giờ trưa là 7500đ. Giờ vào ca sớm nhất là 6 giờ sáng và giờ ra ca trễ nhất là 18 giờ

Nhập vào trọng lượng m(kg) hàng hóa bán được (0 < m ≤ 100). Hãy tính và in ra tiền lời thu được, biết rằng

0 < m ≤ 10Tiền lời là 5000đ/kg.
10 < m ≤ 20Tiền lời là 5000đ/kg.
20 < m ≤ 50Tiền lời là 9000đ/kg và thêm 2% tổng số tiền lời.
50 < mTiền lời là 10000đ/kg và thêm 4% tổng số tiền lời nhưng không được quá 1000000đ.

Trong một kỳ thi tuyển, hội đồng tuyển sinh đã xem xét đề nghị một điểm chuẩn (xem như dữ kiện nhập). Mỗi thí sinh tham gia kỳ thi sẽ trúng tuyển nếu điểm tổng kết của thí sinh đó lớn hơn hoặc bằng điểm chuẩn và không có môn nào điểm 0. Điểm tổng kết của mỗi thí sinh là tổng điểm của 3 môn thi và điểm ưu tiên. Điểm ưu tiên bao gồm điểm ưu tiên theo khu vực và điểm ưu tiên theo đối tượng dự thi. Cho biết:

Khu vực A:điểm ưu tiên là 2.
Khu vực B:điểm ưu tiên là 1.
Khu vực C:điểm ưu tiên là 0.5.
Đối tượng 1:điểm ưu tiên là 2.5.
Đối tượng 2:điểm ưu tiên là 1.5.
Đối tượng 3:điểm ưu tiên là 1.

Viết chương trình nhập vào điểm chuẩn, điểm của 3 môn thi của một thí sinh, khu vục và đối tượng dự thi. Cho biết thí sinh đó đậu hay rớt.