杨辉三角的怎么输出等腰三角形啊

2024-12-28 11:28:09
推荐回答(4个)
回答1:

如果用c语言的话可以这样写,我用的是宏定义,你想输出几行可以任意改变:
#include
#include
#define M 10
void main()
{
int a[M][2*M-1]={0};
int i,j;
a[0][M-1]=1;
for(i=1;i {
for(j=0;j<2*M-1;j++)
{
if(j==0) a[i][j]=a[i-1][j]+a[i-1][j+1];
else if(j==2*M-2) a[i][j]=a[i-1][j-1]+a[i-1][j];
else a[i][j]=a[i-1][j-1]+a[i-1][j+1];
}
}
for(i=0;i {
for(j=0;j<2*M-1;j++)
{
if(a[i][j]==0) printf(" ");
else printf("%4d",a[i][j]);
}
printf("\n");
}

printf("\n\n***\n%d\n",INT_MAX);
getchar();

}

回答2:

Option Explicit
Private Sub Command1_Click()
Dim n As Integer, i As Integer, j As Integer
Dim a(21, 21) As Long
a(0, 0) = 1
a(1, 0) = 1
a(1, 1) = 1
n = InputBox("请输入N")

For i = 0 To n
For j = 0 To i
If j = 0 Then
a(i, 0) = 1
Else
If j = i Then
a(i, j) = 1
Else
a(i, j) = a(i - 1, j - 1) + a(i - 1, j)
End If
End If
Next j
Next

For i = 0 To n
For j = 0 To i
If j = 0 Then
Print Space(n * 4 - i * 4); Str(a(i, 0));
ElseIf j = i Then
Print Space(8 - Len(Trim(Str(a(i, i))))); Trim(Str(a(i, i)))
Else
Print Space(8 - Len(Trim(Str(a(i, j))))); Trim(Str(a(i, j)));
End If
Next j
If i = 0 Then Print
Next
End Sub

回答3:

看你用什么语言了
这是JAVA的
这个难点在于,由于数据的不稳定(即数字位数的不同,当超过一定位数之后就会出现对不齐的现象,行数越大,状况就越明显)
public class YangHui{
public static void main(String[] args){
final int Row = 5;
int yh[][] = new int[Row][Row];
for (int i = 0; i < Row; i++){//控制前后数字为1
yh[i][0] = 1;
yh[i][i] = 1;
}
for (int i = 2; i < Row; i++){//赋值

for (int j = 1; j < Row; j++){
yh[i][j] = yh[i - 1][j - 1] + yh[i - 1][j];
}
}
for (int i = 0; i < Row; i++){//输出
int num=Row-i;
for(int t=0;t System.out.print(" ");
}
for (int j = 0; j <= i; j++){
System.out.print(yh[i][j] + " ");
}
System.out.println();
}

}

}

回答4:

用二维数组实现如下:
这里以输出10行为例说明的

#include "stdio.h"
main( )
{ int i,j,k,m;
char a[10][10];
for(i=0,j=0;i<10;i++) /*第一列赋值为1*/
a[i][j]=1;
for(i=1,j=1;i<10;i++,j++) /*对角线位置赋值为1*/
a[i][j]=1;
for(i=0;i<10;i++) /*控制输出行数为10 */
{printf("\n\n"); /*向下跳两行,更加好看一些 */
k=9-i;
for(m=1;m<=k;m++) /*每一行最前面缩进k个tab位 */
printf(" "); /*输出四个空格*/
for(j=0;j<=i;j++) /*控制每一行的输出内容 */
{if(i>=2,j>=1&&j a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%4d ",a[i][j]); /*输出数据后面在输出四个空格*/
}
}
getch();
}

下面使用递归的方法实现的:
你想输出几行都可以的
#include
int c(int a ,int b) /*第a行第b列的数值*/
{if(b==1||b==a)
return (1);
else return (c(a-1,b-1)+c(a-1,b));
}

main()
{int i,j,n;
printf("please input the row:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{printf("\n\n");
for(j=1;j<=n-i;j++)
printf(" ");
for(j=1;j<=i;j++)
printf("%4d ",c(i,j));
}
getch();
}

你试一下,打出来很好看的哦(*^__^*) ……