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;
}