qsort(),sort() scanf();

做了个水题,发现自己还是很水,做个整理,以后多加注意!

#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
const int Max=10000000;
typedef struct node
{
double sum;
int res;
}Node;
Node des[Max];
int ans[Max];
int cmp(const void* s,const void *t)
{
if( ((Node*)t)->sum-((Node*)s)->sum>=0)//这里等不等于0还得注意了;
return 1;
else
return -1;
}
int main()
{
int m,n,k;
while(cin>>m>>n>>k)
{
int i,j;
double a;
for(i=0;i<n;i++)
{
des[i].sum=0;
des[i].res=i+1;
}

for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
scanf("%lf",&a);//!!!!!这里改成scanf("%f",&a);就wa!()
//cin>>a;
des[j].sum=des[j].sum+a;
}
qsort(des,n,sizeof(des[0]),cmp);
for(i=0;i<k;i++)
{
ans[i]=des[i].res;
//cout<<des[i].sum<<" "<<des[i].res<<endl;
}
// for(i=0;i<n;i++)
// {
// cout<<des[i].sum<<" "<<des[i].res<<endl;
// }
sort(ans,ans+k);
for(i=k-1;i>=0;i--)
{
cout<<ans[i];if(i!=0)cout<<" ";
}
cout<<endl;
}
return 0;
}
原文地址:https://www.cnblogs.com/orangeblog/p/2431949.html