各位大佬们,小白菜我又来啦~~~
1.题目:
输入一个数,打印一个三角形(五)
输入五,得到如下结果
2.分析:
(1)这道题乍一眼看好像是不知道从何下手,但是我们仔细观察观察和输入一个数,打印一个三角形(三)相比,这道题是不是只是图形里面的“ * ”换成了变化的数字,而这个变化是如何的呢?我们现在来进行分析。
(2)如果设置行数为n,第几行为i,那么空格的个数可以表示为总行数-第几行,即n-i;
(2)我们不妨将三角形里面的数字从中间分成两部分,那么左边的数字就是从1开始一直到中间的数字结束,而中间的数字恰好就是所在的行数,那么左边的数字为:1~i;右边的数字我们可以观察到为中间的数字开始每次减少1,一直到1位置停止输出,那么右边的数字为:i-1~1。这样分析之后和输入一个数,打印一个三角形(三)中的图形就没什么区别了。只要再写一个内循环用来输出右端的数字即可。
(3)代码:
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n - i; j++)
{
printf(" ");
}
for (int k = 1; k <= i; k++)
{
printf("%d", k);
}
for (int m = i - 1; m >= 1; m--)
{
printf("%d", m);
}
printf("\n");
}
return 0;
}
(4)运行结果:
(5)补充:
这题主要是要对三角形里面的数字的规律进行分析,因为图形数字是左右对称的所以可以考虑将图形的左右两边分别利用for循环进行输出,那么就要分析出循环里面变量的范围。左边输出时数字从1~i;右边数字从i-1~1。因此只需要对打印一个三角形(三)中内循环循环条件和输出进行修改即可。
好啦,希望大家也能收获满满呀,下题见~~~