Lập trình C: break; và continue;

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

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-whilefor).

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("\nMoi 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 0
        break; //, đồ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("\nMoi 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("\nChuoi \"%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("\nChuoi \"%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("\nMoi 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("\nTruoc khi cat ky tu trang cuoi chuoi, ta duoc: \"%s\"",chuoi);
  catKyTuCachCuoiChuoi(chuoi);
  printf("\nSau 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("\nNhung so chan trong doan 1-100:");
  for(i=1; i<=100; i++){//lấy từng số ra
    if(i%2!=0){//kiểm tra nếu không chia hết cho 2
    continue;//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;
}
» Tiếp: Hàm (Function)
« Trước: Vòng lặp do-while
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!