半金字塔的数字

时间:2015-04-23 11:40:06

标签: c loops for-loop printf

我需要在金字塔模式中生成以下奇数输出。 输出就像

1
3 3
5 5 5
7 7 7 7

我写了以下代码。我应该修改哪一部分?

#include<stdio.h>
int main()
{
  int num,r,c;
  printf("Enter structure number : ");
  scanf("%d", &num);

      for(r=1; r<=num; r++)
      {
          if(r%2 != 0){
              m=1;
             for(c=1; c<=m; c++)
                printf("%d",r);
             printf("\n");
      }
  }
  return 0;
}

当前输出:

当前输出类似于

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

8 个答案:

答案 0 :(得分:2)

你可以写:

  for(r=1; r <= num; r+=2) //we only need odd numbers
  {
      times = r/2 + 1; //how many times to print odd number
      for(c=1; c <= times; c++)
          printf("%d",r); //print one character at a time
      printf("\n");
  }

如果只迭代奇数,你可能会更好地理解它。我目前正在这样做并计算我需要打印该数字的次数,然后我只打印它times的次数。

答案 1 :(得分:2)

此代码中有2个错误。 m没有在任何地方声明。 你正在运行一个无限循环

试试这个。

#include<stdio.h>
int main()
{
  int num,r,c,m;
  printf("Enter structure number : ");
  scanf("%d", &num);

      for(r=1; r<=num; r++)
      {
          if(r%2 != 0){
              m=r;
             for(c=1; c<=m; c++)
                printf("%d",r);
             printf("\n");
      }
  }
  return 0;
}

答案 2 :(得分:1)

在您的代码中,而不是

  m=1;

你应该写

 m= ( (r/2) + 1);

在所有的时间里,你只会在for循环中迭代一次。

答案 3 :(得分:1)

稍作修改即可:

#include<stdio.h>
 int main()
 {
 int num,r,c,m=0;
 printf("Enter structure number : \n");
 scanf("%d", &num);

  for(r=1; r<=num; r++)
  {
      if(r%2 != 0){
          m++;
         for(c=1; c<=m; c++)
            printf("%d ",r);
         printf("\n");
  }
 }
 return 0;
}
  • m未声明
  • printf消息末尾的换行符
  • m递增每个奇数迭代
  • 印刷的会员之间的空间

这是demo

答案 4 :(得分:1)

内部for循环应如下所示:

for(c=1; c <= r/2; c++)
            printf("%d ",r);

只需考虑一下。你想在每一行打印一个四舍五入的r/2数字,对吧?

喜欢:
3/2 - &gt; 1.5 -rounded-&gt; 1 - &gt;印刷品:3
5/2 - &gt; 2.5 -rounded-&gt; 2 - &gt;印刷品:5 5
等等。

您可以在ideone.com

上运行此处的代码

答案 5 :(得分:1)

#include<stdio.h>
int main()
{
    int num,r,c;
    printf("Enter structure number : ");
    scanf("%d", &num);

    for(r=1; r<=num; r++)
    {
        if(r%2 != 0){
            int m=r;
            for(c=1; c<=m; c++)
            {
                if(c%2 != 0){
                    printf("%d ",r);
                }
            }
            printf("\n");
        }
    }
  return 0;
}

并测试

sh-4.3# main                                                                                                                                                                          
Enter structure number : 9                                                                                                                                                            
1                                                                                                                                                                                     
3 3                                                                                                                                                                                   
5 5 5                                                                                                                                                                                 
7 7 7 7                                                                                                                                                                               
9 9 9 9 9   

答案 6 :(得分:0)

在第1行中,您应该打印1.
在第2行中,您应该打印3 在第3行中,您应该打印5 在第4行中,您应该打印7 ............................
............................
n 行中,您应该打印 2 * n-1

您可以查看:

 #include<stdio.h>


int main()
{
    int num,r,c;
    printf("Enter structure number : ");
    scanf("%d", &num);
    for(r=1; r<=num; r++)
    {
        for(c=1; c<=r; c++)
            printf("%d",2*r-1);
        printf("\n");
    }
    return 0;
}

答案 7 :(得分:0)

请看一下:

Id(i => i.TableId).GeneratedBy.Increment();

如果您想要1,3,5,7之类的替代数字......只需按IOException增加值。