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

如题所述

#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<num-n;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<num;i++)
sq=fun(i,sq);

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-18
#include<stdio.h>
#define N 5

main()
{ int i,j,k,a[N][N];
for(i=0;i<N;i++)
{ a[i][0]=a[i][i]=1;
if(i>1)
{ for(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=0;i<N;i++)
{ for(k=0;k<=N-i;k++)
printf(" ");
for(j=0;j<=i;j++)
printf("%2d",a[i][j]);
printf("\n");
}
}

用C语言编写5行`杨辉三角~~急```
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<num...

杨辉三角c语言实现,不用数组
不用数组,直接用循环语句即可实现杨辉三角:include<stdio.h>#define N 10\/\/行数void main(){unsigned int i,j,k;unsigned int b,c;for(i=0;i<N;i++){for(j=N;j>i;j--)printf(" ");\/\/前置空格for(j=0;j<=i;j++){b=c=1;if(j>=1){for(k=i-j+1;k<=i;k++)b*=...

C语言中怎么写杨辉三角啊?
杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。这是杨辉三角:代码如下:include <stdio.h> include <stdlib.h> const int length = 10; \/\/ 定义杨辉三角的大小 int main(void){ int nums[length][length];int i, j;\/*计...

c语言程序杨辉三角
for (int i = 0; i < 10; i++) { if (i == 0) { \/\/ 第一行只有一个1 printf("%4d", a[i]);} else { printf("%4d", a[i] + a[i - 1]); \/\/ 计算当前元素值 } } \/\/ 递归生成杨辉三角 for (int j = 2; j <= 10; j++) { printf("\\n"); \/\/ 换行进入新...

c语言编写程序用c语言编写程序输出杨辉三角
关于c语言编写程序,用c语言编写程序 输出杨辉三角这个很多人还不知道,今天来为大家解答以上的问题,现在让我们一起来看看吧!1、程序:#includeint main()int n,i,j,a[100];n=10;printf("  1");printf("");a[1]=a[2]=1;printf("%3d%3d",a[1],a[2]);for(i=3;i1;j--...

详解C语言用数组表示杨辉三角...
杨辉三角形的六种解法 杨辉三角形是形如 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 的三角形,其实质是二项式(a+b)的n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。这个题目常用于程序设计的练习。下面...

c语言问题,求杨辉三角
在探讨如何使用C语言实现杨辉三角时,我们可以先明确其定义。杨辉三角是一个等腰三角形排列的数字数组,每一行的数字都与组合数紧密相关。以二维数组的方式进行实现,每一项都等于上一行的左边和中间的两个数的和。具体实现代码如下:我们定义一个二维数组`a[100][100]`来存储杨辉三角的每一项。接下来,...

用c语言编写,输出杨辉三角形
include <stdio.h> void main(){ int a[21],i,j,n ;scanf("%d",&n);printf("\\n");a[0]=1 ;for(i=0;i<=n;i++) \/\/n用来控制要输出的杨辉三角的行数 { for(j=1;j<=40-3*i;j++) \/\/第i行前面的空格个数为40 - 3*i,为了显示更加美观而已 printf(" ");for(j=...

怎么用C语言编写等腰三角形的杨辉三角
c语言杨辉三角代码 二维数组杨辉三角 杨辉三角的题 杨辉三角的数的系数 杨辉三角的规律示意图 杨辉三角 和 其他类似问题2015-05-27 用c语言输出杨辉三角,要求是10行,并且是等腰三角形。 17 2014-11-06 用C语言编出 等腰的 杨辉三角形求求求求求求 2 2012-07-06 怎么用C语言编写杨辉三角 29 20...

如何用C语言循环输出杨辉三角?
printf("%d行杨辉三角如下:\\n",n);for(i=1;i<=n;i++)a[i][1] = a[i][i] = 1; \/*两边的数令它为1,因为现在循环从1开始,就认为a[i][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]; \/*除两边的数外...

相似回答