c语言 用行指针输出杨辉三角

 我来答
ok洛阳水席
推荐于2017-12-16 · TA获得超过1839个赞
知道小有建树答主
回答量:580
采纳率:50%
帮助的人:525万
展开全部
#include "iostream.h"
#include "stdlib.h"

int main()
{
 while(1)
 {
  cout<<"输入显示杨辉三角的行数:\n";  //不要输入太大,int有限制.
  int i_line;
  cin>>i_line;
  cout<<"三角形如下\n";
  int **p;                          //建立二维数组
  p=new int*[i_line];  //指针分配空间
  int i;          //循环变量
  for (i=0;i<i_line;i++)
  {
   *(p+i)=new int[i+1];          //每一行分配空间  
  }
  for (i=0;i<i_line;i++)        //生成三角形
  {
   **(p+i)=1;
   *(*(p+i)+i)=1;               //杨辉三角,每一行第一个、最后一个数是1
   if (i>=2)       //第三行开始
   {
    for (int j=1;j<i;j++)  //第三行开始,迭代
     *(*(p+i)+j)=*(*(p+i-1)+j-1)+*(*(p+i-1)+j); 
   }
  }
  for (i=0;i<i_line;i++)
  {
   for (int m=0;m<i_line-i-1;m++)
    cout<<" ";  //输出空格
   for (int k=0;k<=i;k++)  //显示每一行
    cout<<*(*(p+i)+k)<<" ";
   cout<<"\n";
  }
  cout<<"\n";
 }
 
 cout<<endl;
 return 0;
}

下面是数组的:

#define N 11
#include<stdio.h>
void main()
{
    int i,j,a[N][N];
    for(i=1;i<N;i++)
    {
        a[i][1]=1;
        a[i-1][i-1]=1;
    }
    a[10][10]=1;
    for(i=3;i<N;i++)
        for(j=2;j<=i-1;j++)
            a[i][j]=a[i-1][j-1]+a[i-1][j];
    for(i=1;i<N;i++)
    {
        for(j=1;j<=i;j++)
            printf("%6d",a[i][j]);
        printf("\n");
    }
}
#include <stdlib.h>  
#include <stdio.h>

int f(int n)
{
if(n==1||n==0)
return 1;
else
return f(n-1)*n;
}
int main()  
{
 int i, j,k,n; 
 printf("请输入行数(最好<=13):");
 scanf("%d",&n);
 for (i = 0; i<n; i++)  
 {  
  for(k=(n-i)*2;k>0;k--)
  printf(" ");
 for (j=0;j<=i;j++) 
  printf("%4d",(f(i)/f(j)/f(i-j)));  
 printf("\n");  
 }  
return 0;
}

不懂再问吧……

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式