
程序代码:
/*******************************************************************************
        个公司的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();
}