画一个空心圆
分析思路:图形在竖直方向上分割成若干份,依次一行输出相应的点(用星号表示),可以假设该圆的半径是10,设定y的值,求相应的x值,表示为m,因为圆是对称的,会有两个点,所以记得要进行判断。
#include <stdio.h>
#include <math.h>
int main()
{
int y;
double x;
double m;
for(y = 10;y >= -10;y--) //r = 10
{
m = 2.5 * sqrt(100 - y * y);
for(x = 0;x < 30 - m;x++) //2.5是屏幕调整系数
{
printf(" ");
}
printf("*");
for(;x <= 30 + m;x++)
{
printf(" ");
}
printf("*\n");
}
return 0;
}
图形为:
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
程序中有一个屏幕调整系数,因为x和y的比值不为1,所以需要将通过sqrt(100 -x * x)求出来的m值进行调整,比较之后,选择了2.5,那么相应的取值范围也变化了。
这是没有加屏幕调整系数亦未改变取值范围的程序:
#include <stdio.h>
#include <math.h>
int main()
{
int y;
double x;
double m;
for(y = 10;y >= -10;y--) //r = 10
{
m = sqrt(100 - y * y);
for(x = 0;x < 10 - m;x++)
{
printf(" ");
}
printf("*");
for(;x <= 10 + m;x++)
{
printf(" ");
}
printf("*\n");
}
return 0;
}
效果图为是一个椭圆:
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *