请问这个程序中的srand(124);这个语句中的124有什么作用?
看来你对getchar()这个函数还不理解,
getchar每调用一次只能从键盘缓冲区取得一个字符
#include
#include
int main()
{FILE*fp;
char ch,filename[10];
printf("请输入所用的文件名:");
scanf("%s",filename);//注意,还有个回车符在缓冲区
if((fp=fopen(filename,"w"))==NULL)
{printf("无法打开此文件
");
exit(0);}
ch=getchar();//取得回车符,也可以用fflush(stdin); 清空缓冲区
printf("请输入一个准备存储到磁盘的字符串(以#号结束):");
ch=getchar();//取得字符串的第一个字符
while(ch!='#')
{fputc(ch,fp);
putchar(ch);
ch=getchar();//循环取得字符的所有字符,遇到#退出循环
}
fclose(fp);
putchar('
');
return 0;}
如果把第一个getchar删掉,打开文件就会发现多了个空行,
如果把第三个getchar删掉,第二个getchar取得的是输入的第一个字符,!='#' while无限循环
这个除了对字符数组的输入不用&,其他的都是要的,这是规定,不加&输入也是初学者容易犯的错误
可以把srand()当做一个分解黑箱 随便丢一个数进去 就可以用rand()接收分解出来随机数,但srand()本身也是函数,如果每次放进去的数(自变量)一样的话 ,rand()得到的结果也是相同的(这里的相同不是说rand()等于一个什么数,rand()产生的是一个随机数数列)
这有点像高中学的数学函数,比如f(x)=ax+b(或者等于其他什么的,只是一个抽象) , x=124就好比是你放进去的数124(对srand()来说这个数叫种子),有了x=124,那f(x)就有一个唯一对应的值,
有了srand(124);产生了一个用种子124随机出来的随机数列,每次调用rand()从中取出一个数,就实现了随机的功能
随即函数设置种子 需要一个参数 不一定是124 其他的也可以 你可以查一下 srand()这个函数有哪些版本 分别用接受什么样的参数
C语言rand函数中的问题
这个题很别扭, 由于对10取余数 所以 n的取值范围为0~9, 6个数中出现重复数字的概率为 概率还是相当大的 有个方法可以解决, 建立一个数组 , 将第一个随机数放入数组中, 生成第二个随机数时,先检查数组中是否有相同的数,没有的话,将次数放入数组,有的话,生成下一个随机数...
C语言中srand函数与rand函数产生随机数的问题
这里改一下:printf ("%d\\n", rand()%32767+1);。因为1个整数除以32767的余数肯定是在0~32766之间,加上1便可以保证结果在1~32767之间。
srand(seed)有什么用?
rand()产生随机数时,如果用srand(double)播下种子之后,一旦种子相同,产生的随机数将是相同的。当然很多时候刻意让rand()产生的随机数随机化,用时间作种子 srand(time(0)),这样每次运行程序的时间肯定是不相同的,产生的随机数肯定就不一样了。
一个取随机数的问题!从1,2,3,4中抽取数字!用什么编程语言无所谓!_百度...
{p4=(count-16); p4=p4\/4;} printf("%d ",a[i]);} getch();} srand(seed);根据系统时间初始化随机,不然就会出现每次运行出相同的结果 上面是根据思路设计的C程序,结果可以调出来,程序的运行结果生成一百个随机数,是 16 个间隔以内肯定只有一个4,20个间隔以内又必有两个4 ...
C语言的随机函数问题rand(),srand()\/1--100的随机数取5个
确实是时间太短,srand( (unsigned)time( NULL ) )就是用时间来播种,而这个函数在同一秒内播的种是完全一样的。每一次srand都会重新播种,都会从第一个随机数开始,所以这里的结果是一样的。而播种时切记不要这么写(我这样写吃过很大亏,调了半天才发现),一个程序里播一次种就足够了,所以一般...
sand的用法
include <stdio.h>#include <stdlib.h>#include int main(){int i;srand(time(0));for (i = 0; i < 10; i++)printf("%d\\n", rand());return 0;}这样以当前时间为初始种子,产生10个随机数。时间不同,这十个随机数就不同。如果去掉srand,那么无论何时运行这个程序,都会产生10个相...
c语言问题,
由于程序执行很快,循环在1秒之内就已经完成,time(NULL)每次取到的时间戳都是相同的,srand()自然产生相同的随机序列。下一次调用rand(),总是返回这个序列的第一个数。而如果将srand()放在循环外,那么srand只会在程序中运行一次,生成一个随机种子。接下来循环调用rand()函数,将根据这个随机种子,不...
...srand(time(NULL)); 这一句在C++程序中的作用
这是一种利用时间的流逝播种子的方法,所以要include,目的是使产生的每个随机数产生变化!
C的随机数问题,
这里表示判断 而不是赋值...该做 num=rand(); 还有就是 scanf("%d",&numGue); 要放到while里面 不然你怎么后面的操作???给你改进了程序 include <stdio.h> include <stdlib.h> include int main() \/\/此处void 可以 不要 { int num,numGue,GusTim,done;srand( (unsigned)time...
C语言中的问题..
include"stdlib.h"include"time.h"这两个是包含头文件的一种方式,也可以是#include<stdlib.h> 你写的那种编译的时候是先从你的代码来找头文件 我写的那个是从头文件库里面来寻找头文件 srand(time(00))这个是一个随机数生成函数的一个种子函数(具体怎么叫这个函数我也不是很清楚了)因为在计算机...