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<stdioh>
#define N 10
void setdata(int(s)[N],int n){
int i,j;
for(i=0;i<n;i++)//第一列和对角线上的元素都置1
{
s<i><i>=1;s<i>[0]=1;
}
for(i=2;i<n;i++){//给杨辉三角形其他元素置数
for(j=1;j<i;j++){
s<i>[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<n;i++){
for(j=0;j<=i;j++){
printf("%6d",s<i>[j]);
}
printf("\n");
}
}
main(){
int y[N][N],n=7;
setdata(y,n);//按规律给数组元素置数
outdata(y,n);//输出杨辉三角形
}
可以将杨辉三角形的值放在一个方形矩阵的下半三角中,如需打印7行杨辉三角形,应该定义等于或大于7x7的方形矩阵,只是矩阵的上半部分和其余部分并不使用。
杨辉三角形具有以下特点:
(1)第一列和对角线上的元素都为1;
(2)除第一列和对角线上的元素之外,其他的元素的值均为前一行上的同列元素和前一列元素之和。
方法二、
#include<stdioh>
#define LINE 10
int main()
{
int arr[LINE][LINE]={0};
int i=0;
int j=0;
for(i=0;i<LINE;i++)
{
arr<i>[0]=1;
arr<i><i>=1;
}
for(i=2;i<LINE;i++)
{
for(j=1;j<i;j++)
{
arr<i>[j]=arr[i-1][j-1]+arr[i-1][j];
}
}
for(i=0;i<LINE;i++)
{
for(j=0;j<(2LINE-2i);j++)
{
printf("");
}
for(j=0;j<=i;j++)
{
printf("%4d",arr<i>[j]);
}
printf("\n");
}
return 0;
}
方法三、
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdioh>
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<1||n>100)
//在输入的值不正确时自动初始化问题,重新输入
{
printf("请输入要打印的杨辉三角行数>:");
scanf("%d",&n);
}
for(i=1;i<n;i++)//第一层循环i决定第几行
{
for(j=1;j<=i;j++)//第二层循环借用i限制每行字符数目
{
a<i>[j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=1;i<n;i++)//一个for循环逐行打印叫a的二维数组
{
for(j=1;j<=i;j++)
printf("%5d",a<i>[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行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)