用C/C++来输出正方形

这是一个我犯过错的坑,这个坑就是当你用printf("\n");语句换行的时候,纵向的边的长度实际上是由字符和换行的一些宽度来构成的,也就是无需换两次行,这一点是我之前一直没明白的。。。所以打印出来的正方形就会类似下面的效果:
在这里插入图片描述
因此,我们就可以按照下面的程序进行输出,很简单:

#include<cstdio>
int main()
{
	int i, row, col;
	char c;
	while(scanf("%d %c", &col, &c) != EOF)
	{
		if(col % 2 == 1) row = col/2 +1;
		else row = col/2;
		for(i = 0; i < col; i++){printf("%c", c);}
		printf("\n");
		for(i = 2; i < row; i++)
		{
			printf("%c", c);
			for(int k = 1; k < col-1; k++)
			{
				printf(" ");	
			}
			printf("%c\n", c);
		}		
		for(i = 0; i < col; i++){printf("%c", c);}	 
	}
	return 0;
}

以后注意就好。。。


版权声明:本文为wanyun_qian原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。