问题描述:
终端输入,需要的图形的高度和宽度,绘制图形。
运行结果:
代码部分:
#include <stdio.h>
int main()
{
unsigned int width = 0;
unsigned int height = 0;
unsigned int i = 0;
unsigned int j = 0;
const unsigned int MIN_SIZE =3;
printf("Enter values for the width and height(minimum of %u):",MIN_SIZE);
scanf("%u%u",&width,&height);
if(width < MIN_SIZE)
{
printf("Width value of %d is too small.Setting it to %u.",width,MIN_SIZE);
width = MIN_SIZE;
}
if(height < MIN_SIZE)
{
printf("Height value of %d is too small.Setting it to %u.",height,MIN_SIZE);
height = MIN_SIZE;
}
for(i = 0;i < width;++i)
printf("*");
for(j= 0;j<height -2;++j){
printf("\n*");
for(i = 0;i<width-2;++i)
printf(" ");
printf("*");
}
printf("\n");
for(i = 0;i < width ; ++i)
printf("*");
printf("\n");
return 0;
}
代码的说明:
方框的定边和底边由相同的一个简单循环来创建。迭代次数是每条边中的星号数。输出中的中间行在一个嵌套的循环中产生。控制变量为j的外部循环重复height-2次,方框有height行,所以减去2,因为顶边和底边在这哥循环的外部创建。控制变量为i的内部循环在换行符后面输出一个星号,再输出width-2个空格。内部循环结束后,把另一个星号写到输出中,完成这一行。因此,在外部循环的每次迭代中,都是先输出一个换行符,再完整地执行内部循环,在输出一个换行符。