#include <stdio.h>
#define GAP 2
int main()
{
int a = 0, b = 0;
printf("Enter size: ");
scanf("%d", &a);
b = a - GAP;
for (int i = 0; i < a; i++)
{
if (i == 0) /* Print all values on the first line */
{
for (int j = 1; j <= a; j++)
{
printf("%d", j);
}
printf("\n");
}
else if (i == a - 1) /* Print all values in descending sequence on the last line */
{
for (int j = a; j > 0; j--) /* Note the decrementing of the counter value */
{
printf("%d", j);
}
printf("\n");
}
else /* Otherwise, print descending numbers with a gap */
{
printf("%d", i + 1);
for (int j = 0; j < b; j++)
{
printf(" ");
}
printf("%d\n", a - i);
}
}
return 0;
}
1条答案
按热度按时间xqk2d5yq1#
在尝试您的代码时,由于此语句的组成,程序一直无限期地运行。
该语句递增输入的值,因此“i”与“a”的比较永远不会为假。
查看您所需的结果,基本上有三种打印模式:
在此基础上,我提供了以下重构的代码片段。
对此进行测试后,端子上产生以下测试输出。
请注意代码段中有关递增、递减和测试的注解,以解释正在发生的事情。
给予一下,看看它是否符合你项目的精神。