问题:
编写一个猜数字的游程序,任意给一个1—100之间的整数,程序应能迅速的猜出此数是多少,每猜完一次数之后询问是否继续,若回答是则继续做猜数游戏,若回答否,则结束程序运行。
分析:
rand()是“伪随机数”产生函数,注意,是“伪随机数”,而不是随机数,如果每次srand()给的参数值都相同,那么rand()产生的序列就是相同的,time(NULL)返回的是从某年的1月1日0时0分0秒到系统当前时间所经过的秒数,所以如果不是同一秒钟以内多次运行程序的话,time(NULL)的返回值一定是不同的,用这样的方式来产生相对比较随机的序列。在C语言头文件<stdlib.h>中包含标准库函数srand(),设置产生随机数的种子。程序员可以在程序开始时自行设置种子的数值。
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<time.h>
4 main()
5 {
6 int a,b;
7 char c;
8 srand(time(NULL));
9 a=1+(rand()%100);
10 printf("I have a number between 1 and 100.\nCan you guess my number?\nPlease type your first guess.\n");
11 scanf("%d",&b);
12 while(b)
13 {
14 if(b==a)
15 {
16 printf("Excellent! You guessed the number!\nWould you like to play again(y or n)?");
17 scanf(" %c",&c); //%c前面的空格不能少!用以隔离以前输入的回车符
18 switch(c){
19 case 'y':
20 printf("I have a number between 1 and 100.\nCan you guess my number?\nPlease type your first guess.\n");
21 scanf("%d",&b);
22 break;
23 case 'n':
24 break;
25 }
26 }
27
28 while(b<a)
29 {
30 printf("Too low.Try again.");
31 scanf("%d",&b);
32 }
33
34 while(b>a)
35 {
36 printf("Too high.Try again.");
37 scanf("%d",&b);
38 }
39 }
40 }
来源:oschina
链接:https://my.oschina.net/u/4334628/blog/4018086