数字为整数,范围为[0,1000],游戏关键点在于怎么样获取一个0到1000的随机数,并且每次随机数都不相同,代码实现如下:
/***********************************************************************
Copyright (c) 2015,wangzp
All rights no reserved.
Name: 《Guess Number》
ID: guess.cpp
问题简述: 猜数字游戏,1000以内。
Date: SEP 10, 2015
***********************************************************************/
#include
#include
#include
#include
typedef struct
{
char name[15];
int guess_num;
int guess_sum;
}USER;
int guess_fun(int n,int seed_num)
{
if (n < seed_num)
{
printf("Too small,Please input a number again:\n");
return 0;
}
else if(n > seed_num)
{
printf("Too large,Please input a number again:\n");
return 0;
}
else
{
printf("Congratulations!You are correct!\n");
return 1;
}
}
int main(void)
{
USER a[100];
int i,n,seed;
char *s;
memset(a,NULL,sizeof(USER)*100);
printf("Please input the number of People:\n");
scanf("%d",&n);
for (i = 0;i < n;i++)
{
srand((unsigned)time(NULL));
seed = rand() % 1000 + 1;
printf("Please input your name.\n");
scanf("%s",a[i].name);
printf("Hello!%s\n",a[i].name);
printf("Please input a number more than 0 and less than 1000.:\n");
scanf("%d",&a[i].guess_num);
while(!guess_fun(a[i].guess_num,seed))
{
a[i].guess_sum++;
scanf("%d",&a[i].guess_num);
}
}
s = a[0].name;
for (i = 1;i < n;i++)
{
if (a[i].guess_sum < a[i - 1].guess_sum)
{
s = a[i].name;
}
}
for (i = 0;i < n;i++)
{
printf("%s spend %d times.\n",a[i].name,a[i].guess_sum);
}
printf("The winner is %s.\n",s);
return 0;
}