KiKi学习了循环,BoBo老师给他出了一系列打印图案的联系,该任务是打印用组成的带空格直角三角形图案
输入描述:多组输入,一个整数(2~20),表示直角三角形直角边的长度,即的数量,也表示输出行数。
输出描述:针对每行输入,输出用组成的对应长度的直角三角形,每个后面有一个空格。
我自己一开始是这么写的,我的理解是假设我输入5,那么第一行就是四个空格一个*,然后下面几行空格递减,递增,直到第5行5个。
那么输入是几就有几行几列,那么while循环,每次循环让input-1,直到最后一行停止循环。然后按照上面规律进行打印。
int main()
{
int input = 0;
scanf("%d", &input);
int i = 0;
int j = 0;
int tmp = input;
while (input)
{
for (i = 0; i < input - 1; i++)
{
printf(" ");
}
for (j = 0; j < tmp - input + 1; j++)
{
printf(" *");
}
printf("\n");
input--;
}
return 0;
}
参考答案是这样写的,他是个多组问题。考虑到
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
0 | * | ||||
1 | * | * | |||
2 | * | * | * | ||
3 | * | * | * | * | |
4 | * | * | * | * | * |
用i和j分别控制行和列,只有当行列之和等于输入-1时,才输出*,小于的情况都是输出空格。
int main()
{
int n = 0;
while (scanf("%d", &n) == 1)
{
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (i + j < n - 1)
{
printf(" ");
}
else
{
printf("* ");
}
}
printf("\n");
}
}
return 0;
}