C循环计数

问题描述 投票:3回答:6

我是C的初学者,无法在任何地方找到答案,因为我不知道该怎么说,所以我只想问一个问题。我理解基本的循环,但我想要做的是制作一个小程序,输出就是这样只使用循环:

  • 12345
  • 1234
  • 123
  • 12
  • 1

我的代码到目前为止

int x;
int y = 1;

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

这就是我到目前为止所不知道下一步该去哪里,如果有人能提供帮助我会感激不尽。

c loops counting
6个回答
5
投票

关。你的外循环需要倒计时,而不是向上,你的内循环需要从1到x计数。

int x, y;

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

2
投票

这是使用Integer Division的FOR循环的另一种解决方案。尝试:

#include <stdio.h>

int main(void){

    int n= 12345, i;

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

    return 0;
}

1
投票

你必须看到你想要的模式,并将其应用于循环中以获得它。

你需要输出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
}

1
投票

为了好玩:另一种简单划分每个循环的方法。但是使用best answer

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

产量

12345
1234
123
12
1

1
投票

另一种解决方案是使用integer division并使用一个循环:

int x = 12345;

// repeat this loop as long as x != 0
while (x)
{
    printf("%d\n", x);
    x /= 10; // x = x/10;
}

1
投票

您需要对外循环进行2次更改才能获得预期的输出。

  1. for (x=1; x<=5; x++)应该是for (x=1; x<=5; x--),因为你的程序将第一次计数到5,第二次计数4,第三次计数3等等。
  2. 您应该包括printf("\n"),以便在输出每个序列后打印一个新行。

您还需要对内循环进行1次更改:

  1. 你应该说y <= 5而不是y <= x,因为x总是等于你想要打印的最后一个数字,因为你在外循环中递减它。
© www.soinside.com 2019 - 2024. All rights reserved.