C语言问题:某个网站有100个免费下载软件。非常感谢~急急急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:53:03
某个网站有100个免费下载软件。请编写一程序,随机生成每个软件的下载次数,显示下载次数最多的前10个软件和下载次数为0的所有软件(假设每个下载软件用一个1~100的整数唯一标识)。
问题补充:要求(1)每个软件的下载次数通过随机函数random( )产生。
(2)在第一行输出下载次数最多的前10个软件的编号;在第2行输出下载次数为0的所有软件的编号。
可不可以定义两个一维数组:
int num[100],count[100];
其中,利用num记录每个软件的编号,
利用count记录每个软件的下载次数。
初始num[i]=i+1,
count[i]存放编号为i+1的软件下载次数
为了输出下载次数最多的前10个软件,需要对count数组实施排序操作,要保证两个数组的对应元素同时调换位置,以保证它们的对应关系。

//* Note:Your choice is C IDE */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main()
{
int num[100],count[100],c[100],d[100],max11,i,l=0,j,max,t;
randomize();
for(i=0;i<100;i++)
{
count[i]=i+1;
num[i]=random(100);//随机产生最大为1000的数
c[i]=num[i];//备份原数组
}
printf("下载次数最多的10个软件的编号分别为:");
for (i=0; i<99; i++)
{
max = i;
for (j=i+1; j<100; j++)
{
if (num[j] > num[max])
{
max = j;
}
}

if (max != i)
{
t = num[i];
num[i] = num[max];
num[max]= t;
t = count[i];
count[i] = count[max];
count[max] = t;
}
}
for(i=0;i<10;i++)
{
printf("%d\t",count[i]);
}
for(i=0;i<100;i++)
{
if(c[i]==0)