---
# System prepended metadata

title: 期中考
tags: [初階程式設計]

---

# 期中考

```cpp=
#include <stdio.h>
#include <stdbool.h>

int main()
{
    printf("Please choose which pattern you want to print: (Enter [1/2/3/4])\n");
    printf("1: Symmetry pattern\n");
    printf("2: Number triangle\n");
    printf("3: Square pattern with stars\n");
    printf("4: End program\n");

    int mode, n;
    scanf("%d", &mode);

    while (mode != 4)
    {
        if (mode == 1)
        {
            printf("Please enter the length of number sequence: ");
            scanf("%d", &n);
            
            // check whether the input number is within the range
            while (n <= 0)
            {
                printf("The size has to be positive. Please enter again: ");
                scanf("%d", &n);
            }

            // output the number sequence using nested loop
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j < n; j++)
                {
                    if (j <= i)
                        printf("%d ", j);
                    else
                        printf("  ");
                }

                if (i == n)
                    printf("%d ", n);
                else
                    printf("  ");

                for (int j = n - 1; j > 0; j--)
                {
                    if (j <= i)
                        printf("%d ", j);
                    else
                        printf("  ");
                }

                printf("\n");
            }
            printf("Please choose which pattern you want to print: (Enter [1/2/3/4])\n");
            printf("1: Symmetry pattern\n");
            printf("2: Number triangle\n");
            printf("3: Square pattern with stars\n");
            printf("4: End program\n");

            scanf("%d", &mode);
        }
        else if (mode == 2)
        {
            printf("Please enter the size for triangle: ");
            scanf("%d", &n);

            // check whether the input number is within the range
            while (n < 2 || n > 9)
            {
                printf("The size has to be between 2 and 9. Please enter again: ");
                scanf("%d", &n);
            }

            // output the triangle using nested loop
            for (int i = 1; i <= n; i++)
            {
                for (int j = n; j > 0; j--)
                {
                    if (j <= i)
                        printf("%d ", j);
                    else
                        printf("  ");
                }

                for (int j = 2; j <= n; j++)
                {
                    if (j <= i)
                        printf("%d ", j);
                    else
                        printf("  ");
                }

                printf("\n");
            }
            printf("Please choose which pattern you want to print: (Enter [1/2/3/4])\n");
            printf("1: Symmetry pattern\n");
            printf("2: Number triangle\n");
            printf("3: Square pattern with stars\n");
            printf("4: End program\n");

            scanf("%d", &mode);
        }
        else if (mode == 3)
        {
            printf("Please enter the size for square: ");
            scanf("%d", &n);

            // check whether the input number is within the range
            while (n < 2 || n > 9)
            {
                printf("The size has to be between 2 and 9. Please enter again: ");
                scanf("%d", &n);
            }

            bool count = true;
            bool check = true;
            int output = 1;

            // output the square using nested loop
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= n; j++)
                {
                    if (check == true)
                    {
                        printf("%d ", output);

                        // if the output number is bigger than 9, than start to decrease
                        // if the output number is smaller than 1, than start to increase
                        if (count == true)
                            output++;
                        else
                            output--;

                        if (output > 8)
                            count = false;
                        if (output < 2)
                            count = true;
                    }
                    else
                    {
                        printf("* ");
                    }

                    // switch the number and *
                    check = !check;
                    if ((n % 2 == 0) && (j == n))
                        check = !check;
                }
                printf("\n");
            }
            printf("Please choose which pattern you want to print: (Enter [1/2/3/4])\n");
            printf("1: Symmetry pattern\n");
            printf("2: Number triangle\n");
            printf("3: Square pattern with stars\n");
            printf("4: End program\n");

            scanf("%d", &mode);
        }
        else
        {
            // check whether the input number is within the range
            printf("The input mode should be 1 to 4. Please enter again: ");
            scanf("%d", &mode);
        }
    }
    printf("End Program");
}
```