1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình ngôn ngữ C++ Part 7

8 8 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Cấu trúc switch Cấu trúc switch cho phép lựa chọn một nhánh trong nhiều khả năng tuỳ vào điều kiện xẩy ra. Cú pháp như sau

Giáo trình tin học sở II - Ngụn ng C IV.3 Cấu trúc switch Cấu trúc switch cho phép lựa chọn nhánh nhiều khả tuỳ vào điều kiện xẩy Cú pháp sau switch () { case : S1 ; case : S2 ; case : Sn ; [ default : S ; } ] Trong − biểu thức nguyên − , , , biểu thức hằng, nguyên chúng phải khác − S1,S2, , Sn , S nhiều lệnh gọi thân cấu trúc switch − case, default từ khoá Sự hoạt động switch ƒ Đầu tiên tính, sau so sánh giá trị với biểu thức , , ƒ Nếu giá trị biểu thức thứ k biểu thức trùng với giá trị chương trình thực lệnh Sk tiếp tục lệnh phía khi: ƒ gặp câu lệnh : break (tất nhiên gặp câu lệnh return, exit kết thúc) gặp dấu đóng móc } hết cấu trúc switch Nếu không trùng với giá trị biểu thức câu lệnh S (các lệnh sau mệnh đề default có) thực hiện, ri cu trỳc switch 46 Giáo trình tin häc c¬ së II - Ngơn ngữ C Ví dụ 3.1: Chương trình nhập biểu thức đơn giản dạng a⊗b (a, b số nguyên, ⊗ dấu phép toán số học +, -, *, x, /, :,) tính in kết Giải : Ở giả sử dùng phép nhân dấu * chữ x, phép chia dấu : hay / Giả thiết người dùng nhập biểu thức dạng a⊗b Chúng ta có chương trì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: 26: 27: #include #include void main() { int a,b; char tt; // dấu toán tử printf("\nnhap bieu thuc don gian :"); scanf("%d%c%d",&a,&tt,&b); switch(tt) { case '+': printf("\n %d %c %d = %d ",a,tt,b, a+b); break; case '-': printf("\n %d %c %d = %d ",a,tt,b, a-b); break; case 'x': case '*': printf("\n %d %c %d = %d ",a,tt,b, a*b); break; case ':': case '/': if(b!=0) printf("\n %d %c %d = %d ",a,tt,b, a/b); else printf("loi chia cho 0"); break; default: printf("\n\nkhong hieu phep toan %c",tt); } getch(); } Trong chương trình ví dụ bạn nhập biểu thức ví dụ 9+2 tức ta có a=9, b=2, tt (dấu toán tử) = ‘+’ Như mệnh đề case ‘+’ (dịng 11) đúng, chương trình thực câu lệnh printf("\n %d %c %d = %d ",a,tt,b, a+b); break; chương trình in kết + = 11 khỏi cấu trúc switch (nhảy tới dịng 26) 47 Giáo trình tin học sở II - Ngụn ngữ C Nếu bạn nhập 9*2 9x2, hoạt động tương tự kết in * = 18 x = 18 Nếu bạn nhập khơng phép tốn khơng khn dạng mệnh đề default thực bạn nhận thông báo ‘khong hieu phep toan ’ Lưu ý : − Khi hết lệnh (Si) tương ứng mệnh đề case khơng có câu lệnh break (hoặc lệnh kết thúc khác) điều khiển chuyển tới lệnh Si+1 mà khơng cần kiểm tra biểu thức có hay khơng − Mệnh đề default xuất vị trí tuỳ ý thân switch không thiết phải cuối cấu trúc ( tất nhiên cần câu lệnh break) − Cấu trúc switch lồng chứa cấu trúc điều khiển khác IV.4 Cấu trúc while while cấu trúc điều khiển lặp thực lệnh hay khối lệnh với số lần lặp xác định tuỳ theo điều kiện (gọi điều kiện lặp) Cấu trúc while sau: while () S; Trong bt biểu thức biểu thức điều kiện lặp, S thân while câu lệnh Sự hoạt động while sau: bước 1: tính giá trị bước 2: giá trị tính ‘sai’ (==0) kết thúc while bước 3: giá trị ‘đúng’ (!=0) thực S bước 4: quay lại bước ta có sơ đồ điều khiển while sau Ví dụ 4.1: Tìm ước số chung lớn số nguyên x, y theo thuật toán sau: a = x; b = y; b1: (a = b) ước số chung lớn a, kết thúc 48 Giáo trình tin học sở II - Ngụn ng C ngược lại (a !=b) tới bước b2: - a > b ta tính a = a- b ngược lại ta tính b =b – a quay lại bước Như phát biểu sau Chừng (a !=b) lặp lại a >b a = a-b ngược lại b = b -a kết thúc vịng lặp a=b ước chung lớn x y Đó xét trường hợp x, y số nguyên >0 Trong trường hợp hai số ước số chung lớn trị tuyệt đối số lại, số khơng xác định ước số chung lớn có chương trình sau #include #include #include void main() { int a,b,x,y; printf("nhap so x, y : "); scanf("%d%d", &x,&y); a = abs(x); // a trị tuyệt đối x b = abs(y); // b trị tuyệt đối y if(a+b==0) printf("ca hai so bang 0"); else if(a*b==0) printf("uoc so chung lon nhat la %d ", a+b); else { while(a!=b) if(a>b) a-=b; else b-=a; printf("uoc so chung lon nhat la %d", a); } getch(); } 49 Giáo trình tin học c¬ së II - Ngơn ngữ C Ví dụ 4.2: Viết chương trình cho phép người sử dụng nhập ký tự bàn phím, in kí tự mã hình, kết thúc chương trình người dùng bấm phím ESC (mã 27) Giải: mơ tả bước chương trình sau 1: nhận ký tự từ bàn phím, mã lưu biến ch ch= getch(); : ch ==ESC kết thúc, ngược lại chuyến sang bước 3 : in ký tự mã printf(“\nKy tu %c co ma %d”, ch,ch) 4: quay lại Vậy có chương trình // In ki tu #include #include #include const int ESC =27; // ma phim ESC void main(){ int ch; while((ch=getch())!=ESC) printf("\nKi tu %c co ma %d",ch,ch); } Nhận xét: − while cấu trúc điều khiển lặp với điều kiện trước, tức điều kiện lặp kiểm tra trước vào thân vòng lặp, biểu thức điều kiện có giá trị ‘sai’ từ đầu thân while khơng thực lần − thân while phải có lệnh để làm thay đổi giá trị biểu thức điều kiện Hoặc biểu thức điều kiện ln có giá trị ‘đúng’ - gọi vịng lặp khơng kết thúc, thân while phải có lệnh để chấm dứt vịng lặp (xem lệnh break) ví dụ while (1) // biểu thức điều kiện { printf(“\n Hay bam mot phim: ); ch = getch(); 50 Giáo trình tin học c¬ së II - Ngơn ngữ C if(ch==27) break; printf(“ky tu %c co ma la %d”,ch,ch); } Ví dụ 4.3: Viết chương trình nhập số ngun n từ bàn phím, n 0, tính in giá trị n! (giai thừa n), với n! = 1*2*, ,*(n-1)*n Giải: Theo yêu cầu n nhập từ bàn phím phải thoả mãn n > n

Ngày đăng: 20/05/2021, 08:44

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN