C循环递增

C looping counting up

我是 C 的初学者,在任何地方都找不到这个问题的答案,因为我不知道如何表达,所以我只想问一个问题。 我了解基本循环,但我想做的是制作一个小程序,其中仅使用循环输出:

到目前为止我的代码

int x;
int y = 1;

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

这是我目前的情况,不知道下一步该去哪里,如果有人能帮助我,我将不胜感激。

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

int x, y;

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

您必须看到您想要的模式并将其应用到循环中才能获得它。

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

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

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

输出

12345
1234
123
12
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;
}

这是另一种解决方案,仅使用 FOR 循环和 整数除法 。尝试:

#include <stdio.h>

int main(void){

    int n= 12345, i;

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

    return 0;
}

您需要对外循环进行 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 总是等于你要打印的最后一个数字,因为你在外循环中递减它。