【问题标题】:C looping counting upC循环计数
【发布时间】:2015-12-07 03:15:25
【问题描述】:

我是 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


    【解决方案1】:

    关闭。您的外循环需要倒数,而不是向上倒数,而您的内循环需要从 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;
      }
      

      【讨论】:

        【解决方案3】:

        你必须看到你想要的模式并在循环中应用它才能得到它。

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

        【讨论】:

          【解决方案4】:

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

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

          输出

          12345
          1234
          123
          12
          1
          

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              【解决方案6】:

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

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

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

              1. 您应该说y &lt;= x 而不是y &lt;= 5,因为x 将始终等于您要打印的最后一个数字,因为您在外循环中将其递减。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-05-18
                • 1970-01-01
                • 1970-01-01
                • 2017-12-06
                • 2011-05-19
                • 1970-01-01
                • 2017-04-11
                • 1970-01-01
                相关资源
                最近更新 更多