用java编程杨辉三角的代码

用java编程杨辉三角的代码,第1张

1杨辉三角形由数字排列,可以把它看做一个数字表,其基本特性是两侧数值均为1,其他位置的数值是其正上方的数字与左上角数值之和,下面是java使用for循环输出包括10行在内的杨辉三角形

2思路是创建一个整型二维数组,包含10个一维数组。使用双层循环,在外层循环中初始化每一个第二层数组的大小。在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素。

代码如下:

public class YanghuiTriangle {

public static void main(String[] args) {

int triangle[][]=new int[10][];// 创建二维数组

// 遍历二维数组的第一层

for (int i = 0; i < trianglelength; i++) {

triangle[i]=new int[i+1];// 初始化第二层数组的大小

// 遍历第二层数组

for(int j=0;j<=i;j++){

// 将两侧的数组元素赋值为1

if(i==0||j==0||j==i){

triangle[i][j]=1;

}else{// 其他数值通过公式计算

triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];

}

Systemoutprint(triangle[i][j]+"\t"); // 输出数组元素

}

Systemoutprintln(); //换行

}

}

}

代码:

#include&lt;stdioh&gt;

#define N 10

void setdata(int(s)[N],int n){

int i,j;

for(i=0;i&lt;n;i++)//第一列和对角线上的元素都置1

{

s&lt;i&gt;&lt;i&gt;=1;s&lt;i&gt;[0]=1;

}

for(i=2;i&lt;n;i++){//给杨辉三角形其他元素置数

for(j=1;j&lt;i;j++){

s&lt;i&gt;[j]=s[i-1][j-1]+s[i-1][j];

}

}

}

void outdata(int s[][N],int n){

int i,j;

printf("杨辉三角形:\n");//只输出矩阵下半三角

for(i=0;i&lt;n;i++){

for(j=0;j&lt;=i;j++){

printf("%6d",s&lt;i&gt;[j]);

}

printf("\n");

}

}

main(){

int y[N][N],n=7;

setdata(y,n);//按规律给数组元素置数

outdata(y,n);//输出杨辉三角形

}

可以将杨辉三角形的值放在一个方形矩阵的下半三角中,如需打印7行杨辉三角形,应该定义等于或大于7x7的方形矩阵,只是矩阵的上半部分和其余部分并不使用。

杨辉三角形具有以下特点:

(1)第一列和对角线上的元素都为1;

(2)除第一列和对角线上的元素之外,其他的元素的值均为前一行上的同列元素和前一列元素之和。

方法二、

#include&lt;stdioh&gt;

#define LINE 10

int main()

{

int arr[LINE][LINE]={0};

int i=0;

int j=0;

for(i=0;i&lt;LINE;i++)

{

arr&lt;i&gt;[0]=1;

arr&lt;i&gt;&lt;i&gt;=1;

}

for(i=2;i&lt;LINE;i++)

{

for(j=1;j&lt;i;j++)

{

arr&lt;i&gt;[j]=arr[i-1][j-1]+arr[i-1][j];

}

}

for(i=0;i&lt;LINE;i++)

{

for(j=0;j&lt;(2LINE-2i);j++)

{

printf("");

}

for(j=0;j&lt;=i;j++)

{

printf("%4d",arr&lt;i&gt;[j]);

}

printf("\n");

}

return 0;

}

方法三、

#define _CRT_SECURE_NO_WARNINGS 1

#include&lt;stdioh&gt;

int main()

{

int i,j,n=0;

//首先定义二维数组计数符号i,j还有杨辉三角行数的初始化

int a[100][100]={0,1};

//只有2个初值,即a[0][0]=1,a[0][1]=2,其余数组元素的初值均为0

//二维数组大小可自定,但切记不可使其超过整形数组的大小

while(n&lt;1||n&gt;100)

//在输入的值不正确时自动初始化问题,重新输入

{

printf("请输入要打印的杨辉三角行数&gt;:");

scanf("%d",&n);

}

for(i=1;i&lt;n;i++)//第一层循环i决定第几行

{

for(j=1;j&lt;=i;j++)//第二层循环借用i限制每行字符数目

{

a&lt;i&gt;[j]=a[i-1][j-1]+a[i-1][j];

}

}

for(i=1;i&lt;n;i++)//一个for循环逐行打印叫a的二维数组

{

for(j=1;j&lt;=i;j++)

printf("%5d",a&lt;i&gt;[j]);

printf("\n");

}

return 0;

#include <stdioh>

#define ARR_LEN 20 /数组长度/

/二维数组存储杨辉三角/

int createYangHuiTriangle (int yht[ARR_LEN][ARR_LEN], int n) {

int i,j;

for (i=0; i<n; i++)

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

if (j==n-1-i || j==n-1+i)

yht[i][j]=1;

else

yht[i][j]=yht[i-1][j-1]+yht[i-1][j+1];

return 1;

}

/打印杨辉三角/

int printYangHuiTriangle (int yht[ARR_LEN][ARR_LEN], int n) {

int i,j;

for (i=0; i<n; i++) {

for (j=0; j<2n-1; j++)

if (yht[i][j]!=0)

printf ("%4d",yht[i][j]);

else

printf ("%4c",32); /输出空格以控制格式/

putchar ('\n');

}

return 1;

}

int main(void) {

int yht[ARR_LEN][ARR_LEN]={0};

int n=8;

createYangHuiTriangle (yht,n); /创建n行杨辉三角/

printYangHuiTriangle (yht,n); /打印n行杨辉三角/

putchar ('\n');

getch(); /屏幕暂留/

return 0;

}

运行结果

class a{

public static void main(String [] args){

int i,j;

for(i=1;i<7;i++){ //i控制的是行数

for(j=1;j<i;j++) //j控制的是每列有i个

Systemoutprint(""); //这个print打印不换行

if(j==i)Systemoutprintln(""); //起到换行作用

}

}

}

这次对了。哈哈。

你的问题出在println("")上,

分析:

i=1

i=1;b=0

i=2

i=2;b=0

你看出来了吗?你的换行是有i决定的,同时,你又需要打一个号,所以以此继续,你最后一行不满足i<7了,所以少了一个

你可以把Systemoutprintln(""); 改成Systemoutprintln(""); 这么改后会出现第一排是空格。

或者你直接在你的代码最后加上一个Systemoutprintln(""); 一样的。哈哈。

public static void main(String[] args) {

textYH yang = new textYH();

yangprintYanghuiTriangle(5);

}

/

生成指定行数的杨辉三角形

@param lines 杨辉三角形的行数

/

public void printYanghuiTriangle(int lines) {

if(lines < 1) {

throw new IllegalArgumentException("lines must be great than 0");

}

if(lines > 30) {

throw new IllegalArgumentException("lines is too big");

}

int[] line = new int[lines];

int maxLen = getMaxLen(lines);

for(int i = 0; i < lines; i++) {

line[0] = line[i] = 1;

for(int j = 1, k = i / 2, pre = line[0]; j <= k; j++) {

int cur = line[j];

line[i - j] = line[j] += pre;

pre = cur;

}

printLine(line, i + 1, maxLen);

}

}

/

根据指定行数的杨辉三角形,计算其中最大数字的长度

@param lines 杨辉三角形的行数

@return 最大数字的长度

/

private int getMaxLen(int lines) {

int k = lines / 2;

long maxNum = factorial(k + 1, lines - 1) / factorial(1, lines - 1 - k);

return getLength(maxNum);

}

/

阶乘计算

@param start 阶乘计算的起始数字

@param num 阶乘计算的终止数字

@return 阶乘计算结果

/

private long factorial(int start, int num) {

long result = start > 0 start : 1L;

while(num > start) {

result = num--;

}

return result;

}

/

根据指定数字计算数字的长度

@param num 数字

@return 数字的长度

/

private int getLength(long num) {

int len = 0;

while(num > 0L) {

num /= 10L;

len++;

}

return len;

}

private void printLine(int[] yanghui, int line, int width) {

printSpaces((yanghuilength - line) width);

for(int i = 0; i < line; i++) {

if(i > 0) {

printSpaces(width);

}

printSpaces(width - getLength(yanghui[i]));

Systemoutprint(yanghui[i]);

}

Systemoutprintln();

if(width > 1) {

Systemoutprintln();

}

}

private void printSpaces(int spaceCount) {

for(int i = 0; i < spaceCount; i++) {

Systemoutprint(" ");

}

}

<script> 

function printTriangle(l){

   for(var a=1;a<=l;a++){

      for(var c=1;c<l-a+1;c++){

         documentwrite("&nb"+"sp;");

      }

      for(var j=0; j<a; j++){

         documentwrite("☆");

      }

      documentwrite("<br />");

   }

}

function printTriangle2(l){

   for(var a=1;a<=l;a++){

      for(var c=1;c<=a-1;c++){

         documentwrite("&nb"+"sp;");

      }

      for(var b=1;b<=5;b++){

         documentwrite("☆");

      }

      documentwrite("<br />");

   }

}

function printTriangle3(l){ 

   for(var a=1;a<=l;a++){

      for(var b=1;b<=5;b++){

         documentwrite("☆");

      }

      documentwrite("<br />");

   }

}

</script>

用c语言写的,你改改就成了c++的语句了。

用余弦定理做。

#include <mathh>

#define q 2

#define p 104/3

main()

{float t,s,o=3,r,m,n,x,y,g,v,u,a[3],b[3],c[3],d[3],e[3],f[3];

int i;

scanf("%f",&t);

s=sqrt(o)t10/2;

r=t10/2;

a[0]=0;a[1]=t;a[2]=r; b[0]=0;b[1]=0;b[2]=s;

for(i=0;i<3;i++)

{c[i]=(a[i]+qa[i+1])10/(1+q);

d[i]=(b[i]+qb[i+1])10/(1+q);

}

for(i=0;i<2;i++)

{e[i]=(c[i]+pa[i+2])10/(1+p);

f[i]=(d[i]+pb[i+2])10/(1+p);

}

e[2]=(c[2]+pa[1])10/(1+p);

f[2]=(d[2]+pb[1])10/(1+p);

m=pow(a[0]-a[1],2);

n=pow(b[0]-b[1],2);

x=pow(e[0]-e[1],2);

y=pow(f[0]-f[1],2);

v=sqrt(m+n);u=sqrt(x+y);

g=10vv/(uu);

printf("%f",g);

}

以上就是关于用java编程杨辉三角的代码全部的内容,包括:用java编程杨辉三角的代码、编写程序打印杨辉三角型。、用c语言编写杨辉三角,打印后是8行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10080067.html

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

发表评论

登录后才能评论

评论列表(0条)

保存