数字的半金字塔

Half pyramid of numbers

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

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

在您的代码中,而不是

  m=1;

你应该写

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

否则,您将始终只在 for 循环中迭代一次。

一些小的修改就可以了:

#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 在每次奇数次迭代时递增
  • space 印刷数字之间

这里是demo.

内部 for 循环应如下所示:

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

想一想。你想在每一行打印一个四舍五入的 r/2 数字,对吗?

赞:
3/2 -> 1.5 -rounded-> 1 -> 打印:3
5/2 -> 2.5 -rounded-> 2 -> 打印:5 5
等等。

您可以 运行 此处的代码 ideone.com

你可以这样写:

  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 的次数。

这段代码中有 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;
}
#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   

在第 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;
}

请看这个:

for(r=1; r<=num; r+=2) // increment by 2, work for r= 1,3,5,7...
{
    for(c=1; c<=r; c+=2)// increment by 2
        printf("%d",r);
     printf("\n");
}

如果您想要替代数字,如 1、3、5、7...,只需将值递增 2