Các cấu trúc lặp
1) While
Cú pháp:
while(biểu_thức_đk)
Lệnh;
Lệnh ở đây có thể là một lệnh hoặc là một khối lệnh.
2) do/while
Cú pháp:
do
Lệnh;
while(biểu_thức_đk)
Lệnh ở đây có thể là một lệnh hoặc là một khối lệnh.
3) for
cú pháp:
for([biểu-thức 1];[biểu-thức 2];[biểu-thức 3])
lệnh;
trong đó:
biểu thức 1 là tên biến điều khiển.
biểu thức 2: điều kiện tiếp tục lặp.
bểu thức 3: thay đổi giá trị biến điều khiển.
lệnh cũng có thể là một lệnh hoắc một khối lệnh.
//Sự khác nhau giữa do/while và while là do/while chắc chắn thực hiện một lần lệnh còn while thì có thể không thực hiện lần lệnh nào nếu điều kiện sai ngay từ đầu.
Ví dụ: bài toán nhập vào một số nguyên n rồi tính giai thừa của nó.
Viết theo while
#include<stdio.h>
#include<conio.h>
main() {
int n;
int i=1;
long gt=1;
printf("nhap n = :");
scanf("%d",&n);
while(i<=n) {
gt=gt*i;
i++;
}
printf("giai thua cua % d la % ld",n,gt);
getch();
}
viết theo for
#include<stdio.h>
#include<conio.h>
main() {
int n;
int i=1;
long gt=1;
for(i=1;i<n;i++)
gt=gt*i;
Printf(“%d!=%ld”,n,gt);
Getch():
}
Tương tự hãy tính tổng các số từ một đến n, với n là môt số nguyên dương nhập từ bàn phím.
Giải:
Viết bằng while:
#include<stdio.h>
#include<conio.h>
main() {
int n;
int i=1;
long tong=0;
printf("nhap n = :");
scanf("%d",&n);
while(i<=n) {
tong=tong+i;
i++;}
printf("tong cua % d la % ld",n,tong);
getch();
}
Viết bằng lệnh for:
#include<stdio.h>
#include<conio.h>
main() {
int n;
int i=1;
long tong=0;
printf("nhap n = :");
scanf("%d",&n);
for(i=0;i<=n;i++)
tong=tong+i;
printf("tong cua % d la % ld",n,tong);
getch();
}
Ví dụ tiếp: yêu cầu người dùng nhập vào một số nguyên dương n, nếu nhập sai yêu cầu nhập lại.
Lơi giải:
Viết bằng while
#include<stdio.h>
#include<conio.h>
main() {
int n=1;
printf("nhap n = :");
scanf("%d",&n);
while(n<0) {
printf("nhap sai\n");
printf("nhap lai\n");
printf("n=");
scanf("%d",&n);
}
getch();
}