for(i=0, j= i +2; i<2,j <6; i++,j++)
printf(“\ni = %d, j = %d);
thì kết quả sẽ là:
i=0, j=2
i=1, j=3
i=2, j=4
i=3, j=5
Như vậy vòng lặp dừng không theo điều kiện i <2 mà theo điều kiện j <6. Tức là
giá trị của biểu thức bên phải nhất trong danh sách các biểu thức quyết định điều kiện của
của vòng lặp – điều này do toán tử (, ) trả về toán hạng bên phải.
Ví dụ 6.1: Chương trình in các kí tự có mã từ 32 tới 255 trong bảng mã ASCII
Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C
60
1:
#include
2:
void main(void)
3:
{
4:
int i;
5:
for(i=32; i<256; i++)
6:
{
7:
if ((i - 31) %10==0) printf("\n");
8:
printf("%c -%d;",i,i);
9:
}
10:
getch();
11:
}
Giải thích: trong chương trình trên chúng ta sử dụng vòng lặp for
- biểu thức khởi đầu : i =32
- biểu thức điều kiện : i <256
- bước nhảy i ++
như vậy vòng lặp sẽ được thực hiện 224 lần, mỗi bước lặp nếu (i –31)%10 ==0 thì chúng
ta chuyển con trỏ xuống dòng mới (lệnh trên dòng 7) – có nghĩa là cứ sau 10 bước thì
chúng ta chuyển sang dòng mới, với mỗi i chúng ta in kí tự có mã là i cùng giá trị của nó
(lệnh printf trên dòng 8).
Ví dụ 6.2: chương trình nhập n số nguyên từ bàn phím, tìm và in số lớn nhất, nhỏ nhất.
Giải:
Giả sử chúng ta có một dãy số a
1
, a
2
, .., a
n
để xác định giá trị lớn nhất (gọi là max) và số
nhỏ nhất (min)chúng ta thực hiện theo cách sau:
1.
max = min = a
1
( xem một số đầu tiên là lớn nhất và cũng là nhỏ nhất)
2. i=2
3. nếu i > n thì thì kết thúc, ngược lại thì
nếu a
i
> max thì max = a
i
ngược lại, nếu a
i
< min thì min =a
i
i =i+1
4. lặp lại bước 3
Khi kết thúc chúng ta có giá trị lớn nhất là max, giá trị nhỏ nhất là min.
Nhưng cho tới bây giờ chúng ta chưa thể lưu được n số (trong yêu cầu này chúng ta cũng
không cần phải lưu chúng) , vì thế chúng ta thực hiện theo phương pháp sau:
1:
Nhập số thứ nhất từ bàn phím vào a
2:
max = min = a ( xem một số đầu tiên là lớn nhất và cũng là nhỏ nhất)
3:
i=2
4:
nếu i > n thì thì kết thúc, ngược lại thì
Nhập số thứ i từ bàn phím vào a
nếu a
> max thì max = a
Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C
61
ngược lại, nếu a
< min thì min =a
i =i+1
5:
lặp lại bước 4
Các bạn có chương trình như sau
#include
#include
void main(){
int n,a,max,min,i;
do{
printf("Nhap so phan tu cua day : ");
scanf("%d", &n);
}while(n<1);
printf("Nhap so thu nhat : ");
scanf("%d",&a);
max=min=a;
for(i=2; i<=n; i++)
{
printf("Nhap so thu nhat : ");
scanf("%d",&a);
if(a>max) max=a;
else
if(amin =a;
}
printf("\n gia tri lon nhat = %d\n \
gia tri nho nhat = %d",max,min);
}
256>2>
Chia sẻ với bạn bè của bạn: |