C语言:计算圆周上的点

it2025-09-13  4

C语言:21.给定一个rSquare,表示一个圆的半径的平方,某圆的圆心在坐标系原点,需要计算返回处在该园园周上的格点(横纵坐标均为整数的点)数量。 —输入一个整数rSquare。rSquare的取值范围在1到2,000,000,000之间(其中包括1和2,000,000,000) 输出: —返回圆上的格点数量 举例:—rSquare=1,返回4.圆心在原点、半径为1的圆通过4个格点:(1,0)、(0,1)、(-1,0)和(0,-1) 原文章链接:此链接答案有误https://blog.csdn.net/alibbaab/article/details/108529745 正解: 解题思路:圆心为原点,此圆半径r的平方=rSquare,利用圆的数学表达式:位于圆周上的某点(a,b),满足:a ^ 2+b ^ 2=r ^ 2; 另外还有考虑象限的问题,如果第一象限有满足的一个点,横纵坐标值均为整数,必有 二三四象限的点存在于圆周上(例子:看文章最后一行代码的注释)。

**子程序:

int countPoints(int rSqure) { int counter=0; int i=0,i2=0; //纵坐标变化量i int j=0,j2=0;//横坐标变化量j int temp=0; for(i=0;(i*i)<=rSqure;i++) //i的变化量的平方值小于等于半径的平方值rSqure { for(j=0;(j*j)<=rSqure;j++) //j的变化量的平方值小于等于半径的平方值rSqure { i2=i*i; j2=j*j; temp=i2+j2; if(temp==rSqure) //判断是否在圆周上 counter=counter+2; } } return counter; }

完整代码:

#include<stdio.h> int countPoints(int rSqure) { int counter=0; int i=0,i2=0; //纵坐标变化量i int j=0,j2=0;//横坐标变化量j int temp=0; for(i=0;(i*i)<=rSqure;i++) //i的变化量的平方值小于等于半径的平方值rSqure { for(j=0;(j*j)<=rSqure;j++) //j的变化量的平方值小于等于半径的平方值rSqure { i2=i*i; j2=j*j; temp=i2+j2; if(temp==rSqure) //判断是否在圆周上 counter=counter+2; } } return counter; } void main() { printf("%d\n",countPoints(100)); //半径的平方为100;有哪几个点?(10,0)(-10,0)(0,10)(0,-10)(6,8)(6,-8)(-6,8)(-6,-8) }
最新回复(0)