永发信息网

用C语言编写5行`杨辉三角~~急````

答案:3  悬赏:10  手机版
解决时间 2021-02-13 01:48
  • 提问者网友:箛茗
  • 2021-02-12 19:05
用C语言编写5行`杨辉三角~~急````
最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-02-12 20:24
#include "stdlib.h"

//声明队列类型
typedef struct node
{
int data[21];
int head,rear;
}sequeue;

int num;//杨辉三角的层数

//队列的初始化
void initial(sequeue *sq)
{
sq->head=-1;
sq->rear=-1;
}

//进队操作
void ensequeue (sequeue *sq,int data1,int data2)
{
sq->rear++;
sq->data[sq->rear]=data1+data2;
}

//出队操作
int desequeue(sequeue *sq)
{
return sq->data[++sq->head];
}

//求扬辉三角的第n行,将其存入队列sq2指向的结点中
sequeue * fun(int n,sequeue *sq1)
{
int data1,data2=0,i;
sequeue *sq2;

sq2=(sequeue *)malloc(sizeof(sequeue));
initial(sq2);

//输出每行前的空格以形成三角格式
for (i=0;i printf(" ");

//输出存储在队列中的某行元素,并计算下一行数
while(sq1->head!=sq1->rear)
{
data1=desequeue(sq1);

//处理两树之间的间隔距离
if (data1<10) printf(" %d",data1);
else if (data1<100) printf(" %d",data1);
else if (data1<1000) printf(" %d",data1);
else printf(" %d",data1);

ensequeue(sq2,data1,data2);
data2=data1;
}
sq2->data[++sq2->rear]=1;
printf("\n");
free(sq1);
return sq2;
}

int main(int argc,char *argv[])
{
int i;
sequeue *sq=(sequeue *)malloc (sizeof(sequeue));
initial(sq);
sq->rear++;
sq->data[sq->rear]=1; //将第一行存入队列中,第一行只有1一个元素

printf("please put in a integer number(no more then 15)!\n\t");
scanf("%d",&num);

//fun()函数实现输出一行元素并计算出下一行各个元素,经过num次调用fun函数输出num层杨辉三角
for (i=0;i sq=fun(i,sq);

return 0;
}
全部回答
  • 1楼网友:洒脱疯子
  • 2021-02-12 22:48
#include <stdio.h> main() { int i,j,n=0,a[17][17]={0}; while(n<1 || n>16) { printf("请输入杨辉三角形的行数:"); scanf("%d",&n); } for(i=0;i<n;i++) a[i][0]=1; for(i=1;i<n;i++) for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<n;i++) { for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); } }
  • 2楼网友:青尢
  • 2021-02-12 22:02
#include #define N 5 main() { int i,j,k,a[N][N]; for(i=0;i1) { for(j=1;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0;i
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯