程序代码:
/*******************************************************************************
个公司的100个软件投票,输出排名前10的软件的序号
--------------------------------------------------------------------------------
我按照我的理解来作:有一百个软件,然后随机每个软件给它赋值,然后排序,输
出得票数最多的前十名的序号(即是数组的下标)。
*******************************************************************************/
#include<stdio.h>
#include<time.h>
#define N 100
/*-------------------------随机数赋值----------------------------*/
void eval(int *a)
{
int i;
for(i=0;i<N;i++)
{
srand(time(NULL)+i);
a[i]=rand()%100+1;
}
}
/*---------------------交换数据--------------------------*/
void _swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
/*-----------------------冒泡法排序------------------------*/
void sort(int *a,int *b)
{
int i,j;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{
_swap(&a[i],&a[j]);
_swap(&b[i],&b[j]);
}
}
/*--------------------主函数-------------------------------*/
int main(void)
{
int a[N],b[N];
int i;
for(i=0;i<N;i++)
b[i]=i+1;
eval(a);
sort(a,b);
for(i=0;i<10;i++)
printf("票数: %d ,序号 : %d\n",a[i],b[i]);
return 0;
getch();
}