c语言产生随机数的问题:猜数游戏

 #include 
 #include 
 #include 
 
int main (void)
{
    int a,b,count;
    srand(time(0));
    a=(rand()%100+1);//从1到100的随机数,如果不加1就是从0开始到99.
    //对一个数求余,得到的数就是从0到这个数。
    count=0;
    while(1)
    {
       printf("想好一个数哦:\n");
       scanf("%d",&b);
       count++; 
   // printf("输入的整数是:%d\n",b);
    //printf("输入的随机数是:%d",a);
       if(b>a)
          printf("大了\n");
       else if(b<a)
          printf("小了\n");
       else
       {
          printf("你用了%d次机会终于答对了",count);
          break;
       }
     }
     return 0;
}

知识点1:

rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL))。此函数,在每次开始游戏后调用一次即可。只需要调用一次即可,有第一个的种子就可以了。而没调用一次rand()函数,就会产生一个随机数。

知识点2:

a=(rand()%100+1);//从1到100的随机数,如果不加1就是从0开始到99.
对一个数求余,得到的数就是从0到(这个数-1)。

知识点3

break函数可以在循环或者是在条件语句中都可以用,直接跳出循环,或者条件语句。
要学会灵活运用break和continue,当程序中可以结束循环了的时候就要使用break和continue跳出循环。
打个比喻:
一群人要唱歌考试,如果是在第三个后面加上一个break,则后面的第四第五个人全部不唱了。如果是加上continued那么就是第三个人不唱了,但是第四第五个人继续唱。

第二种写法稍微复杂一些:

#include 
 #include 
 //#include 
 
int main (void)
{
	int number,n;
	int inp;
	int cnt=0;
	scanf("%d %d",&number,&n);
	while(1)
	{
		scanf("%d",&inp);
		cnt++;
		if (inp<0){
			printf("Game Over\n");
			break;
		}else if(inp>number){
			printf("大了\n");
		}else if(inp<number){
			printf("小了\n"); 
		}else{
			if(cnt==1){
				printf("Bingo");
				break;
			}else if(cnt<=3){
				printf("Lucky You");
				break;
			}else if(cnt==n){
				printf("Good Guess");
				break;
			}else{
				if(cnt>n) {
					printf("超过4次机会了Game Over");
					break;	
				}

			}		
		}
	}
	return 0;
}

你可能感兴趣的:(c语言学习)