【问题标题】:How to print a rectangle of the following pattern如何打印以下图案的矩形
【发布时间】:2015-09-15 12:10:15
【问题描述】:

我需要在 C 中打印以下模式。我尝试了很多,但我无法制作确切的模式

1 1 1 1 2
3 2 2 2 2
3 3 3 3 4
5 4 4 4 4
5 5 5 5 6

【问题讨论】:

  • 展示你的努力,你会在这里得到帮助:)
  • 这个模式的功能规范是什么?我没有看到模式。
  • 您确定预期的结果吗?有点奇怪..
  • 看起来像是由行号N 组成的行,其中一个条目是N + 1 而不是N。该条目是该行上的最后一个或第一个数字,具体取决于行号是奇数还是偶数。这应该已经足够提出一个实现了。
  • @VishalKungwani:嗯,这已经为您提供了您需要知道的所有信息。那你的问题是什么?如何判断一条线是奇数还是偶数?或者如何很好地打印数字?或者如何写一个循环?你说你已经尝试了很多。展示你的尝试。

标签: c


【解决方案1】:

试试这个:

#include <stdio.h>

int main()
{
int i,j;
int n = 9;
for(i=1;i<=n;i++)
{
    for(j=1;j<=5;j++)
    {

        if(i%2==0)
        {
            if(j==1)
            {
                printf(" %d",i+1);
            }
            else
                printf(" %d",i);
        }
        else
        {
            if(j==5)
            {
                printf(" %d",i+1);
                break;
            }
            else
            {
                printf(" %d",i);
            }
        }
    }
    printf("\n");
}
return 0;
}

输出:

 1 1 1 1 2
 3 2 2 2 2
 3 3 3 3 4
 5 4 4 4 4
 5 5 5 5 6
 7 6 6 6 6
 7 7 7 7 8
 9 8 8 8 8
 9 9 9 9 10

【讨论】:

    【解决方案2】:

    简单的循环可能是 -

      #include<stdio.h>
     int main(void)
     {
         int i,j;
         for(i=1;i<6;i++)
        { 
            if (i%2==0){                 // if i is even 
            printf("%d",i+1);            // print i+1
            for(j=0;j<4;j++){            // then print i 4 times
                printf("%d",i);
               }
            }
           else{                        // case when i is odd
               for(j=0;j<4;j++){        // print i 4 times 
                   printf("%d",i);
                }
              printf("%d",i+1);         // at last print i+1
             }
           printf("\n");
        }
      return 0;
    }
    

    演示 -https://ideone.com/KSDBjG

    【讨论】:

      【解决方案3】:

      简单的解决方案。

      #define MAX_ROW 5
      #define MAX_COL 5
      
      int main ()
      {
          int row,col;
          int matrix[MAX_ROW][MAX_COL];
      
          for (row=0; row<MAX_ROW; row++)
          {
              for (col=0; col<MAX_COL; col++)
              {
                  if (col== MAX_COL-1)
                  {
                      if(row%2)
                          matrix[row][col] = row+1;
                      else
                          matrix[row][col] = row+2;
                  }
                  else if (col == 0)
                  {
                      if (row%2)
                          matrix[row][col] = row+2;
                      else
                          matrix[row][col] = row+1;
                  }
                  else
                  {
                      matrix[row][col] = row+1;
                  }
              }
          }
      
          for (row=0; row<MAX_ROW; row++)
          {
              for (col=0; col<MAX_COL; col++)
              {
                  printf("%d ", matrix[row][col]);
              }
              printf("\n");
          }
          return 0;
      }
      

      【讨论】:

        【解决方案4】:

        我希望这对你有用。

        #include<stdio.h>
        
        int main()
        {
        int i,j;
        for(i=1;i<=5;i++)
        {
            int special=i+1;
            if(i%2==1)
            {
                for(j=1;j<=4;j++)
                {
                    printf("%d ",i);
                }
                printf("%d\n",special);
            }
            else if(i%2==0)
            {
                printf("%d ",special);
                for(j=1;j<=4;j++)
                {
                    printf("%d ",i);
                }
                printf("\n");
            }
        }
        }
        

        五号代码的输出是:

        1 1 1 1 2
        3 2 2 2 2 
        3 3 3 3 4
        5 4 4 4 4 
        5 5 5 5 6
        

        【讨论】:

          【解决方案5】:

          我认为您正在寻找更一般的东西:

          #include <iostream>
          
          using namespace std;
          
          int main()
          {
              int dimension = 5;
          
              for( int i = 1 ; i <= dimension ; i++ )
              {
                  for( int j = 1 ; j <= dimension ; j++ )
                      std::cout << i + (j == 1+((dimension-1)*(i%2))) ?  (i%2)*1 : 0;
          
                  std::cout << "\n";
              }
          
              return 0;
          }
          

          维度 = 5 的输出:

          11112
          32222
          33334
          54444
          55556
          

          维度 = 7 的输出:

          1111112
          3222222
          3333334
          5444444
          5555556
          7666666
          7777778
          

          您可以在线查看here

          祝你好运!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-11-20
            • 2017-03-30
            • 1970-01-01
            • 2014-12-08
            • 1970-01-01
            相关资源
            最近更新 更多