在数据不参与计算的情况下改变数据类型得出的答案不一样
#include
#include
typedef struct
{
int num;
double store;
}stu;
void change(stu*x,stu*y)
{
stu temp;
temp=*x;
*x=*y;*y=temp;
}
int order(double x, double y)
{
int c;
if(x>y) c=0;
if(c==0)
return 1;
else return 0;
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
stu stu[n];
for(int i=0;iscanf("%d %lf",&stu[i].num,&stu[i].store);
}
for(int i=0;i-1;i++)
{
for(int j=0;j-1;j++)
{
int d=order(stu[j].store,stu[j+1].store);
if(d==1)
{
change(&stu[j],&stu[j+1]);
}
}
}
printf("%d %g",stu[k-1].num,stu[k-1].store);
}
将上面结构体中的int 改成long 或者将double改成float 最后的答案会不一样,输入的数据都符合要求。
应该是change函数里面的结构体指针出了问题,但是不知道怎么改