❶ 1到25的数字,如何通过c语言实现随机排列
首先不管是不是通过编译。
做到随即排列,需要用到随机数产生函数。
#include <stdio.h>
#include <time.h>
main()
{
int i;
int cp1[10];
clrscr();
srand((unsigned)time(NULL)); /*随机数发生器,时间作为种子 */
for(i=0;i<10;i++)
{
cp1[i]=rand()%100+1;/*rand产生的随机数字*/
}
textcolor(12);
for(i=0;i<10;i++)
{
printf("\n");
cprintf("%d",cp1[i]);
}
getch();
}
以上是打印1到100的随机数字。
你说的要随机排列25个数字。
必须要产生25个随机数字。处理方法有很多,可以采用让随机数产生为1~25的数字,但是要保证每个数字不一样。不能有重复,这个可以通过比较来完成。然后可以一一对应输出,或者直接输出产生的随机数也可以。另外一种方法是允许有重复,但是必须给每个数字1~25和产生的25个随机数字进行一一对应编号,然后首先按照随机数对应的输出,如果遇到相同的随机数,就随机数先后顺序排下来对应输出。方法有很多,自己可以思考一下。
❷ 用C语言如何将一个一维数组中的元素随机排序
#include
#include
#include
intmain()
{
inti,j,n,k,t,a[100];
srand((unsigned)time(NULL));
<p
利用rand()函数产生随机数字,rand()%n产生小于n的随机数,然后交换。
运行的结果:
#include
#include
intmain()
{
int&nbs
利用rand()函数产生随机数字,rand()%n产生小于n的随机数,然后交换。
(2)c语言18个固定数字随机排序扩展阅读
C语言排序法
在一层循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位。
这样只能排好一个元素,于是需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。
❸ c语言随机产生20个整数然后排序 顺序 越简单越好(新新手)
#include<stdio.h>
#include<stdlib.h>
intmain(void){
inti,j,n,a[20];
//限定整数范围为0~k。如果不需要范围,可以去掉%k
intk=100;
for(i=0;i<20;i++)
a[i]=rand()%k;
//排序a[20],从小到大
for(i=0;i<19;i++){
for(j=i+1;j<20;j++){
if(a[i]>a[j]){
n=a[i];
a[i]=a[j];
a[j]=n;
}
}
}
//输出a[20]
for(i=0;i<20;i++)
printf("%d",a[i]);
return0;
}
❹ C语言:生成20个随机数,然后把它们排序,最后要把排序前和排序后的数都显示出来。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[21],num[21]; /*你的角标从1开始,这里的20就不够了*/
int i,j;
int index,temp;
srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[i] = rand(); /*这个应当是i*/
printf("%d\n",nums[i]);
num[i]=nums[i]; /*备份原始数据*/
}
/*选择法,从小到大排序*/
for (i=1;i<=20;i++)
{
index=i; /*从i到20这几个元素中最小值的序号*/
for (j=i+1;j<=20;j++)
if (nums[index]>nums[j])
index=j;
if (index!=i)/*交换i和index的元素的值*/
{
temp=nums[index];
nums[index]=nums[i];
nums[i]=temp;
}
}
for (i=1;i<=20;i++)
printf("%d\t%d\n",num[i],nums[i]);
getch();
return 0;
}
❺ C语言 随机数组排序
#include "stdlib.h"
#include "stdio.h"
main()
{
int i,j,k,a[10000],b[10000],n,t;
printf("please input the number of integer: ");
scanf("%d",&n);
for(i = 0; i < n; i++)
{
a[i] = random(80) + 20; /*生成数组*/
}
for(i = 0;i < n;i++) /*初始化元素数量*/
b[i] = 1;
for(i = 0; i < n; i++)
{
for(j = i + 1;j < n;j++)
{
if(a[i] == a[j])
{
b[i]++; /*计数*/
n--;
for(k = j;k < n;k++) /*去掉数组中重复值*/
a[k] = a[k + 1];
j--;
}
}
}
for(i = 1;i < n;i++) /*升序排序*/
for(j = 0;j < n - i;j++)
if(a[j] > a[j+1])
{
t = a[j];a[j] = a[j + 1];a[j + 1] = t;
t = b[j];b[j] = b[j + 1];b[j + 1] = t;
}
printf("\n Integer numbers\n");
for(i = 0;i < n;i++) /*输出*/
{
printf(" %d %d\n",a[i],b[i]);
}
getch();
}
❻ 用c语言编写一个程序把一列随机输入的数字从小到大排列
//起泡排序,小->大,,随机产生k个数
#include"stdio.h"
#include"time.h"
#include"stdlib.h"
void main()
{int str[200],str2;
int i,j,k;
srand(time(NULL));
k=rand()%100+10;
printf("input three numbers:\n");
for(i=0;i<k;i++)
str[i]=rand()%100;
for(j=0;j<k;j++)//比较5趟
for(i=0;i<k-j;i++)//第j趟就比较5-j次,共比较4+3+2+1=10次
if(str[i]>str[i+1])
{str2=str[i];str[i]=str[i+1];str[i+1]=str2;}
//输出
for(i=1;i<k;i++)
printf("%3d ",str[i]);
printf("\n");
}
❼ C语言中怎么对数组随机排序
可以用一个辅助数组进行随机排序,方法如下:
1 获取要排序的数组长度L。
2 定义整型的辅助数组,长度为L。
3 生成L个随机整型数字,存与辅助数组中,这样要排序数组和辅助数组就是一一对应的了。
4 对辅助数组排序,排序过程中,当改变辅助数组中数字的位置时,同步改变要随机排序的原数组中对应的元素位置。比如为排序交换辅助数组的第三个和第五个元素,那么就要同时交换原数组中的第三个和第五个元素。
5 当辅助数组排序完成后,原数组中的值就是随机顺序了。
6 删除辅助数组。