在C中,我需要生成100个随机数,然后按降序对它们进行排序。截至目前,我有这个,这是一个绝对的混乱。我可以告诉我,这一切都是错的,但我没有足够的经验,实际上能够以理智的方式写出来。有人可以帮忙吗?
/*100 random numbers in range 1-10*/
/*sorted in descending order*/
#include <stdio.h>
void random(char *nums, int count);
int main(void) {
int random_num, count;
char nums[100];
for(count = 0; count < 100; count++) {
random(&nums, count);
}
for(count = 0; count < 100; count++) {
printf("%d\t", nums[count]);
}
return 0;
}
void random(char *nums, int count) {
int random_data = fopen("/dev/random", "r");
nums[count] = fread[random_data];
}
答案 0 :(得分:1)
请致电rand()
上的stdlib.h
:
#include <stdlib.h>
int main(void) {
int random_num, count;
srand(time(NULL));
char nums[100];
for(count = 0; count < 100; count++) {
nums[count] = rand();
}
for(count = 0; count < 100; count++) {
printf("%d\t", nums[count]);
}
return 0;
}
答案 1 :(得分:0)
1个随机数:第一个srand(time(0)),然后用rand()生成你想要的数字
2 sort:使用qsort(array,n,sizeof(int),comp);
//here comp let the number in desc order
int comp(const void*a,const void*b)
{
return *(int*)b-*(int*)a;
}
他们都需要&lt;文件stdlib.h&GT;
答案 2 :(得分:0)
试试这段代码,我还提供了按降序排序值的代码。
/*100 random numbers in range 1-10*/
/*Sorted in descending order*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void sorting(char *numbers) /* Sorting in descending order */
{
int i,j,temp;
for(i=1;i<100;i++)
{
for(j=0;j<100-i;j++)
{
if(numbers[j] < numbers[j+1])
{
temp = numbers[j+1];
numbers[j+1] = numbers[j];
numbers[j] = temp;
}
}
}
}
int main(void) {
int random_num, count;
srand(time(NULL));
char nums[100];
for(count = 0; count < 100; count++) {
/* Mod by 11 as we need range 1-10 */
nums[count] = rand() % 11;
}
/* Sorting in descending order */
sorting(nums);
printf("Printing values after sorting.\n");
for(count = 0; count < 100; count++) {
printf("%d\n", nums[count]);
}
return 0;
}