数字的半金字塔

问题描述 投票:0回答:8

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

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
c loops for-loop printf
8个回答
4
投票

你可以写:

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


3
投票

这段代码中有两个错误。 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;
}

1
投票

在你的代码中,而不是

  m=1;

你应该写

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

否则,您始终只会在

for
循环中迭代一次。


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 每次奇数迭代都会递增
  • 印刷编号之间的空间

这是一个演示


1
投票

内部

for
循环应如下所示:

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

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


喜欢:

r/2
-> 1.5 -四舍五入 -> 1 -> 打印:3

3/2
-> 2.5 -四舍五入 -> 2 -> 打印:5 5
等等。

您可以在

ideone.com

上运行代码


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



0
投票
在第 2 行中,您应该打印 3。

在第 3 行中,您应该打印 5。
在第 4 行,您应该打印 7。
………………
………………
在第
n
行,您应该打印 2*n-1
您可以检查一下:

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



0
投票

#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; }

如果您想要替代数字,例如 1,3,5,7...只需将值增加 
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"); }

    

© www.soinside.com 2019 - 2024. All rights reserved.