C++ ,这个代码是怎么样实现输出杨辉三角的(不是左对齐那种) 20
voidPascaTriangle(intn)//采用队列输出杨辉三角{intblank=40,step//blank为每行的起始输出位置,step为元素之间的间隔Seq...
void PascaTriangle(int n) //采用队列输出 杨辉三角
{
int blank=40,step //blank为每行的起始输出位置,step为元素之间的间隔
SeqQueue<int>queue;
int i=1,pre=1,now; //pre为前一个出队元素 now为现在出队的元素
queue.EnQueue(1);//存放每行待输出的元素,以1结束,每行开始的1没放入队列中
while(i<=n)
{
cout<<setw(blank)<<pre; //【1】输出每行的第一个数1
while(now=queue.DeQueue()>=1) //while循环,输出当前行的所有元素
{
cout<<setw(step)<<now; 【2】
queue.EnQueue(pre+now);//下一行的元素为当前元素与前一输出元素之和,将其放入队尾(入队)
pre=now;
if(now==1) break;//循环结束
}
queue.EnQueue(now);//将下一行结束的1入队
cout<<endl;
i++;
blank-=step/2; //【3】下一行的起始输入位置比当前行提前半个元素间的间隔
}
}
[虽然有注释,但我还是没怎么弄清楚是如何实现的,特别是加中括号的三行,望高手解答] 展开
{
int blank=40,step //blank为每行的起始输出位置,step为元素之间的间隔
SeqQueue<int>queue;
int i=1,pre=1,now; //pre为前一个出队元素 now为现在出队的元素
queue.EnQueue(1);//存放每行待输出的元素,以1结束,每行开始的1没放入队列中
while(i<=n)
{
cout<<setw(blank)<<pre; //【1】输出每行的第一个数1
while(now=queue.DeQueue()>=1) //while循环,输出当前行的所有元素
{
cout<<setw(step)<<now; 【2】
queue.EnQueue(pre+now);//下一行的元素为当前元素与前一输出元素之和,将其放入队尾(入队)
pre=now;
if(now==1) break;//循环结束
}
queue.EnQueue(now);//将下一行结束的1入队
cout<<endl;
i++;
blank-=step/2; //【3】下一行的起始输入位置比当前行提前半个元素间的间隔
}
}
[虽然有注释,但我还是没怎么弄清楚是如何实现的,特别是加中括号的三行,望高手解答] 展开
2个回答
展开全部
// YanHui.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a[10][10],i,j,k; /*k是用来控制缩进长度的*/
for(i=0;i<10;i++){
for(j=0;j<=i;j++){
if(j==0||j==i){
a[i][j]=1;
} else{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
}
for(i=0;i<10;i++){
for(k=1;k<=(10-i);++k)
printf(" ");/*有三个空格,根据后面输出项的宽度决定,即后面的1/2*/
for(j=0;j<=i;j++){
printf("%6d",a[i][j]);/*最好设为偶数个宽度,根据你写的程序,其实4就合适了*/
}
printf("\n");
}
getchar();/*方便查看结果而设的暂停*/
return 0;
}
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a[10][10],i,j,k; /*k是用来控制缩进长度的*/
for(i=0;i<10;i++){
for(j=0;j<=i;j++){
if(j==0||j==i){
a[i][j]=1;
} else{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
}
for(i=0;i<10;i++){
for(k=1;k<=(10-i);++k)
printf(" ");/*有三个空格,根据后面输出项的宽度决定,即后面的1/2*/
for(j=0;j<=i;j++){
printf("%6d",a[i][j]);/*最好设为偶数个宽度,根据你写的程序,其实4就合适了*/
}
printf("\n");
}
getchar();/*方便查看结果而设的暂停*/
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
gt;
void main ()
{
int n;
cout << "请输入层数: " ;
cin >> n;
for (int i=0; i<n; i++)
{
for (int j=0; j<n-i-1; j++)
{
cout << " ";
}
for (int k=0; k<2*i+1; k++)
{
cout << "*";
}
cout << endl;
}
}
void main ()
{
int n;
cout << "请输入层数: " ;
cin >> n;
for (int i=0; i<n; i++)
{
for (int j=0; j<n-i-1; j++)
{
cout << " ";
}
for (int k=0; k<2*i+1; k++)
{
cout << "*";
}
cout << endl;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询