C题解 1082 射击比赛 (20 分)


原题

https://pintia.cn/problem-sets/994805260223102976/problems/994805260990660608

代码

今天正式用c来刷PAT了,java遭不住,同样的思路不用工具类,一个几百毫秒,一个几毫米。难搞难搞。
小结下,我用c与java的套路。
1、可以视为一个记录的,用什么存储。根据题意看输出要求,像这题只用输出编号,用两个变量可存。如果要输出编号和对应的环数用一维数组可存。如果要输出编号和x、y,就要结构体存储了。
2、java的对象替换c的结构体的功能。

#include
#include
#include
using namespace std;

int main(){
	int result[1]={0};//记录最大值最小值时的编号
	int count = 0;
	//读入
	scanf("%d",&count);
	int max=0,min=200;
	for (int i = 0; i < count; i++)
	{
		int id,x,y;
		float distance;
		scanf("%d",&id);
		scanf("%d",&x);
		scanf("%d",&y);
		distance=sqrt(x*x+y*y);
		
		if(distance>=max){
			max=distance;
			result[0]=id;
		}
		if(distance<=min){
			min=distance;
			result[1]=id;
		}

	}
	printf("%04d %04d",result[1],result[0]);

	return 0;
}