要求说明:打印出杨辉三角,行数可自行输入。
解:首先找出杨辉三角的规律:1,每一行第一列为1; 2,对角线上数字也为1; 3,其余数字都等于它上一行同位置与前一项的和
此题,我给出两种方式解决。1,完全输入数据后,遍历输出; 2,边输入边输出
1.**************************************************************
#include<stdio.h>
#include<string.h>
int num[35][35]; // 设置二维数组,行数小于35
int main()
{
memset(num,0,sizeof(num)); // 数组清0
int n,i,j;
scanf("%d",&n); //输入待打印行数
for(i=0;i<n;i++) //for 循环i范围从1到行数n
{
num[i][i]=1; //对角线元素都为1
num[i][0]=1; //每行第一列元素都为1
}
for(i=3;i<n;i++) //for循环从第三行开始到第n行
{
for(j=1;j<i;j++) //for循环从第二列开始到该行行数减一列为止
{
num[i][j]=num[i-1][j-1]+num[i-1][j]; //第i行j列等于上一行同位置与前一项的和
}
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",num[i][j]); // for循环遍历输出
}
printf("\n"); //换行
}
return 0;
}
样例输入输出:
8
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
*********************************************************
2.*****************************************************
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
int n;
scanf("%d",&n); //输入打印的杨辉三角行数
int a[35][35]; //最大行数小于35行
memset(a,0,sizeof(a)); //对数组清0
int i,j;
for(i = 1; i <= n;i ++) //循环i从1到n行
{
a[i][0] = 1; //每行第一个数字置1
printf("%d ",a[i][0]); //打印该数
for(j = 1; j <= n;j ++) //每行第二个数开始到最后
{
a[i][j] =a[i-1][j-1]+a[i-1][j] ; //除第一列数字,其余数字等于它上一行同位置数字加上前一列数字(由于开始对数组清0,故最后一列亦可由此计算)
if(a[i][j] == 0) //判断,最后位空位置两0和为0,结束换行;
break;
printf("%d",a[i][j]); //打印该数字
if(a[i][j] != 1) //判断数字是否为1,是1代表此行结束,不打印多余的空格
printf(" ");
}
printf("\n"); //换行
}
return 0;
}
样例输入输出:11
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
******************************************8