Viết chương trình in ra một tam giác cân?

// chuong trinh in ra tam giác cân bang các dau *

int main ()
{
int n,i,j;
printf("nhap chieu cao tam giac:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
getch();
}

Cho em hỏi là chỗ vòng lặp for thứ 2 và thứ 3 như thế nào vậy, em không hiểu?

4 Likes
   for(j=1;j<=n-i;j++)
       printf(" ");/*in ra màn hình khoảng trắng đến vị trí thứ n-i */
   for(j=1;j<=2*i-1;j++)
       printf("*"); /*tiếp tục in ra màn hình * đến vị trí 2*i-1 */
   printf("\n"); /* chuyển xuống hàng tiếp theo */

http://codepad.org/DG9dYAla

Tại sao lại là 2*i - 1 anh nhỉ

Bạn nên dùng Markdown để dễ nhìn code
Cách dùng:

lấy quyển vở, có ô vuông, Vẽ * sao ra tam giác cân, (dấu * ở đường góc hình vuông).

Sau đó cầm ngẫm chừng 1 tiếng sẽ ngộ ra :v:

3 Likes

@nhatlonggunz nên lấy giấy có ô e viết ra là sẽ thấy. Giống như @BreakDown nói, ngồi ngẫm nghĩ chút là ra à

#include <stdio.h>

int main()
{
 float i,j,h,n;
 begin:
clrscr();
printf("\n Nhap h:");
scanf("%f", &h);
if (h > 25 || h<2)
	goto begin;
for (i=1;i<=h;i++)
	printf(" ");
printf("*");
printf("\n");
n=h;
for (j=2;j<h;j++)
{
	n-=1;
	for (i=1;i<=n;i++)
		printf(" ");
	printf("*");
	for(i=1;i<(h-n)*2;i++)
		printf(" ");
	printf("*");
	printf("\n");
}
for (i=1;i<=h;i++)
printf(" *");
getch();
return 0;
 }

VD: http://codepad.org/rU7C44HL

#include <stdio.h>
#include <stdlib.h>


int main ()
{
    int n,i,j;
    printf("nhap chieu cao tam giac:");
    scanf("%d",&n);
    n=10;
    printf("\n");
    for(i=1;i<=n;i++)
    {
       for(j=1;j<=n-i;j++)
           printf(" ");/*in ra màn hình khoảng trắng đến vị trí thứ n-i */
       for(j=1;j<=2*i-1;j++)
       {
         if (j==1||j==2*i-1)
             printf("*"); /*tiếp tục in ra màn hình * tại vị trí 1 và 2*i-1 */
         else 
             printf (" ");
       }
       printf("\n"); /* chuyển xuống hàng tiếp theo */
       if (i==n-1) /* đến hàng cuối cùng thì in ra cạnh đáy của tam giác*/
       {  
          for(j=1; j<=2*n-1;j++) 
               printf ("*");
          break ;
       
       }
    }
}

Bài vẽ một tam giác cân rỗng, mình sửa lại và bổ sung một ít bài của ban @slaomoking.

sao code của bác nó ra mà nó k ngưng lại cho xem v. thêm getch dô thì nó sai

Thế code vẽ ra tam giác cân ngược thì sao ạ? :frowning: em ngồi mò mãi k ra :(( vẽ xuôi thì vẽ đc :((

Thì cho vòng lặp nó chạy ngược về thôi

1 Like

bạn khai báo thử viện chưa. chưa khai báo thư viện thì sai là đúng rồi!

anh cho em hỏi 1 chút ạ ? ở bài của anh em có chép code và chạy thử sau đó viết lại theo ý tưởng của em nhưng ở đk cuối cùng “” if ( i==n-1) ấy ạ em không dùng lệnh " break; " thì nó tiếp tục in thêm 2 ký tự ** cách nhau 3 khoảng trắng , còn nếu em để lệnh " break;" thì vẫn đúng . anh có thể giải thích cho em được không ạ ? chức năng của lệnh " break;" ở đây là gì ạ

cho em hỏi vòng lặp for thứ 2 chỉ thực hiện một lần rồi chuyển xuống vòng lặp thứ 3 rồi thực hiện lại vòng lặp đầu phải không ạ??

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?