用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;
}
//声明队列类型
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
//输出存储在队列中的某行元素,并计算下一行数
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
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯