杨辉三角
在屏幕上打印杨辉三角。
1
1 1
1 2 1
1 3 3 1
……
1.硬解.
#include<stdio.h>
void yanghui(int*arr, int p)
{
for (int i = 1; i <= p; i++)
{
int pri = 0;//用来打印的变量
int str = 0;//arr的下标
int j = 0;//用在存储arr1的变量
int arr1[100] = { 0 };//由于中间变量会改动,所以用arr1来存储除了1的值再赋给arr
int sta = 1;//arr1的初始值
while (str<=i-1)//计算
{
if (str == 0 || str == i-1)
{
arr[str] = 1;
}
else
{
arr1[sta] = arr[str - 1] + arr[str];
sta++;
}
str++;
}
for(j=1;j<i-1;j++)//赋值
{
arr[j] = arr1[j];
}
for (pri = 0; pri < i; pri++)//打印
{
printf("%d ", arr[pri]);
}
printf("\n");
}
}
int main()
{
int n = 0;
int arr[100] = {0};
scanf("%d", &n);
yanghui(&arr,n);
return 0;
}
2.使用二维数组简单解法.
#include<stdio.h>
int main()
{
int arr[10][10] = { 0 };//使用二维数组
int i = 0;
for (i = 0; i < 10; i++)
{
int j = 0;
for (j = 0; j <= i; j++)
{
if (j == 0 || j == i)
{
arr[i][j] = 1;
}
if (i >= 2 && j >= 1)
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
for (i = 0; i < 10; i++)//打印
{
int j = 0;
for (j = 0; j <= i; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}