C语言 打印空心圆出现的问题
代码如下:#include<stdio.h>#include<math.h>#defineR16intmain(){doubley;intm,x;for(y=16;y>=...
代码如下:
#include <stdio.h>
#include <math.h>
#define R 16
int main()
{
double y;
int m,x;
for(y=16; y>=-16; y--)
{
m=sqrt(R*R-y*y);
for(x=-16; x<-m; x++)
printf(" ");
printf("*");
for(; x<m; x++)
printf(" ");
printf("*\n");
}
return 0;
}
打印一个半径为16的空心圆,现在出现的问题是:如果我只打印上半圆没问题,只打印下半圆也没问题,但是打印整个圆时上半圆的形状就变了,请问这是为什么? 展开
#include <stdio.h>
#include <math.h>
#define R 16
int main()
{
double y;
int m,x;
for(y=16; y>=-16; y--)
{
m=sqrt(R*R-y*y);
for(x=-16; x<-m; x++)
printf(" ");
printf("*");
for(; x<m; x++)
printf(" ");
printf("*\n");
}
return 0;
}
打印一个半径为16的空心圆,现在出现的问题是:如果我只打印上半圆没问题,只打印下半圆也没问题,但是打印整个圆时上半圆的形状就变了,请问这是为什么? 展开
2个回答
展开全部
你画的那是椭圆吧!
#include <stdio.h>
#include <math.h>
#define R 16
int main()
{
int x, y, y1, y2;
for(x=0;x<=2*R;x++)
{
y1=(R - sqrt(2.0*R*x-x*x))*2;
y2=(R + sqrt(2.0*R*x-x*x))*2;
for ( y = 0; y < y1; ++y)
printf(" ");
printf("*");
if (y < y2)
{
for (;y < y2; ++y)
printf(" ");
printf("*");
}
printf("\n");
}
#include <stdio.h>
#include <math.h>
#define R 16
int main()
{
int x, y, y1, y2;
for(x=0;x<=2*R;x++)
{
y1=(R - sqrt(2.0*R*x-x*x))*2;
y2=(R + sqrt(2.0*R*x-x*x))*2;
for ( y = 0; y < y1; ++y)
printf(" ");
printf("*");
if (y < y2)
{
for (;y < y2; ++y)
printf(" ");
printf("*");
}
printf("\n");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询