2013-10-04 3 views
-5

Мне нужно создать треугольник, как этотСоздать треугольник

* 
** 
*** 
**** 
***** 

Я сделал это. Но мой треугольник не выглядит так:

#include <stdio.h> 

int main() 
{ 
    int k, l; 

    for(k=1; k<=5; k++) 
    { 
     for(l=k; l<=5; l++) 
      printf(" "); 

     for(l=0; l<=k-1; l++) printf("*"); 
     printf("\n"); 
    } 
    return 0; 
} 

скажите мне, где моя ошибка?

+6

Многие дубликаты, например. [Рисование треугольника с помощью звездочек] (http://stackoverflow.com/questions/12711553/drawing-triangle-using-asterisks) и [Печать треугольника звездочек] (http://stackoverflow.com/questions/9244912/ print-a-triangle-of-asterisks) - это, по-видимому, обычная домашняя проблема, которая возникает каждый год. –

+2

@PaulR примерно 10 раз в год в то время, когда начинается новый семестр, если быть более точным. –

+4

Тем не менее он показал свое усилие в коде и попросил ошибку. Выполните голосование, чтобы оценить это, и тех, кто просто просит других выполнить свои задания. – fayyazkl

ответ

3

Вам не нужно 3 петли - это ненужное:

int k, l; 
for(k=1; k<=5; k++) // outer loop 
{ 
    for(l=0; l<k; l++) // inner loop 
     printf("*"); 
    printf("\n"); 

} 

Идея проста продолжать печатать звезды в внутреннем цикле, пока l меньше k. Так как число строк увеличивается (отслеживается k), так и количество звезд. Ваш фиксированный код:

for(k=1; k<=5; k++) 
    { 
     for(l=0; l<=k-1; l++) printf("*"); 
     printf("\n"); 
    } 
+0

Вы можете абстрагироваться от внутреннего цикла: 'void printn (int n, char * s) {while (0

+1

+1 для объяснения кода ... Я бы вынул слово просто, поскольку это субъективно, если эти проблемы были просты для всех, тогда они не спрашивать –

0

Просто удалите пространство для печати петли. Остальная часть кода кажется прекрасной.

Смежные вопросы