【问题标题】:I need help on finishing my nested for loop in C to produce a specific output我需要帮助来完成我在 C 中的嵌套 for 循环以产生特定的输出
【发布时间】:2014-02-14 08:11:20
【问题描述】:

我正在尝试编写一个嵌套的 for 循环以产生以下输出:

 01234
  2345
   456
    67
     8

我目前的代码是:

#include <stdio.h>
#define SIZE 9

int main()
{
   int i, j;

   for(i=0; i < SIZE; i++)
   {
      for(j=0; j < SIZE; j++)
      {
         if(i <= j)
         {
            printf("%d", j);
         }
         else
         {
            printf(" ");
         }
      }
      printf("\n");
   }

   return 0;
}
/* This produces:
 * 012345678
 *  12345678
 *   2345678
 *    345678
 *     45678
 *      5678
 *       678
 *        78
 *         8
/*

任何正确方向的帮助将不胜感激,谢谢!

【问题讨论】:

  • 提示:+= 2 在你的循环中而不是 ++
  • printf("%d", j + i); 我想。

标签: c windows for-loop codeblocks nested-loops


【解决方案1】:

试试这个。

int start,stop, k;
start = 0;
stop = SIZE/2 + SIZE%2;

while(start<=stop)
{
  for(k=0; k<start;++k)
      printf(" ");
  for(k=start;k<stop; ++k)
      printf("%d ", k);
printf("\n");

start+=2;
stop++;
}

printf("\n");

分析常见的模式是start 增加 2,stop 增加 1。 当start 超过stop 时,循环将结束。

【讨论】:

  • Spoonfeed,这不是最好的帮助方式
  • @AlterMann:请根据需要编辑答案。还是我应该编辑或删除它?
  • 没有什么可编辑的,你的答案是正确的+1,但对于学习者来说,提示比完整的答案更好
【解决方案2】:

不是对原始问题的直接回答,而是对问题中任务的解决方案:

#include <stdio.h>
#define LEVEL 5

int
main(void)
{
    int i, j;
    for (i = 0; i < LEVEL; i++) {
        for (j = 0; j < i; j++)
            printf(" ");
        for (j = i*2; j < LEVEL+i; j++)
            printf("%d", j);
        printf("\n");
    }
    return 0;
}

【讨论】:

    【解决方案3】:
    for(i=0; i < SIZE/2 + 1; i++){
        for(j=0;j<i+SIZE/2 + 1;++j)
            if(j<i*2){
                printf(" ");
                ++j;
            } else
                printf("%d", j);
        printf("\n");
    }
    

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      相关资源
      最近更新 更多