С циклом подсчета
Я новичок в 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.
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..- Вы должны включить
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:
- Вместо
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;
}