当前位置:首页 » 编程语言 » 杨辉三角c语言程序队列
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

杨辉三角c语言程序队列

发布时间: 2023-02-03 04:23:06

❶ 利用队列打印出n行杨辉三角形.用c语言

其实根据原理来就可以了,程序在附件中,运行结果如下:

❷ 杨辉三角队列的实现

#include <iostream>
#include <conio.h>
using namespace std;
#define TRUE 1
#define FALSE 0
#define Maxsize 200
typedef unsigned long int LINT;
typedef struct
{
LINT data[Maxsize];
int front,rear;
}Sequeue;
Sequeue *Sq,mysqueue;
void Set_queue_Null(Sequeue *sq); //将队列置空队列
int Empty_queue(Sequeue *sq); //判断队列是否为空
int In_queue(Sequeue *sq,LINT x); //队中元素入队
LINT Out_queue(Sequeue *sq); //队中元素出队
void Clear_screen(); //清屏函数
void main()
{
LINT n,i,j,temp1,temp2;

Sq=&mysqueue;
Next: //goto循环的开头
Set_queue_Null(Sq);
cout<<"请输入杨辉三角的阶数:n=";
cin>>n;
In_queue(Sq,1);
cout<<endl;
for(i=1;i<=n;i++)
{
temp2=0;
for(j=1;j<i;j++)
{
temp1=Out_queue(Sq);
printf("%-5lu",temp1);
temp2+=temp1;
In_queue(Sq,temp2);
temp2=temp1;
}
Out_queue(Sq);
printf("1\n");
temp2++;
In_queue(Sq,temp2);
In_queue(Sq,1);

}
Clear_screen();
printf("你是否还要继续进行\n Y(是) or N(否)?\n");
char response;
cin>>response;
if(response=='Y'||response=='y')
goto Next;
else{
cout<<"程序结束..."<<endl;
exit(0);
}
}

void Set_queue_Null(Sequeue *sq)
{
sq->front=Maxsize-1;
sq->rear=Maxsize-1;
}
int Empty_queue(Sequeue *sq)
{
if(sq->rear==sq->front)
return TRUE;
else
return FALSE;
}
int In_queue(Sequeue *sq,LINT x)
{
if(sq->front==(sq->rear+1)%Maxsize)
{
cout<<"队列已满!\n";
return FALSE;
}
else
{
sq->rear=(sq->rear+1)%Maxsize;
sq->data[sq->rear]=x;
return TRUE;
}
}

LINT Out_queue(Sequeue *sq)
{
if(Empty_queue(sq))
{
cout<<"队列是空的!\n";
return FALSE;
}
else
{
sq->front=(sq->front+1)%Maxsize;
return (sq->data[sq->front]);
}
}
void Clear_screen(){
cout<<"是否清除屏幕?(Y/N)"<<endl;
if(getche()=='y'||getche()=='Y')
system("cls");
else
cout<<"继续操作..."<<endl;
}

❸ 用c语言编写程序 输出杨辉三角

程序:

#include<stdio.h>

int 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;i<=n;i++)

{

a[1]=a[i]=1;

for(j=i-1;j>1;j--)

a[j]=a[j]+a[j-1];

for(j=1;j<=i;j++)

printf("%3d",a[j]);

printf(" ");

}

return 0;

}

应用

与杨辉三角联系最紧密的是二项式乘方展开式的系数规律,即二项式定理。例如在杨辉三角中,第3行的三个数恰好对应着两数和的平方的展开式的每一项的系数(性质 8),第4行的四个数恰好依次对应两数和的立方的展开式的每一项的系数。

以上内容参考:网络-杨辉三角

❹ 采用队列,编写程序打印出杨辉三角形 数据结构(C语言版) 帮帮忙啊~~

#include <iostream>
#include<iomanip>
using namespace std;

int main()
{
int i,j;
int yang[10][10];
int n;

cout<<"Please input the value of the line(<=10)!" <<endl;
cin>>n;

if(n>10 || n<=0)
{
cout<<"Data error!"<<endl;
}

else
{
for(i=0;i<n;i++)
{
yang[i][i]=1;
yang[i][0]=1;
}
for(i=2;i<n;i++)
{
for(j=1;j<n;j++)
{
yang[i][j]=yang[i-1][j-1]+yang[i-1][j];
}
}

for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
cout<<setw(6)<<yang[i][j];
cout<<'\n';
}
}
}

return 0;
}

❺ c语言程序杨辉三角

#include <stdio.h>
main()
{ int i,j,n=0,a[17][17]={0};
while(n<1 || n>16)
{ printf("请输入杨辉三角形的行数(大于0,小于17):");
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");
}
}

//够简单了吧?

❻ c语言的杨辉三角程序

c语言的杨辉三角程序如下:

#include<stdio.h>

#include<stdlib.h>

intmain()

{

ints=1,h;//数值和高度

inti,j;//循环计数

scanf("%d",&h);//输入层数

printf("1 ");//输出第一个1

for(i=2;i<=h;s=1,i++)//行数i从2到层高

{

printf("1");//第一个1

for(j=1;j<=i-2;j++)//列位置j绕过第一个直接开始循环

//printf("%d",(s=(i-j)/j*s));

printf("%d",(s=(i-j)*s/j));

printf("1 ");//最后一个1,换行}

getchar();//暂停等待

return0;

}

(6)杨辉三角c语言程序队列扩展阅读:

杨辉三角概述

前提:每行端点与结尾的数为1.

  • 每个数等于它上方两数之和。

  • 每行数字左右对称,由1开始逐渐变大。

  • 第n行的数字有n项。

  • 第n行数字和为2n。

  • 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

  • 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。

  • 每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。

  • (a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。

  • 将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。

❼ 谁能告诉一下用循环队列实现打印杨辉三角形的C语言代码

#include <stdio.h>
#include <iostream.h>
#include "queue.h"
void YANGHUI(int n) {
SeqQueue q(n+2); //队列初始化p121
q.EnQueue(1); q.EnQueue(1);
int s = 0, t;
for (int i = 1; i <= n; i++) { //逐行计算
cout << endl;
q.EnQueue(0);
for (int j = 1; j <= i+2; j++) { //下一行
q.DeQueue(t);
q.EnQueue(s + t);
s = t;
if (j != i+2) cout << s << ' ';
}
}
}
课件地址:http://wenku..com/view/cb953d5e804d2b160b4ec0ba.html
3.3.4 队列的应用:打印杨辉三角形。

❽ 用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;
}