二分之根号五减一442 2023-10-17 16:24 采纳率: 90%
浏览 14
已结题

C语言,如何输出杨辉三角的正三角形

#include<stdio.h>
int main(){
    int m;
    scanf("%d",&m);
    int f[100][100];
    int i,j;
    for(i=0;i<m;i++)
    {
       f[i][0]=1;
       f[i][i]=1;
    }
    for(i=0;i<m;i++)
    {
        for(j=1;j<i;j++)
        f[i][j]=f[i-1][j]+f[i-1][j-1];
    }
        for(i=0;i<m;i++)
    {
        for(j=0;j<=i;j++)
        {

            
            
            printf("%d ",f[i][j]);
        }
        printf("\n");
    }
    return 0;
} 

这个程序是杨辉三角,但我这里不能输出正三角形,应该在哪里,怎么加空格?

  • 写回答

2条回答 默认 最新

  • 柯本 2023-10-17 16:29
    关注
    
    #include <stdio.h>
    int main()
    {
      int m;
      scanf("%d", &m);
      int f[100][100];
      int i, j;
      for (i = 0; i < m; i++)
        {
          f[i][0] = 1;
          f[i][i] = 1;
        }
      for (i = 0; i < m; i++)
        {
          for (j = 1; j < i; j++)
            f[i][j] = f[i - 1][j] + f[i - 1][j - 1];
        }
      for (i = 0; i < m; i++)
        {
          for (j = 0; j <= m - i; j++) //这里加
            printf(" "); //输出一个空格
          for (j = 0; j <= i; j++)
            {
              printf("%d ", f[i][j]);
            }
          printf("\n");
        }
      return 0;
    }
    
    

    若再优化下,14以内的都是绝对正三角

     for (i = 0; i < m; i++)
        {
          for (j = 0; j <= m - i; j++) //这里加
            printf("  "); //输出二个空格
          for (j = 0; j <= i; j++)
            {
              printf("%4d", f[i][j]);  //改格式
            }
          printf("\n");
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月25日
  • 已采纳回答 10月17日
  • 创建了问题 10月17日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据