x图形的创建

题目:输入一个数(2

x图形的创建_第1张图片

数组解决

int main()
{   	char arr[20][20] = { 'a' };
		int x;
		scanf_s("%d", &x);
		for (int i = 0;i < x;i++)
		{
			for (int j = 0;j < x;j++)
			{
				if (i == j || (i + j == x - 1))
					arr[i][j] = '*';
				else
					arr[i][j] = ' ';

			}

		}
		for (int i = 0;i < x;i++)
		{
			for (int j = 0;j < x;j++)
			{

				printf("%c", arr[i][j]);


			}
			printf("\n");
		}
	
}

创建2维数组然后向数组对应的位置输入*,其余地方输入空格即可。

需要思考的地方在于如何确定*的位置,在这里我提出我的方法‘坐标法’,在纸上以i和j建立坐标,并观察坐标的特点是否可以用i和j表示。

x图形的创建_第2张图片

x图形的创建_第3张图片

由此可知在j==i 和 j+i==x-1 的地方放置*。

循环解决

#include 
int main() {
    int a;
    while (scanf_s("%d", &a) != EOF)
    {
        for (int i = 0; i < a; i++)
        {
            for (int j = 0; j < a; j++) 
            {
               if (i == j || (i + j == a - 1))
                    printf("*");
                else
                    printf(" ");
            }

            printf("\n");

        }
    }
    return 0;
}

循环解决和数组解决使用找*的方法相同,但是在循环中没有放置*的地方,是采用一行一列的方式找到需要打印*的地方。循环的方法相对于数组来说更加的简洁与高校了。

你可能感兴趣的:(算法,数据结构,c语言)