С циклом подсчета

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

  • 12345
  • 1234
  • 123
  • 12
  • 1

мой код пока

int x;
int y = 1;

for (x=1; x<=5; x++)
{
        while(y<=5)
        {
            printf("%d", y);
            y++;
        }
}

это то, что я имею до сих пор и не знаю, куда идти дальше, если кто-нибудь может помочь, я буду благодарен.

6 ответов

Решение

Близко. Ваш внешний цикл должен считать вниз, а не вверх, а ваш внутренний цикл должен считать от 1 до x.

int x, y;

for (x=5; x>=1; x--)
{
    for (y=1;y<=x;y++)
    {
        printf("%d", y);
    }
    printf("\n");
}

Это еще одно решение, использующее только цикл FOR с целочисленным делением. Пытаться:

#include <stdio.h>

int main(void){

    int n= 12345, i;

    for(i=n;i>0;i/=10){
        printf("%d\n",i);
    } 

    return 0;
}

Для развлечения: еще один подход, который просто делит каждый цикл. Но используйте лучший ответ

int main(void) {
  int x = 12345;
  do {
    printf("%d\n", x);
    x /= 10;
  } while (x);
  return 0;
}

Выход

12345
1234
123
12
1

You need to make 2 changes to your outer loop in order to get the expected output.

  1. for (x=1; x<=5; x++) должно быть for (x=1; x<=5; x--) because your program will count up to 5 the first time, 4 the second time, 3 the third time, etc..
  2. Вы должны включить printf("\n") so a new line is printed after each sequence is output.

You need to make 1 change to your inner loop as well:

  1. Вместо y <= 5 Ты должен сказать y <= x так как x will always be equal to the last number that you want to print since you're decrementing it in the outer loop.

Вы должны увидеть нужный вам шаблон и применить его в циклах, чтобы получить его.

Вам нужен выход 12345 1234 123 12 1, Итак, первая итерация должна начинаться с 1 и идти до 5вторая должна начинаться с 1 и идти до 4, и так далее..

Таким образом, внешний цикл должен давать конечные пределы для внутреннего цикла, а внутренний должен всегда начинаться с 1,

Пытаться

for (x=5; x>=1; x--)
{
    y = 1;              // because the number always start with 1
    while(y<=x)
    {
        printf("%d", y);
        y++;
    }
    printf("\n");       //to go to next line
}

Другое решение заключается в использовании integer division и использовать один единственный цикл:

int x = 12345;

// repeat this loop as long as x != 0
while (x)
{
    printf("%d\n", x);
    x /= 10; // x = x/10;
}
Другие вопросы по тегам