C语言的打空心正方形问题..

编写一个C程序,输入正方形的边长,输出一个用星号表示的空心正方形.程序允许输入的边长在1到20之间.例如,如果程序读取正方形的边长为4,则打印结果为
* * * *
* *
* *
* * * *
不是空心的话我编到了,空心的正方形程序我想不出来.
请指教一下方法.
1第一个答案太烦琐了,而且运行后结果输出也不正确.

2空心是空格啊.问题是怎么才能打出来.比实心的难多了.

#include<stdio.h>
main()
{
int a,i,j;
printf("输入正方形的边长1-20:");
scanf("%d",&a);
for( i=0;i<a;i++)
printf("*");
printf("\n");
for(i=0;i<a-2;i++)
{
printf("*");
for(j=0;j<a-2;j++)
printf(" ");
printf("*");
printf("\n");
}
for(i=0;i<a;i++) printf("*");
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-29
#include<stdio.h>
main()
{
int
a,i,j;
printf("输入正方形的边长1-20:");
scanf("%d",&a);
for(
i=0;i<a;i++)
printf("*");
printf("\n");
for(i=0;i<a-2;i++)
{
printf("*");
for(j=0;j<a-2;j++)
printf("
");
printf("*");
printf("\n");
}
for(i=0;i<a;i++)
printf("*");
printf("\n");
}
第2个回答  2007-05-13
空心正方形:
#include <stdio.h>
outh(int len)
{
int m;
for(m=1;m<=len;m++)
printf("* ");
printf("\n");
}
outs(int len)
{
int i,j;
for(i=1;i<=len-2;i++)
{
printf("*");
for(j=0;j<=len-2;j++)
printf(" ");
printf("*");
printf("\n");
}
if(!(i-1))
printf("\n");

}

main()
{
int b,i;
printf("please input bian chang(2~24):");
scanf("%d",&b);
if(b>1&&b<25)
{
outh(b);
outs(b);
outh(b);
}
else printf("can not show\n");
}
第3个回答  2007-05-13
dujxyoupan 做的有点复杂吧,肯定还有更简单的方法。。
第4个回答  2007-05-13
空心不就是空格吗?