CÂU LỆNH LẶP VỚI SỐ LẦN XÁC ĐỊNH
6.1 Lệnh for:
Cú pháp:
for ([biểu thức 1]; [biểu thức 2]; [biểu thức 3])
<khối lệnh>;
Ý nghĩa: Là vòng lặp với số lần lặp được xác định trước, tức thực hiện <khối lệnh> n lần (n>=0), Quá trình lặp kết thúc khi [biểu thức 2]cho giá trị sai, hoặc khi thực hiện <khối lệnh> gặp lệnh nhảy ra khỏi vòng lặp
Diễn giải:
- Biểu thức 1: khởi tạo giá trị ban đầu cho biến điều khiển.
- Biểu thức 2: là quan hệ logic thể hiện điều kiện tiếp tục vòng lặp.
- Biểu thức 3: phép gán dùng thay đổi giá trị biến điều khiển.
Nhận xét:
- Biểu thức 1 bao giờ cũng chỉ được tính toán một lần khi gọi thực hiện for.
@ Lưu ý:
- Biểu thức 1, 2, 3phải phân cách bằng dấu chấm phẩy (;)
- Nếu biểu thức 2 không có, vòng for được xem là luôn luôn đúng. Muốn thoát khỏi vòng lặp for phải dùng một trong 3 lệnh break, goto hoặc return.
- Với mỗi biểu thức có thể viết thành một dãy biểu thức con phân cách nhau bởi dấu phẩy. Khi đó các biểu thức con được xác định từ trái sang phải. Tính đúng sai của dãy biểu thức con trong biểu thức thứ 2 được xác định bởi biểu thức con cuối cùng.
- Trong thân for (<khối lệnh>) có thể chứa một hoặc nhiều cấu trúc điều khiển khác.
- Khi gặp lệnh break, cấu trúc lặp xâu nhất sẽ thoát ra.
- Trong thân for có thể dùng lệnh goto để thoát khỏi vòng lặp đến vị trí mong muốn.
- Trong thân for có thể sử dụng return để trở về một hàm nào đó.
- Trong thân for có thể sử dụng lệnh continue để chuyển đến đầu vòng lặp (bỏ qua các câu lệnh còn lại trong thân).
Ví dụ 1: Viết chương trình in ra màn hình n số tự nhiên đầu tiên.
#include <stdio.h>
#include <conio.h>
void main(void)
{
int i, n;
printf("Nhap vao gia tri n:");
scanf("%d", &n);
for(i = 1; i<=n; i++)
printf("%d :", i);
getch();
}
// trường hợp in theo chiều ngược lại
for(i = n; i>=1; i--)
printf("%d :", i);
Ví dụ 2: Viết chương trình nhập vào số nguyên n. Tính tổng các giá trị lẻ nhỏ hơn n.
#include <stdio.h>
#include <conio.h>
void main(void)
{
int i, in, is = 0;
printf("Nhap vao so n: ");
scanf("%d", &in);
is = 0;
for(i = 0; i<in; i++)
if (i % 2 != 0) //neu i la so le
is = is + i; //hoac is += i;
printf("Tong: %d", is);
getch();
}
Ví dụ 3: Đọc vào một loạt kí tự trên bàn phím, đếm số kí tự nhập vào. Kết thúc khi gặp dấu chấm '.'
#include <stdio.h>
#include <conio.h>
#define DAU_CHAM '.'
void main(void)
{
char c;
int idem;
for(idem = 0; (c = getchar()) != DAU_CHAM; )
idem++;
printf("So ki tu: %d.\n", idem);
getch();
}
Cách khác, dùng vòng lặp for khuyết các biểu thức
#include <stdio.h>
#include <conio.h>
#define DAU_CHAM '.'
void main(void)
{
char c;
int idem = 0;
for(; ;)
{
c = getchar();
if (c == DAU_CHAM) //nhap vao dau cham
break; //thoat vong lap
idem++;
}
printf("So ki tu: %d.\n", idem);
getch();
}
Bài tập thực hành
1. Viết chương trình in ra bảng mã ASCII
2. Viết chương trình tính tổng bậc 3 của N số nguyên đầu tiên.
3. Viết chương trình nhập vào một số nguyên rồi in ra tất cả các ước số của số đó.
4. Viết chương trình tính tổng nghịch đảo của N số nguyên đầu tiên theo công thức
S = 1 + 1/2 + 1/3 + … + 1/N
5. Viết chương trình tính tổng bình phương các số lẻ từ 1 đến N.
6. Viết chương trình nhập vào N số nguyên, tìm số lớn nhất, số nhỏ nhất.
7. Viết chương trình nhập vào N rồi tính giai thừa của N
7.1 Lệnh while
Vòng lặp thực hiện lặp lại khối lệnh trong khi biểu thức còn đúng
+ Cú pháp:
while (biểu thức)
<khối lệnh>;
Diễn giải:
- Biểu thức: có thể là một biểu thức hoặc nhiều biểu thức con. Nếu là nhiều biểu thức con thì cách nhau bởi dấu phẩy (,) và tính đúng sai của biểu thức được quyết định bởi biểu thức con cuối cùng.
- Trong thân while (<khối lệnh>) có thể chứa một hoặc nhiều cấu trúc điều khiển khác.
- Trong thân while có thể sử dụng lệnh continue để chuyển đến đầu vòng lặp (bỏ qua các câu lệnh còn lại trong thân).
- Muốn thoát khỏi vòng lặp while tùy ý có thể dùng các lệnh break, goto, return như trong lệnh for.
Ý nghĩa: Trước tiên biểu thức được kiểm tra, nếu sai thì kết thúc vòng lặp while (<khối lệnh> không được thi hành1 lần nào) nếu đúng thực hiện khối lệnh; lặp lại kiểm tra biểu thức
Ví dụ 1: Viết chương trình in ra n số tự nhiên đầu tiên.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <studio> #include <studio> #include <studio> void main( void ) { int in,i=0; printf (“nhap gia tri n”); scanf (“%d”,&in) while (i++ <=n) printf ( "%d" , i); getch(); } |
Ví dụ 2: Viết chương trình tính tổng các số nguyên từ 1 đến n, với n được nhập vào từ bàn phím.
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
| #include <studio> #include <studio> #include <studio> void main( void ) { int i = 0, in, is = 0; printf ( "Nhap vao so n: " ); scanf ( "%d" , &in); while (i++ < in) is = is + i; //hoac is += i; printf ( "Tong: %d" , is); getch(); } |
7.2 Lệnh do-while
Vòng lặp thực hiện lặp lại khối lệnh cho đến khi biểu thức cho gia trị sai.
+ Cú pháp:
do
<khối lệnh>;
while (biểu thức);
Diễn giải:
- Biểu thức: có thể là một biểu thức hoặc nhiều biểu thức con. Nếu là nhiều biểu thức con thì cách nhau bởi dấu phẩy (,) và tính đúng sai của biểu thức được quyết định bởi biểu thức con cuối cùng.
- Trong thân do…while (<khối lệnh>) có thể chứa một hoặc nhiều cấu trúc điều khiển khác.
- Trong thân do…while có thể sử dụng lệnh continue để chuyển đến đầu vòng lặp (bỏ qua các câu lệnh còn lại trong thân).
- Muốn thoát khỏi vòng lặp do…while tùy ý có thể dùng các lệnh break, goto, return
Ý nghĩa
Thực hiện khối lệnh. Kiểm tra biểu thức, nếu đúng thì lặp lại thực hiện khối lệnh, nếusai thì kết thúc vòng lặp.
Ví dụ 3: Viết chương trình kiểm tra password.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| #include <studio> #include <studio> # define PASSWORD 12345 void main( void ) { int in; do { printf ( "Nhap vao password: " ); scanf ( "%d" , &in); } while (in != PASSWORD) } |
7.3 Bài tập thực hành
1. Viết chương trình tìm USCLN, BSCNN của 2 số.
2. Viết chương trình nhập vào một số và kiểm tra xem số đó có phải là số nguyên tố hay không?
3. Viết chương trình tính số hạng thứ n của dãy Fibonaci.
Dãy Fibonaci là dãy số gồm các số hạng p(n) với:
p(n) = p(n-1) + p(n-2) với n>2 và p(1) = p(2) = 1
Dãy Fibonaci sẽ là: 1 1 2 3 5 8 13 21 34 55 89 144…
4. Viết chương trình in ra bảng cửu chương
5. Viết chương trình xác định xem một tờ giấy có độ dày 0.1 mm. Phải gấp đôi tờ giấy bao nhiêu lần để nó có độ dày 1m.
6. Viết chương trình tìm các số nguyên tố từ 2 đến N, với N được nhập vào.
7. Viết chương trình tính biểu thức: 1-2+3-4+…+(2n-1)-2n
Post a Comment