печать цифры c пирамида в C, начиная с наибольшего числа сверху - PullRequest
0 голосов
/ 29 февраля 2020

Я искал на сайте об этом виде пирамиды и по всему rnet, но не нашел что-то, что близко к нему, я незнаком с кодированием и не могу понять это по myslef, я думаю. Я пытался изменить другие кодируют, чтобы получить результат, который я хочу, но безуспешно.

Я должен создать код, который печатает пирамиду, начиная с введенного числа сверху, а затем постепенно расширяясь со следующими числами.

Пример ввода: 5

Вывод:

    55
   4554
  345543
 23455432
1234554321

Я могу сделать половину проблемы с пирамидой - это ее падение вниз

#include <stdio.h>
#include <math.h>

int main(){
int i,j,num;
printf("number:");
scanf("%d",&num);
for(i=1;i<=num;i++){
    j=num;

    for(j;j>=i;j--){
        printf("%d",j);
    }printf("\n");


}
  return 0;
}

Вывод:

number:5
54321
5432
543
54
5

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

#include <stdio.h>
#include <math.h>

int main(){
int i,j,num,k;
printf("number:");
scanf("%d",&num);
for(i=1;i<=num;i++){

    for(k=1;k<=num;k++){
        printf("%d",k);
    }


    j=num;
    for(j;j>=i;j--){
        printf("%d",j);
    }printf("\n");


}
  return 0;
}

Вывод:

number:5
1234554321
123455432
12345543
1234554
123455

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Мои пять центов .:)

#include <stdio.h>

int main(void) 
{
    while ( 1 )
    {
        const int UPPER_LIMIT = 10;

        printf( "Enter a non-negative integer number less than %d (0 - exit): ",
                UPPER_LIMIT );

        int n;

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

        if ( !( n < UPPER_LIMIT ) ) n = UPPER_LIMIT - 1;

        putchar( '\n' );

        for ( int i = 0; i < n; i++ )
        {
            printf( "%*d", n - i, n - i );

            int j = n - i;
            while ( j++ != n ) putchar( '0' + j );
            while ( j-- != n - i ) putchar( '0' + j );

            putchar( '\n' );
        }

        putchar( '\n' );
    }

    return 0;
}

Вывод программы может выглядеть следующим образом

Enter a non-negative integer number less than 10 (0 - exit): 9

        99
       8998
      789987
     67899876
    5678998765
   456789987654
  34567899876543
 2345678998765432
123456789987654321

Enter a non-negative integer number less than 10 (0 - exit): 8

       88
      7887
     678876
    56788765
   4567887654
  345678876543
 23456788765432
1234567887654321

Enter a non-negative integer number less than 10 (0 - exit): 7

      77
     6776
    567765
   45677654
  3456776543
 234567765432
12345677654321

Enter a non-negative integer number less than 10 (0 - exit): 6

     66
    5665
   456654
  34566543
 2345665432
123456654321

Enter a non-negative integer number less than 10 (0 - exit): 5

    55
   4554
  345543
 23455432
1234554321

Enter a non-negative integer number less than 10 (0 - exit): 4

   44
  3443
 234432
12344321

Enter a non-negative integer number less than 10 (0 - exit): 3

  33
 2332
123321

Enter a non-negative integer number less than 10 (0 - exit): 2

 22
1221

Enter a non-negative integer number less than 10 (0 - exit): 1

11

Enter a non-negative integer number less than 10 (0 - exit): 0
0 голосов
/ 29 февраля 2020
#include <stdio.h>

int baseNum;    //These global variables exist just to help the beginners to
int col;        //read the program and understand the logic involved

void print() {  //In the real word col and baseNum is passed to print
     if (col < baseNum)
        printf(" ");
     else
        printf("%d", col);
}

int main() {
    int num;
    printf("number:"); scanf("%d",&num);    //num < 11

    baseNum = num;

    for (int line = 0; line < num; ++line) {
        col = 1;
        do {                            //Left line side
            print();
        } while (++col <= num);
        do {                            //Right line side
            --col;
            print();
        } while (col);

        --baseNum;

        printf("\n");
    }

    return 0;
}
...