关于空心数模式的c程序设计

flvtvl50  于 2023-01-04  发布在  其他
关注(0)|答案(1)|浏览(127)

用for循环编写一个打印空心数字模式序列的C程序
输入:

5

输出:
x一个一个一个一个x一个一个二个x

xqk2d5yq

xqk2d5yq1#

在尝试您的代码时,由于此语句的组成,程序一直无限期地运行。

for (i = 1; i <= a + 1; a++) {

该语句递增输入的值,因此“i”与“a”的比较永远不会为假。
查看您所需的结果,基本上有三种打印模式:

  • 打印所有整数值的初始行。
  • 中间行在左侧打印递增值,在右侧打印递减值,中间有空格。
  • 最后一行,所有整数值都以递减形式打印。

在此基础上,我提供了以下重构的代码片段。

#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;
}

对此进行测试后,端子上产生以下测试输出。

@Vera:~/C_Programs/Console/HollowNumber/bin/Release$ ./HollowNumber 
Enter size: 6
123456
2    5
3    4
4    3
5    2
654321
@Vera:~/C_Programs/Console/HollowNumber/bin/Release$ ./HollowNumber 
Enter size: 8
12345678
2      7
3      6
4      5
5      4
6      3
7      2
87654321

请注意代码段中有关递增、递减和测试的注解,以解释正在发生的事情。
给予一下,看看它是否符合你项目的精神。

相关问题