C 语言输出杨辉三角。

C 语言输出杨辉三角。,第1张

工具/材料

gcc+vim(linux)或visual studio(windows)

01

使用vim创建一个文件yanghui.c,并打开它进行编辑。

02

首先输入预处理指令 #include <stdio.h>,用于调用输出函数printf。

03

编译一个函数void yanghui(int n)。其中,n表示二项式的次数。

04

首先,对二项式的幂次进行检查,若小于0,说明输入的次数是不合法的,直接结束打印并给出提示。

05

然后定义一个(n+1)*(n+1)的二维数组并初始化所有值为0。

06

然后根据杨辉三角的规律给数组赋值:

每一行的第一个与最后一个数都是1;

其他的数等于该数的上面一个数与左上角的数之和。

07

对杨辉三角进行输出,不相关的数组数据不输出,并注意换行。

08

在main函数中对 void yanghui(int n)进行测试,选用参数为3, 7, 10。

09

保存文档并进行编译输出的结果如下:

由此可以验证我们的程序是正确的。

//a[21]就是告诉你只能存21个数据,也就是说你最多输出20行,再多就不行了!

#include <stdio.h>

void main()

{

int a[21],i,j,n

scanf("%d",&n)

printf("\n")

a[0]=1

for(i=0i<=ni++)//n用来控制要输出的杨辉三角的行数

{

for(j=1j<=40-3*ij++) //第i行前面的空格个数为40 - 3*i,为了显示更加美观而已

printf(" ")

for(j=0j<=ij++) //用来输出第i行的i + 1个元素,注意第0行只有一个元素1

printf("%6d",a[j])

a[i+1]=1

for(j=ij>=1j--)

a[j]=a[j-1]+a[j]//从后向前计算下一行的除了a[0]外的每个元素的数值还放在a[]数组中

printf("\n")

*** 作:

$ ./a.out (windows下是a.exe linux下是a.exe)

5 (输入5表示输出5级 依次类推)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 51010 5 1

windows &Linux 环境下编译通过~

好久没写windows应用了,写得有点粗糙了。。。

(图片发布上来。。。)

#include <iostream>

#include <vector>

#include <iterator>

using namespace std

typedef vector<int>VECT

bool YHTriangle( vector<VECT >* vvect, int num )

{

VECT Vtemp

VECT Vold

Vold.push_back(0)

if(num <= 0)

return false

Vtemp.push_back(1)

vvect->push_back(Vtemp)

for(int times = 1times != num++times)

{

Vtemp.clear()

VECT::iterator it = Vold.begin()

Vtemp.push_back(1)

while( ++it != Vold.end() )

{

Vtemp.push_back( *it + *(it - 1) )

}

if( it == Vold.end() )

{

Vtemp.push_back(1)

}

Vold = Vtemp

vvect->push_back(Vold)

}

return true

}

bool PrintYHTriangle( vector<VECT >*vvect)

{

vector<VECT >::iterator it = vvect->begin()

for(it != vvect->end()++it )

{

VECT::iterator iter = it->begin()

for(iter != it->end()++iter )

{

cout<<*iter<<"\t"

}

cout<<endl

}

return true

}

int main()

{

vector<VECT >vvect

int n//记录杨辉三角的层数

//如果构建杨辉三角失败,则清理容器,重新生成

do

{

cout<<"Please input n:"<<endl

cin>>n

vvect.clear()

}while(! YHTriangle( &vvect, n ) )

cout<<endl

PrintYHTriangle( &vvect )

cout<<"press any key to quit ~"<<endl

cin>>n

return 0

}

%5d和\t 差不多,反正都是用来数据对齐的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8509533.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存