2017-01-15 2 views
-3
5 5 5 5 5 
    4 4 4 4 
    3 3 3 
     2 2 
     1 

как генерировать шаблон выше шаблона с помощью C я попытался этокак генерировать модель 5 5 5 5 5 4 4 4 4 3 3 3 2 2 1

int i, j, N; 

scanf("%d", &N); 

for(i=N; i>=1; i--) 
{ 
    //Logic to print spaces 
    for(j=N; j>i; j--) 
    { 
     printf(" "); 
    } 

    //Logic to print numbers 
    for(j=1; j<=i; j++) 
    { 
     printf("%d ", i); 
    } 
    for(j=N; j>i; j--) 
    { 
     printf(" "); 
    } 

    printf("\n"); 
} 
+3

Как генерировать хороший вопрос? Прочитайте [ask] и включите [mcve]. – Stargateur

+6

'#include int main() {printf (" 5 5 5 5 5 4 4 4 4 3 3 3 2 2 1n "); } '- Я думаю, что это –

+0

ahahah @EdHeal! Но я думаю, что вы забыли '\ n's: #include int main() {printf (" 5 5 5 5 5 \ n4 4 4 4 \ n3 3 3 \ n2 2 \ n1 "); } –

ответ

1

Начинающие должны помочь новичкам :-)

Вот несколько иной подход:

for (int i=0; i <= 5; i++) 
{ 
    for (int j=0; j<5 ; j++) 
    { 
     if (j >= i) 
      printf("%1d ", 5-i); 
     else 
      printf(" "); 
    } 
    printf("\n"); 
} 
0

Вы обр полпути правильно. .just удалить 3-й цикл внутри для цикла ..

scanf("%d", &N); 

for(i=N; i>=1; i--) 
{ 
    //Logic to print spaces 
    for(j=N; j>i; j--) 
    { 
     printf(" "); 
    } 

    //Logic to print numbers 
    for(j=1; j<=i; j++) 
    { 
     printf("%d ", i); 
    } 

    printf("\n"); 
} 
3

Ваша программа дает следующий вывод:

5 5 5 5 5 
4 4 4 4 
    3 3 3 
    2 2 
    1 

Для получения требуемого результата требуется очень простое изменение. Поскольку символы разнесены, вам нужно дополнительное пространство здесь:

//Logic to print spaces 
for(j=N; j>i; j--) 
{ 
    printf(" ");  // 2 spaces 
} 

Новый вывод программы:

5 5 5 5 5 
    4 4 4 4 
    3 3 3 
     2 2 
     1 
0

попробовать этот

int i, j, N; 
    scanf("%d", &N); 
    for (int i = N; i > 0; i--) 
    { 
     for (j = 0; j < N - i; j++) 
     { 
      printf(" "); 
     } 

     for(j = 1; j <= i; j++) 
     { 
      printf("%d ",i); 
     } 
     printf("\n"); 
    } 

выход:

5 5 5 5 5 
    4 4 4 4 
    3 3 3 
     2 2 
     1 
+1

Вместо того, чтобы просто сбрасывать код здесь, вы должны объяснить * как * и * почему * ваш код работает. –

6

Мы новички должны помогать друг другу.

Здесь вы

#include <stdio.h> 

int main(void) 
{ 
    while (1) 
    { 
     unsigned int n; 

     printf("Enter a non-negative number (0 - exit): "); 

     if (scanf("%u", &n) != 1 || n == 0) break; 

     printf("\n"); 

     for (unsigned int i = 0; i < n; i++) 
     { 
      printf("%*u", i + 1, (n - i) % 10); 
      for (unsigned int j = i + 1; j < n; j++ ) printf("%u", (n - i) % 10); 
      printf("\n"); 
     } 

     printf("\n"); 
    } 

    return 0; 
} 

Выход программы может выглядеть

Enter a non-negative number (0 - exit): 10 

0000000000 
999999999 
    88888888 
    7777777 
    666666 
    55555 
     4444 
     333 
     22 
     1 

Enter a non-negative number (0 - exit): 5 

55555 
4444 
    333 
    22 
    1 

Enter a non-negative number (0 - exit): 0 

Если вам необходимо включить пробел между выводимых цифр, то программа может выглядеть

#include <stdio.h> 

int main(void) 
{ 
    while (1) 
    { 
     unsigned int n; 

     printf("Enter a non-negative number (0 - exit): "); 

     if (scanf("%u", &n) != 1 || n == 0) break; 

     printf("\n"); 

     for (unsigned int i = 0; i < n; i++) 
     { 
      printf("%*u", 2 * i + 1, (n - i) % 10); 
      for (unsigned int j = i + 1; j < n; j++ ) printf(" %u", (n - i) % 10); 
      printf("\n"); 
     } 

     printf("\n"); 
    } 

    return 0; 
} 

Например, его вывод может выглядеть так:

Enter a non-negative number (0 - exit): 5 

5 5 5 5 5 
    4 4 4 4 
    3 3 3 
     2 2 
     1 

Enter a non-negative number (0 - exit): 4 

4 4 4 4 
    3 3 3 
    2 2 
     1 

Enter a non-negative number (0 - exit): 3 

3 3 3 
    2 2 
    1 

Enter a non-negative number (0 - exit): 2 

2 2 
    1 

Enter a non-negative number (0 - exit): 1 

1 

Enter a non-negative number (0 - exit): 0 
Смежные вопросы