循环计数(C语言)

3

我是一个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个回答

5

关闭。您的外层循环需要倒数,而不是正数,内层循环需要从1计数到x。

int x, y;

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

2

这是另一种解决方案,仅使用带有整数除法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
您需要对外部循环进行两次更改,以获得预期的输出。
  1. for (x=1; x<=5; x++) 应该改为 for (x=1; x<=5; x--) ,因为程序将在第一次计数到 5,第二次计数到 4,第三次计数到 3 等等。
  2. 您应该包括 printf("\n"),这样每个序列输出后都会打印一个新行。

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

  1. 不要使用 y <= 5,而应该使用 y <= x,因为由于在外部循环中进行了递减,所以 x 将始终等于您想要打印的最后一个数字。

1

有趣的一种方法是简单地将每个循环分开。但使用最佳答案

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

输出

12345
1234
123
12
1

1

另一个解决方案是使用 整数除法 并使用单个循环:

int x = 12345;

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接