用C语言 如何从 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 中 随即选取其中两个 并输出这两个数的乘积?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言 如何从 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 中 随即选取其中两个 并输出这两个数的乘积?相关的知识,希望对你有一定的参考价值。

编程时有时需要随机输入一些数,这是调用随机函数可以完成此相命令.  
# include “stdio.h”   
# include “stdlib.h”   
# include “time.h” /*需引用的头文件*/   
srand((unsigned)time(NULL)); /*随机种子*/   
n=rand()%(Y-X+1)+X; /*n为X~Y之间的随机数*/
将上面几个数存到数组里,用随机函数取0--i 中的两个数,代表第几个数,然后把两个数相乘输出就行了。。追问

怎样把这些数存到数组里??

追答

那几个数如果是从键盘输入的话,可以定义一个int型数组,然后用for循环控制scanf函数输入到数组中。

追问

如果不是键盘输入的呢??
这些数是我用程序算出来的50以内的素数
#include
int main()

int n,m,i;
for(n=50,m=0,i=2;i<n;i++)

for(m=i-1;i%m!=0;m--)

if (m<=2)
printf("%d\n",i);


追答

#include
int main()

int n,m,i,b=0,a[50];
for(n=50,m=0,i=2;i<n;i++)

for(m=i-1;i%m!=0;m--)

if (m<=2)

printf("%d\n",i);
a[b++]=i;



追问

那然后是在后面加
srand((unsigned)time(NULL));  
n=rand()%(Y-X+1)+X;
这段语句就可以了??
那取出来的两个数用什么表示了??
而且# include “stdlib.h” 这个头文件是不是有错??

追答

n=rand()%(Y-X+1)+X;
n是随即在x--y之间的随机数。。用a[n]就是随即素数

参考技术A 用rand() 和 srand()取随机数
这个函数在stdlib.h里所以头文件要加上
#include <stdlib.h>
把这些个数字放进数组 然后用取到的随机数当数组的下标
如果取到的2个数一样就重新取(这里用循环过着go to 都可以)
然后。就不用我说了把追问

意思是 建立一个数组充当这些数字的下标
然后随机抽取两个下标 对应回各自的数字吗??
可不可以吧代码也写出来呢??
我还是初学者啊 其实数组还没有教的 有没有不用数组的方法??

参考技术B #include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)

int a[15] = 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,i,j;
srand(time(NULL));
i = rand()%15;
j = rand()%15;
while(1)

if(i!=j)

printf("%d\n",a[i]*a[j]);
break;

else

j = rand()%15;


return 0;
参考技术C 放到数组里,随机取两个下标

c语言如何计时

c语言如何处理计时的问题啊...
身为一个大一的学生 竟然要编个什么游乐园刷卡系统的程序...
要统计在游乐园的娱乐时间
希望高手指点一下 是不是有什么专门的函数??
最好简单说一下函数的用法 非常非常 相当相当的感谢了啦!!

    C语言中提供了许多库函数来实现计时功能

    下面介绍一些常用的计时函数

    1. time()

    头文件:time.h

    函数原型:time_t time(time_t * timer)

    功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的时此刻所经过的秒数

    用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。

    用difftime函数可以计算两个time_t类型的时间的差值,可以用于计时。用difftime(t2,t1)要比t2-t1更准确,因为C标准中并没有规定time_t的单位一定是秒,而difftime会根据机器进行转换,更可靠。

    说明:C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。

    2. clock()

    头文件:time.h

    函数原型:clock_t clock(void);

    功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。

    说明:可以精确到毫秒,适合一般场合的使用。

    3. timeGetTime()

    头文件:Mmsystem.h  引用库: Winmm.lib

    函数原型:DWORD timeGetTime(VOID);

    功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。

    说明:该函数的时间精度是五毫秒或更大一些,这取决于机器的性能。可用timeBeginPeriod和timeEndPeriod函数提高timeGetTime函数的精度。如果使用了,连续调用timeGetTime函数,一系列返回值的差异由timeBeginPeriod和timeEndPeriod决定。

    4. GetTickCount()

    头文件:windows.h

    函数原型:DWORD WINAPI GetTickCount(void);

    功能:返回自设备启动后的毫秒数(不含系统暂停时间)。

     说明:精确到毫秒。对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求。

    5. QueryPerformanceCounter()、QueryPerformanceFrequency()

    头文件:windows.h

    函数原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);

              BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

    功能:前者获得的是CPU从开机以来执行的时钟周期数。后者用于获得你的机器一秒钟执行多少次,就是你的时钟周期。

    补充:LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定:

    在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。

    说明:这种方法的定时误差不超过1微秒,精度与CPU等机器配置有关,一般认为精度为透微秒级。在Windows平台下进行高精度计时的时候可以考虑这种方法。

    6. gettimeofday()

    Linux C函数。

    头文件:sys/time.h

    函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);

    说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。

    timeval的定义为:

    struct timeval   

      long tv_sec; // 秒数  

      long tv_usec; //微秒数  

      

    可见该函数可用于在linux中获得微秒精度的时间。

    说明:使用这种方式计时,精度可达微秒。经验证,在arm+linux的环境下此函数仍可使用。

参考技术A #include <time.h>

clock_t start,end;
int t;
//开始计时处写:
start = clock();
//结束计时处写:
end = clock();
t=(end - start)/CLOCKS_PER_SEC;
printf("You use %2.1f seconds\n", t);
参考技术B 用::GetTickCount()
DWORD dwTickBegin = ::GetTickCount();
......
DWORD dwTickEnd = ::GetTickCount();
DWORD dwInterval = dwTickEnd - dwTickBegin;

以上是关于用C语言 如何从 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 中 随即选取其中两个 并输出这两个数的乘积?的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程打印如下图所示的n×n方正的副上三角形 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11

怎么用java打印图形三: 1 7 12 16 19 21 2 8 13 17 20 3 9 14 18 4 10 15 5 11 6

用 R 识别随机图中的切口和桥梁

java问题。输出结果是0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 左对齐!最好用多维数组。

C语言数组编程

C语言 指向二维数组的指针