Tóm Tắt
1. Câu lệnh break;
Câu lệnh break; dùng được cho tất cả các loại vòng lặp của C (while, do-while và for).
Câu lệnh break; có tác dụng thoát khỏi vòng lặp for tức thì và bỏ qua mọi lệnh ở phía sau nó trong vòng lặp.
Cú pháp:
break;
Ví dụ 1: Hãy nhập vào một số nguyên N và kiểm tra xem N có phải số nguyên tố không?
Chương trình được viết như sau:
#include<stdio
.h> #include<math
.h>int
main(){ ///Nhập vào một số N bất kỳ và kiểm tra xem N có phải ///là số nguyên tố hay không? ///Số nguyên tố là số nguyên dương >1 và chỉ chia hết cho ///1 và chính nó. Ví dụ: 2, 3, 5, 7, 11, 13, ... ///Cách thức xử lý: Cho 1 biến chạy i chạy từ 2 -> sqrt(N), ///và dùng 1 biến đánh dấu, nếu N chia hết cho i thì đánh dấu ///lại. Dựa trên giá trị của biến đánh dấu để kết luận N có ///là số nguyên tố hay không.float
N;int
i;int
laNguyenTo=1
; //Đây là biến đánh dấu, ban đầu chứa 1 với mục đích giả sử ban ban đầu N là số nguyên tố printf("
\n
Moi ban nhap vao mot so bat ky: "
); scanf("%f"
,&N);if
(N>1
&& N==(int
)N){ //Nếu N>1 và N là số nguyên thì mới check nguyên tốfor
(i=2
; i<=sqrt(N); i++){if
((int
)N%i==0
){ //nếu N chia hết cho i laNguyenTo=0
; //thì đặt biến laNguyenTo chứa 0break;
//, đồng thời thoát khỏi vòng lặp, không cần lặp thêm nữa
} }if
(laNguyenTo==1
){ //Nếu biến laNguyenTo không thay đổi giá trị so với ban đầu printf("
\n
%g la so nguyen to"
,N); //khẳng định N là số nguyên tố }else
{ //nếu không thì printf("
\n
%g khong phai la so nguyen to"
,N); //khẳng định N không phải số nguyên tố } }else
{//Nếu N không >1 và không phải số nguyên printf("
\n
%g khong du dieu kien de xac dinh tinh nguyen to"
,N); //, thì khẳng định N không đủ điều kiện xác định tính nguyên tố. }return
0
; }
Ví dụ 2: Nhập vào một chuỗi bất kỳ và kiểm tra xem chuỗi đó có chứa ký số (ký tự số, chữ số) hay không?
Solution tham khảo như sau:
#include<stdio
.h> #include<string
.h>void
nhapChuoi(char
chuoi[]){do
{ printf("
\n
Moi ban nhap chuoi (0<chuoi<30): "
); gets(chuoi); }while
(!(0
<strlen
(chuoi) && strlen(chuoi)<30
)); }void
kiemTraKySo(char
chuoi[]){int
i;int
timThay=0
;for
(i=0
; i<strlen
(chuoi); i++){if
(chuoi[i]>='0'
&& chuoi[i]<='9'
){ ///nếu một ký tự bất kỳ của chuỗi nằm ///trong đoạn ['0','9'] thì tức là chuỗi ///chứa ký số. timThay=1
;///đánh dấu việc tìm thấy ký số ///trong chuỗi. printf("
\n
Chuoi
\"
%s
\"
co chua ky so"
,chuoi);break;///thoát khỏi vòng lặp for mà không cần
///lặp thêm lần nào.
} }if
(timThay==0
){ printf("
\n
Chuoi
\"
%s
\"
khong chua ky so"
,chuoi); } }int
main(){ ///Bài toán: Hãy kiểm tra xem có tồn tại ký số ///(ký tự số hay chữ số) trong chuỗi hay không?char
chuoi[30
]; nhapChuoi(chuoi); kiemTraKySo(chuoi);return
0
; }
Ví dụ 3: Nhập vào một chuỗi bất kỳ và cắt những ký tự trắng (space) ở cuối chuỗi?
Solution tham khảo như sau:
#include<stdio
.h> #include<string
.h>void
nhapChuoi(char
chuoi[]){do
{ printf("
\n
Moi ban nhap chuoi (0<chuoi<30): "
); gets(chuoi); }while
(!(0
<strlen
(chuoi) && strlen(chuoi)<30
)); }void
catKyTuCachCuoiChuoi(char
chuoi[]){int
i;for
(i=strlen(chuoi)-1
; i>=0
; i--){ ///cho biến chạy i chạy từ cuối chuỗi về ///đầu chuỗi.if
(chuoi[i]!=' '
){///nếu phát hiện ký tự nào ///không phải ký tự cách chuoi[i+1
]='
\0
'
;///thì đặt vào vị trí sau ///ký tự đó '\0'break;
///và thoát khỏi vòng lặp
} } }int
main(){ ///Bài toán: Hãy cắt các ký tự trắng (space) ở ///cuối chuỗi? ///Phân tích bài toán: Mỗi chuỗi trong C bao giờ ///cũng có 1 ký tự kết thúc chuỗi là '\0' hoặc ///tương đương với NULL. Như vậy có nghĩa là nếu ///ta đặt ký tự '\0' ở một vị trí nào đó trong chuỗi ///thì tức là chuỗi sẽ kết thúc tại vị trí đó. ///Ví dụ như ta có chuỗi "ABCD1234" thì nếu ta đặt ///ký tự '\0' vào chuỗi là "ABCD\01234" thì chuỗi ///lúc này sẽ là "ABCD". ///Vậy nếu ta có chuỗi "ABCD " thì ta có thể cắt ///những ký tự trắng (space) ở cuối chuỗi bằng cách ///đặt ký tự '\0' vào chuỗi thành "ABCD\0 " thì ///chuỗi sẽ thành "ABCD" => tức là cắt được các ///ký tự trắng ở cuối chuỗi. ///*Thuật toán: Ta cho một biến chạy i chạy từ cuối ///chuỗi về đầu chuỗi, nếu phát hiện ký tự nào không ///phải là ký tự cách thì đặt '\0' vào sau ký tự đó. ///*Tiến hành xử lý:char
chuoi[30
]; nhapChuoi(chuoi); printf("
\n
Truoc khi cat ky tu trang cuoi chuoi, ta duoc:
\"
%s
\"
"
,chuoi); catKyTuCachCuoiChuoi(chuoi); printf("
\n
Sau khi cat cac ky tu trang cuoi chuoi, ta duoc:
\"
%s
\"
"
,chuoi);return
0
; }
2. Câu lệnh continue;
Câu lệnh continue; dùng để bỏ qua những lệnh còn lại trong khối lệnh của lần lặp hiện thời.
Theo đó tất cả các câu lệnh phía sau continue; nhưng nằm trong khối lệnh của vòng lặp sẽ bị bỏ qua tại lần lặp hiện thời.
Cú pháp:
continue;
Ví dụ 1: In ra những số chẵn trong đoạn 1-100 dùng continue?
Solution tham khảo như sau:
#include<stdio
.h>int
main(){int
i; printf("
\n
Nhung so chan trong doan 1-100:"
);for
(i=1
; i<=100
; i++){//lấy từng số raif
(i%2
!=0
){//kiểm tra nếu không chia hết cho 2continue;
//thì bỏ qua lần lặp hiện thời
} printf("
\n
%d"
,i);//lệnh này sẽ được thực thi //nếu i chia hết cho 2 }return
0
; }