用rand() % 101 产生100 个0-100的数,并放入数组ar 。
然后进行排序,可以从大到小排序。
把数组中前3个不同的值打印出来。(用循环跳过相同的值)
int b[3], i = 0; // 可以用数组 (随便)
while(i < 3) // 找出三个不同的数
{
// 自己想想吧
}
// 给你个思路
// 代码要的话也没问题
----------------解决方案--------------------------------------------------------
二楼的算法用另一种结构表示可能更清楚一点。
typedef struct node{
int score; //分数
int num; //得到该分数的人数
}NODE;
NODE place[3]; //用place[0],place[1],place[2]分别表示前三名。
用一遍循环,每个循环中分数分别和前三名比较,然后放到合适的位置就可以了。
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j;
int ar[101]; // 很少见哈
srand((unsigned int)time(NULL));
for(i = 0; i < 100; i++)
ar[i] = rand() % 101;
// 自己加排序的(0 - 99) ,ar[100] 我是作为一个临时数据的
i = j = 0; // 算法部分
ar[100] = ar[0];
while(i < 3 && j < 100)
{
while(j < 100 && ar[100] == ar[j])
j++;
printf("%d ", ar[100]);
ar[100] = ar[j];
i++;
}
getchar();
return 0;
}
//------------------------------------
因为上面那样说了,所以就这样写了,
为什么出现ar[101] ,是因为我想省区一个 if。
上面的帖子说了这中思路,所以就这样写了个。
我自己觉得不好。先就写这个吧。
等会在写个。
[[it] 本帖最后由 cosdos 于 2008-4-5 23:19 编辑 [/it]]
----------------解决方案--------------------------------------------------------
呵呵。。。已经搞定了
----------------解决方案--------------------------------------------------------