7-2 倒杨辉三角形 (10 分)
妞妞喜欢图形,总是喜欢把图形倒过来欣赏。有一次,她看见杨辉三角形,觉得很新鲜,于是就把它们大大小小地摆列出来了,好不得意哦。
输入格式:
输入数据中包含了多个整数n(1≤n≤10),以键盘输入结束^Z和遇文件结束符时结束输入。
输出格式:
以n为行数,其打印出的倒杨辉三角形(每个数据占三个字符)就是妞妞所喜欢的。每个倒三角形之间没有空行,见样本输出。
输入样例:
在这里给出一组输入。例如:
5
3
结尾无空行
输出样例:
在这里给出相应的输出。例如:
1 4 6 4 1
1 3 3 1
1 2 1
1 1
1
1 2 1
1 1
1
杨辉三角
#include<stdio.h>
int main()
{
int arr[10][10];
for (int i = 0; i < 10; i++)//将10*10二维数组初始化为1
{
for (int j=0;j<10;j++)
{
arr[i][j] = 1;
}
}
for (int i=2;i<10;i++)
{
for (int j = 1; j < i;j++)
{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
for (int i = 0; i < 10; i++)
{
for (int k = 0; k<26-6*i/2; k++)
printf(" ");
for (int j = 0; j < i+1; j++)
{
printf("%6d",arr[i][j]);
}
printf("\n");
}
return 0;
}
将其根据题目改动变为倒三角
#include<stdio.h>
int main()
{
int n;
int arr[10][10];
for (int i = 0; i < 10; i++)
{
for (int j=0;j<10;j++)
{
arr[i][j] = 1;
}
}
for (int i = 7; i >= 0; i--)
{
for (int j = 8; j > i; j--)
{
arr[i][j] = arr[i + 1][j] + arr[i + 1][j + 1];
}
}
while (scanf("%d", &n) != EOF)//处理到文件尾
{
for (int i = 10-n; i < 10; i++)
{
for (int k = 0; k<i-(10-n);k++)
{
printf(" ");
}
for (int j = i; j < 10; j++)
{
if (j == 9)//让最后一个输出数字后无空格
{
printf("%3d", arr[i][j]);
break;
}
printf("%3d ", arr[i][j]);
}
printf("\n");
}
}
return 0;
}