回 帖 发 新 帖 刷新版面

主题:求各路高手帮忙。

老师出了个题目,效果出来是:
    1                          1         
   222                        121
  33333                      12321
 4444444                    1234321
三角形的数字顺序,求代码。

回复列表 (共3个回复)

沙发

又是一道作业题
右边的那个是i-abs(j-i)  i控制行,j控制列,其他的自己弄。左边那个太简单了,实在不想回答了。

板凳

这种题是有规律可寻的。用n表示第n行,i表示每行共输出i个数据,j表示每行输出的数字有j个。
  行数     总数数据(i)                    数字(j)
   1        4(3个空格加上一个数字1)           1
   2         5                                 3
   3         6                                  5
   4          7                                 7
  n                                          2*n-1

代码如下:
    int n,i=4,j;    //i初始话为4是因为有3个空格和一个数字"1"

    for(n=1;n<=4;n++)  //循环4行
     {
         for(j=1;j<=i;j++)  
      {
          if(j<=i-2*n+1)  //第n行有数字2*n-1,那么空格就有i-(2*n-1)个
           printf(" ");

           else
           printf("%d",n);  //输出数字
      }
      printf("\n"); 
      i++;         //每行输出的数据比上一行多1个
     }


至于右边这个“三角形”没怎么看懂,我才是这么一个意思
        1
      1 2 1
    1 2 3 2 1
同样的思路:
int n,i=4,j,m;

    for(n=1; n<=4; n++)
    {
        for(j=1; j<=i-2*n+1; j++)  //前i-(2*n-1)表示空格
            printf(" ");

        for(m=1; m<=2*n-1; m++)
            printf("%d",n-abs(n-m));//输出数据,头文件是<stdlib.h>

        printf("\n");
        i++;
    }
如果是这样的

1 2 1
1 2 3 2 1
尝试自己动手做。

3 楼

1
  121
 12321
1234321
的程序如下
#include<stdio.h>
void main()
{
    int i,j,k,h;
    for(i=1;i<5;i++)
      {  for(j=1;j<=5-i;j++)
          printf(" ");
          for (k=1;k<i;k++)
           printf("%d",k) ;
           for (h=i;h>=1;h--)
           printf("%d",h) ;
        printf("\n");
    }     
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册