| In tam giác-(Câu lệnh lặp FOR-WHILE) | |
|
Tác giả | Thông điệp |
---|
Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: In tam giác-(Câu lệnh lặp FOR-WHILE) Tue Jan 04, 2011 10:54 am | |
| | Tue Jan 04, 2011 10:54 am In tam giác-(Câu lệnh lặp FOR-WHILE) | | | Đề bài: Nhập số nguyên dương n.Hãy in các tam giác cân và vuông cân bằng dấu "*" có chiều cao là n. Yêu cầu:sử dụng câu lệnh if,for. - Code:
-
//IN TAM GIAC #include <stdio.h> #include <conio.h> void main() { int n,i,j; printf("Nhap vao so nguyen duong n: "); scanf("%d",&n); for (i=1;i<=n;i++) { for (j=1;j<=i;j++) printf(" *"); printf("\n"); } printf("\n"); for (i=1;i<=n;i++) { for (j=1;j<=(n-i);j++) printf(" "); for(int d=1;d<=(2*i-1);d++) printf(" *"); printf("\n"); } getch(); } Hướng giải: Ta cần in dấu *, khoảng trắng và dấu xuống hàng \n Với tam giác vuông cân: ta thấy dấu * và khoảng trắng liền nhau nên gộp chung lại trong lệnh printf("* ");(có khoảng trắng kế bên dấu *) để in ra nhìu dấu "* " ta dùng 1 câu lệnh for Khi in hết "* " ta cho in \n,cứ dòng này đến dòng khác lặp lại như vậy nên ta dùng vòng lặp for cho biến i tương ứng là số thứ tự dòng chạy từ 1 đến n, bên trong là vòng lặp in "* " và lệnh printf("\n") Với tam giác cân: ta làm tương tự như cần 1 vòng lặp in khoảng trắng xong tới 1 vòng lặp in dấu * , là lệnh printf("\n") khi hai lệnh for kết thúc, cả 3 nằm trong một lệnh for với biến i là số thứ tự dòng chạy từ 1 đến n. Dấu * và khoảng trắng in ra phải theo qui luật, ta xem tương ứng giữa biến i và số khoảng trắng, số dấu sao vì mỗi dòng thì in khác nhau. Code update IN tam giác cân - Code:
-
#include <stdio.h> #include <conio.h> void main() { int n; printf("Nhap vao n: "); scanf("%d",&n); for(int i=1;i<=n;i++) { for(int j=1;j<=n+i-1;j++) if(j<=n-i) printf(" "); else printf("* "); printf("\n"); } getch(); } Hướng giải: Dùng 2 vòng lặp, vòng xuống dòng và dòng in kí tự, dùng if để chọn in khoảng trắng hay in * In cả 2 tam giác cùng lúc - Code:
-
//IN CAC TAM GIAC #include <stdio.h> #include <conio.h> void main() { int n; printf("Nhap vao so nguyen duong n: "); scanf("%d",&n); for (int i=1;i<=n;i++) { for (int vuong=1;vuong<=i;vuong++) printf("* "); for (int kt=1;kt<=2*(n-i);kt++) printf(" "); for(int can=1;can<=(2*i-1);can++) printf(" *"); printf("\n"); } getch(); } Code update: - Code:
-
//IN CAC TAM GIAC #include <stdio.h> #include <conio.h> void main() { int n; printf("Nhap vao so nguyen duong n: "); scanf("%d",&n); for (int i=1;i<=n;i++) { for (int j=1;j<=i+2*n;j++) if(j<=i||j>2*n-i+1) printf("* "); else printf(" "); printf("\n"); } getch(); } Tboy
| | | | |
Được sửa bởi Tboy ngày Wed Jan 19, 2011 9:21 pm; sửa lần 10. |
|
| |
theday38 Vịt cồ
Tổng số bài gửi : 8 Cảm ơn : 10 Danh vọng : 0 Join date : 06/01/2011
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 9:29 pm | |
| |
|
| |
Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 9:36 pm | |
| |
|
| |
theday38 Vịt cồ
Tổng số bài gửi : 8 Cảm ơn : 10 Danh vọng : 0 Join date : 06/01/2011
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 9:41 pm | |
| |
|
| |
Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 9:46 pm | |
| |
|
| |
theday38 Vịt cồ
Tổng số bài gửi : 8 Cảm ơn : 10 Danh vọng : 0 Join date : 06/01/2011
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 9:54 pm | |
| |
|
| |
Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 10:10 pm | |
| |
|
| |
Lynrch Cá mập
Tổng số bài gửi : 59 Cảm ơn : 116 Danh vọng : 0 Join date : 05/01/2011 Age : 32 Đến từ : HCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 10:17 pm | |
| |
|
| |
theday38 Vịt cồ
Tổng số bài gửi : 8 Cảm ơn : 10 Danh vọng : 0 Join date : 06/01/2011
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 10:24 pm | |
| |
|
| |
Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 10:26 pm | |
| |
|
| |
theday38 Vịt cồ
Tổng số bài gửi : 8 Cảm ơn : 10 Danh vọng : 0 Join date : 06/01/2011
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Thu Jan 06, 2011 10:32 pm | |
| |
|
| |
Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Fri Jan 07, 2011 12:49 am | |
| |
|
| |
Lynrch Cá mập
Tổng số bài gửi : 59 Cảm ơn : 116 Danh vọng : 0 Join date : 05/01/2011 Age : 32 Đến từ : HCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Fri Jan 07, 2011 2:27 am | |
| | Fri Jan 07, 2011 2:27 am Re: In tam giác-(Câu lệnh lặp FOR-WHILE) | | | | | | | | |
|
| |
LeeSub Cá chép
Tổng số bài gửi : 24 Cảm ơn : 37 Danh vọng : 4 Join date : 11/01/2011
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Fri Jan 14, 2011 3:42 pm | |
| |
|
| |
Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Fri Jan 14, 2011 8:43 pm | |
| | Fri Jan 14, 2011 8:43 pm Re: In tam giác-(Câu lệnh lặp FOR-WHILE) | | | Cách giải thích của An đúng đó Theo kinh nghiệm làm bài in ra dấu * dạng hình học thì tất cả có thể qui về dùng 2 vòng lặp for(vì số vòng lặp là biết trước): một vòng lớn theo biến i đếm số dòng ( biến i mang vai trò là số thứ tự dòng), số dòng trong đoạn [1...n] nên ta có for(int i=1; i<=n;i++);bên trong vòng lặp lớn thực hiện 2 lệnh: in ra màn hình dấu * hoặc khoảng trắng( ta có vòng lặp for với biến j) và xuống dòng printf("\n"); nên gộp chung trong dấu {..} Điều kiện trong vòng for với biến j phụ thuộc vào số lượng in ra bao gồm dấu * và khoảng trắng, hay biến j mang vai trò là số kí tự in ra màn hình, điều kiện này thường liên quan đến i, n. Điều khó nhất là điều kiện chọn in ra dấu * hay là khoảng trắng, ta sẽ dùng câu lệnh if và đi tìm điều kiện theo sự biến thiên của dấu * hay khoảng trắng. Ví dụ:Ở bài tam giác vuông cân: - Code:
-
for (i=1;i<=n;i++) { for (j=1;j<=i;j++) printf(" *"); printf("\n"); } Vì số lượng dấu * in ra biến thiên theo số dòng ( dòng 1: * , dòng 2: * *...) nên có điều kiện j<= i, còn khoảng trắng thì gộp chung với dấu * trong lệnh printf("* "); Ở bài in tam giác cân: - Code:
-
for(int i=1;i<=n;i++) { for(int j=1;j<=n+i-1;j++) if(j<=n-i) printf(" "); else printf("* "); printf("\n"); } Tổng số lượng in ra mỗi dòng lại tăng một, biến thiên như biến i nên trong điều kiện có biến i; ta có thể dễ dàng nhận ra số lượng in ra bằng n+i-1. Ta đi tìm điều kiện in dấu * hoặc khoảng trắng. Số lượng khoảng trắng ban đầu là n và giảm dần theo số dòng nên ta có điều kiện if (j<=n-i) thì in khoảng trắng, ngược lại in dấu * Qui trình chạy trên 1 dòng của biến j: j chạy từ 1 đến n-i thì thực hiện in ra khoảng trắng j chạy từ n-i+1 ( j>n-i) đến n+i-1 thì in ra dấu * Kết thúc vòng for in ra trên 1 dòng thì xuống hàng, thực hiện in ở dòng kế. Chú ý: biến i hoặc j trong bài ta cho bắt đầu từ 1 đến điều kiện, ta có thể cho giá trị khác và sửa lại ở điều kiện lặp cho phù hợp số lượng in ra, ở một số bài việc cho biến i hoặc j mang giá trị khác 1 lại giúp bài toán dễ tìm điều kiện hơn như code sau chẳng hạn: - Code:
-
#include <stdio.h> #include <conio.h> #include <math.h> void main() { int n; printf("Nhap vao n: "); scanf("%d",&n); for(int i=-n;i<=n;i++) { for(int j=0;j<=abs(i);j++) printf("* "); printf("\n"); } } Tboy
| | | | | |
|
| |
LeeSub Cá chép
Tổng số bài gửi : 24 Cảm ơn : 37 Danh vọng : 4 Join date : 11/01/2011
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Fri Jan 14, 2011 9:08 pm | |
| |
|
| |
Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) Fri Jan 14, 2011 9:22 pm | |
| |
|
| |
Sponsored content
| Tiêu đề: Re: In tam giác-(Câu lệnh lặp FOR-WHILE) | |
| | Re: In tam giác-(Câu lệnh lặp FOR-WHILE) | | | | | | | | |
|
| |
| In tam giác-(Câu lệnh lặp FOR-WHILE) | |
|