C语言 编一个程序,产生0-100随机数,然后用选择排序法,从小到大排列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 编一个程序,产生0-100随机数,然后用选择排序法,从小到大排列相关的知识,希望对你有一定的参考价值。

参考技术A //#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
int main(void)
int nDec[100],i,j,k;
srand((unsigned)time(NULL));
for(i=0;i<100;nDec[i++]=rand());
for(i=0;i<100;i++)
for(k=i,j=k+1;j<100;j++)
if(nDec[k]>nDec[j]) k=j;
if(i!=k)
j=nDec[i];
nDec[i]=nDec[k];
nDec[k]=j;

printf("%d ",nDec[i]);

printf("\n");
return 0;
本回答被提问者和网友采纳
参考技术B //#include "stdafx.h"//<a href="https://www.baidu.com/s?wd=vc%2B%2B6.0&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dBnWDsrHnvnvDdnjR1nHR10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHb3rHR1rjc1nWbknWmsnHfvPs" target="_blank" class="baidu-highlight">vc++6.0</a>加上这一行.
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
int main(void)
int nDec[100],i,j,k;
srand((unsigned)time(<a href="https://www.baidu.com/s?wd=NULL&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dBnWDsrHnvnvDdnjR1nHR10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHb3rHR1rjc1nWbknWmsnHfvPs" target="_blank" class="baidu-highlight">NULL</a>));
for(i=0;i<100;nDec[i++]=rand());
for(i=0;i<100;i++)
for(k=i,j=k+1;j<100;j++)
if(nDec[k]<nDec[j]) k=j;
if(i!=k)
j=nDec[i];
nDec[i]=nDec[k];
nDec[k]=j;

printf("%d ",nDec[i]);

printf("\n");
return 0;

产生一个随机数(伪随机)的一种方法(c语言)

基本原理

使用计算机产生伪随机数的最简单方法方法:基于时间戳及rand等函数产生的伪随机数。对于这种方法,我们只需要拥有时间戳这个参数即可实现。
注:计算机并不能产生真正的随机数,而是将已经编写好的一些无规则排列的数字存储在电脑里,把这些数字划分为若干相等的N份,并为每份加上一个编号,用srand()函数获取这个编号,然后rand()就按顺序获取这些数字,当srand()的参数值固定的时候,rand()获得的数也是固定的,所以一般srand的参数用time(NULL),因为系统的时间一直在变,所以rand()获得的数,也就一直在变,相当于是随机数了。只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。如果想在一个程序中生成随机数序列,需要至多在生成随机数之前设置一次随机种子。

相关知识
  • 时间戳:

这里的时间戳是为简单的概念,是当前计算机时间与1970年一月一日零时零分零秒的差值再换算成单位为秒的一串数字。

  • 随机种子:

是计算机专业术语,一种以随机数作为对象的以真随机数(种子)为初始条件的随机数。一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。
注:本文利用srand设置随机种子。

  • rand函数:

简单理解是一个无需参数就能够产生0到32767之间的随机数且返回值为int类型的函数。
函数原型:int rand (void)
rand函数每次调用前都会查询是否调用过srand(seed),是否给seed设定了一个值,如果有,那么它会自动调用srand(seed)一次来初始化它的起始值,若之前没有调用srand(seed),那么系统会自动给seed赋初始值。

  • srand函数:

简单理解是为rand函数设置一个随机起点。
函数原型:void srand (unsigned int seed)
是利用time函数来基于时间戳(时间与1970年一月一日0时0分0秒的差值以秒为单位)去设置随机数的生成起点,只调用一次就好(处于主函数即可),重复调用(位于自定义函数不理想)可能会与刚刚产生的随机数相近。

  • time函数:

简单理解为返回当前计算机时间
函数原型: time_t time(time_t *timer)
参数说明: timer=NULL时得到当前日历时间(从1970-01-01 00:00:00到现在的秒数),timer=时间数值时,用于设置日历时间,time_t是一个unsigned long类型。如果 timer不为空,则返回值也存储在变量 timer中。
函数功能: 得到当前日历时间或者设置日历时间
函数返回: 当前日历时间
是对typedef的重新命名,本质上为长整型 返回整形指针

  • NULL:

简单理解为返回空指针。
用于指示指针不引用有效对象。程序通常使用空指针来表示条件,被定义为 ((void*)0), 0 或 0L,这取决于编译器类型。

  • unsigned int:

简单理解为强制类型转化为int类型的类型操作符
要使用的话,则尽量避免有符号数与无符号数的比较运算和避免减法运算,在很多时候,在unsigned的世界里,x-y>0与x>y都是不等价的。

  • 相关头文件:<stdlib.h>、<time.h>
具体操作

打印10个随机数

#include <stdlib.h>
#include <time.h>
#include <stdio.h>
int main()
{
    int a;
    int b;
    srand((unsigned int)time(NULL));
    for (a = 1; a <= 10; a++)
    {
        b = rand();
        printf("%d ", b);
    };
    return 0;
}

若要求打印100以内随机数,则利用取模运算即可。

#include <stdlib.h>
#include <time.h>
#include <stdio.h>
int main()
{
    int a;
    int b;
    srand((unsigned int)time(NULL));
    for (a = 1; a <= 10; a++)
    {
        b = rand()%100;
        printf("%d ", b);
    };
    return 0;
}

后注

本人为初学者,所写可能存在错漏,如有发现,欢迎批评指正!

以上是关于C语言 编一个程序,产生0-100随机数,然后用选择排序法,从小到大排列的主要内容,如果未能解决你的问题,请参考以下文章

怎样用c语言产生0-100随机数?求助高手

Python 随机产生[0,100]以内的随机数,找到最大值和最小值并交换位置

C语言编程:编写一个猜数的游戏,系统自动产生一个随机数,你来猜,程序给出提示,直到猜对为止。

C语言问题(1分钟内随机产生1000个随机数),请教!

求助一道抽签程序

怎么用c语言产生0~1的随机数,水平较差,需要详细一点的程序,急谢谢!