计算机程序设计基础(谌卫军)第03章_循环控制.pptVIP

计算机程序设计基础(谌卫军)第03章_循环控制.ppt

  1. 1、本文档共108页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
rand() 12384 seed 17 17 有何问题? #include stdio.h #include stdlib.h int main( ) { int i, x; for(i = 0; i 10; i++) { x = rand( ); printf(%d\n, x); } } 随机数序列重复 41 18467 6334 26500 19169 15724 11478 29358 26962 24464 第一次 41 18467 6334 26500 19169 15724 11478 29358 26962 24464 第二次 41 18467 6334 26500 19169 15724 11478 29358 26962 24464 第三次 如何改进? 1、需要修改seed的初始值 2、通过srand()函数来实现, void srand(int seed); 3、可以用当前时间来作为初始值 srand((unsigned)time(NULL)); #include stdio.h #include stdlib.h #include time.h void main( ) { int i, x; srand((unsigned)time( NULL )); for(i = 0; i 10; i++) { x = rand( ); printf(%d\n, x); } } 当前时间作为种子 28946 24006 12469 7994 18018 16047 31399 19861 8191 26646 第一次 29393 21977 2260 27868 22091 29721 31821 12040 9286 3561 第二次 31679 9222 22572 29436 565 25920 15080 27332 296 25290 第三次 如何修改取值范围? 1、rand生成的随机数位于[0,RAND_MAX],如何生成任意范围[a, b]内的随机数? 2、d = rand()/(RAND_MAX+1); a + d * (b-a+1); 如何随机生成一个数字不重复的四位数? 1、从10个数字中选4个构成排列; 2、逐一生成每一位,且与前面的各位不同; 3、生成一个四位的随机数,再过滤有重复者; 4、...... 2. 计算A和B 已知目标数和猜测数,如何计算相应的A和B的数量? 假设目标数为T1 T2 T3 T4, 猜测数为G1 G2 G3 G4; 一种方法:Ti和Gi相比,相同则A加1;不相同则把Ti和剩余三个猜测位相比,若有相同者,则B加1。 3. 总共有十次机会 如何实现? 累加编程模式! 随机产生一个数字不重复的四位数,将它拆分为四位数字T1 T2 T3 T4; 让用户输入一个数字不重复的四位数,将它拆分为四位数字G1 G2 G3 G4; 计算相应的A和B的数量; 如果结果为4A0B,则成功;否则,将猜测的次数加1,如果不超过10,则转第2步;否则猜测失败。 算法思路 #include stdio.h #include stdlib.h #include time.h void main() { int Target, T1, T2, T3, T4; int Guess, G1, G2, G3, G4; int nA, nB, NumGuess; double d; // 随机产生一个数字不重复的四位数 srand((unsigned)time( NULL )); while(1) { d = rand() / (RAND_MAX+1); Target = 1000 + (d * 9000); //1000~9999 // 将它拆分为四位数字 T1 = Target / 1000; T2 = (Target / 100) % 10; T3 = (Target / 10) % 10; T4 = Target % 10; if((T1 != T2) (T1 != T3) (T1 != T4) (T2 != T3) (T2 != T4) (T3 != T4)) break; } NumGuess = 0; while(1)

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档