Giáo trình ngôn ngữ C


IV.2. Cấu trúc rẽ nhánh



tải về 2.34 Mb.
Chế độ xem pdf
trang35/62
Chuyển đổi dữ liệu16.03.2023
Kích2.34 Mb.
#54376
1   ...   31   32   33   34   35   36   37   38   ...   62
C ĐHQGHN

IV.2.
Cấu trúc rẽ nhánh
 
Chúng ta hãy xem lại chương trình trong ví dụ 2 trên, điều gì xảy ra nếu dữ liệu 
không thoả mãn, tức là khi bạn nhập 3 số a,b,c từ bàn phím nhưng chúng không thoả mãn 
là số đo 3 cạnh một tam giác trong khi chương trình của chúng ta vẫn cứ tính và in diện 
tích. 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
43
Rõ ràng là có hai khả năng: 
− Nếu a,b,c thoả mãn là 3 cạnh tam giác thì tính chu vi, diện tích và in kết quả 
− Ngược lại phải thông báo dữ liệu không phù hợp 
Như vậy cần phải có một sự lựa một trong hai nhánh tuỳ vào điều kiện a,b,c có là ba 
cạnh một tam giác hay không. Điều này gọi là rẽ nhánh, và C cung cấp cho chúng ta một 
cấu trúc điều khiển rẽ nhánh if. 
¾
Cú pháp
dạng đủ 

if (bt_E) 
S1; 
else 
S2; 
 
hoặc dạng khuyết

 
if (bt_E) 
S1; 
 
Trong cú pháp trên S1, S2 chỉ là 1 lệnh,  là biểu thức điều kiện của if 
Sự hoạt động của cấu trúc if:
 Trước hết biểu thức điều kiện  được tính, có hai khả năng:
→ Nếu giá trị của là ‘đúng’ (!=0) thì S1 được thực hiện và ra khỏi cấu trúc if.
→ Ngược lại nếu là ‘sai’ thì 
- với dạng đầy đủ : thực hiện S2 rồi kết thúc if 
- với dạng khuyết : kết thúc cấu trúc if 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
44
Ví dụ 2.1: chương trình nhập hai số nguyên a, b từ bàn phím, in số lớn nhất ra màn hình. 
#include  
#include  
void main() { 
int a,b; 
printf(“\nNhap so thu nhat : “);
scanf(“%d”, &a); 
printf(“\nNhap so thu hai : “);
scanf(“%d”, &b); 
if (a>b) 
printf(‘\nSo lon nhat la %d”, a); 
else
printf(‘\nSo lon nhat la %d”, b); 
getch(); 

 
 Ví dụ 2.2: Viết chương trình theo ví dụ 1.2 với yêu cầu nếu a,b,c thỏa mãn là 3 cạnh một 
tam giác thì tính và in chu vi, diện tích, nếu không thoả mãn thì in thông báo ra màn hình. 
 
Giải: Chúng ta biết 3 số a, b, c là 3 cạnh một tam giác nếu nó thoả mãn tính chất tổng hai 
cạnh lớn hơn cạnh thứ ba. Theo cách tính từ ví dụ 1.2 chúng ta có chương trình: 

#include  
#include  
#include  
void main() 
{ float a,b,c, p,q,s; 
printf("Nhap so do 3 canh cua tam giac "); 
printf("\na = "); scanf("%f", &a); 
printf("\nb = "); scanf("%f", &b); 
printf("\nc = "); scanf("%f", &c); 
if(a+b>c)&&(a+c>b)&&(b+c>a) 

p = a+b+c; q = p/2; 
s = sqrt(q*(q-a)*(q-b)*(q-c)); 
printf(" \n\nChu vi la %5.1f,\ 
dien tich la %5.2f ",p,s); 

else 
printf(“\nBa so da cho la ba canh tam giac”); 
getch();} 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
45
 
Lưu ý: Cấu trúc if cũng như các cấu trúc khác của ngôn ngữ C, chúng có thể lồng nhau, 
tức là chúng có thể chứa các cấu trúc điều khiển khác. 
Ví dụ 2.3: Chương trình giải phương trình bậc 2: ax
2
+ bx + c = 0, với các hệ số a, b, c là 
các số thực nhập từ bàn phím. 
Giải:  Để tìm nghiệm của phương trình bậc 2 một ẩn ta thực hiện theo các bước sau: 
ƒ
Nhập a,b,c từ bàn phím
ƒ
Tính delta = b

+ 4*a*c 
ƒ
Nếu delta = 0 (phương trình có nghiệm kép x) 
à
tính nghiệm x = -b/(2*a). 
ƒ
Ngược lại 
à
Nếu delta > 0 (phương trình có 2 nghiệm x1,x2 ) 
− x1 = (-b - sqrt(delta))/(2*a) 
− x1 = (-b + sqrt(delta))/(2*a) 
à
Ngược lại (delta < 0)
− phương trình không có thực 
Chương trình giải phương trình bậc 2 
 
#include  
#include  
#include  
void main(){
float a,b,c, delta, x1,x2; 
printf("\nNhap cac he so a,b,c : "); 
scanf("%f%f%f",&a,&b,&c); 
delta = b*b-4*a*c; 
if(delta==0) 
printf("\nPhuong trinh co nghiem kep \ 
x = %5.2f", -b/(2*a)); 
else 
if(delta > 0) 
{ x1 =(-b-sqrt(delta))/(2*a); 
x2 =(-b+sqrt(delta))/(2*a); 
printf("\nPhuong trinh cos 2 nghiem phan biet\ 
\n x1= %5.2f \n x2= %5.2f",x1,x2); 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
46

else 
printf("\nPhuong trinh khong co nghiem thuc"); 

 
 
 

tải về 2.34 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   31   32   33   34   35   36   37   38   ...   62




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương