【c语言】编写一个猜数字游戏

在下是初学者,老师布置了一道题目感觉有难度,写出的程序也一直出现问题。。

题目如下:能随机产生一个数,让用户在有限次数下进行猜测,猜中给出一些鼓励信息,并询问是否继续猜,可扩充增加其它诸如:猜奇、隅数等功能。

现在问题是,我写的程序没法进行多次猜,而且填上正确答案,也会提示数字偏小……一直不明白到底是哪里错了。

求高手解释……最好在给出错误之处时,能附上范本。。。不是我偷懒,只是想参考一下。
#include<stdio.h>
#include<math.h>
double circle(int n)
{
int i;
if(i>n)
printf("your number is larger.\n");
if(i<n)
printf("your number is smaller.\n");
if(i=n)
printf("congratulations!you got it!");
}

void main()
{
int i,n;
srand((unsigned)time(NULL));
i=rand()/100;
printf("%d\n",i);
printf("This is a small game,what you should do is just guess a intange number.\n");
printf("Now,please guess the number!\n");

while(i!=n)
{ scanf("%d",n);
circle(n);
}

getch();

}
给出满意回答的另外给100分。

请不要去网上复制。。我已经看过很多了。
呃, renjianke,你写的我大致理解了。编译可以通过,但是与题意不大符合。

我希望在猜错数字以后,这个数字不会改变(是否要设置一个static变量?),用户在受到提示(输入的数字偏大还是偏小)以后,能够重新输入数字,以便能更加接近答案。有点像央视2台“购物街”节目里面猜价格那样。

如果用户猜对了,那么这个数字才会变化……请能否很容易实现?不行的话就算了。

已经改正,如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void circle(int i)
{
int n ;
printf("请输入您所猜的数字(0-100) \n");
scanf("%d",&n);
if(i<n)
{
printf("the number is larger,input agine.\n");
circle(i);
}

if(i>n)
{
printf("the number is smaller.input agine \n");
circle(i);
}

if(i==n)//?不是
printf("the number is %d so congratulations!you got it!",i);

}

int main()
{

int flag =1;

printf("This is a small game,what you should do is just guess a intange number.\n");
printf("Now,please guess the number!\n");
srand((unsigned)time(NULL));
while(flag)
{
int i=rand()%100;//?使用 % 而不是 / ,产生的数字在0-100之间,放在循环体内,每次循环都产生一个随机数
circle(i);

printf("\n继续玩请输入 1,退出请输入 0");
scanf("%d",&flag);
}

getchar();
return 0;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-12
/*编译工具:C-Free 4.0 已经编译通过*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void produce(int *,int* ); //电脑产生随机数和随机产生一个猜的次数
int judge(int ,int ); //判断猜对与否 猜对返回0 猜错返回正数或者负数

int main ()
{
int result,guess,count,a=0,b=100,n;
produce(&result,&count); //首先由电脑产生一个随机数并得到猜的次数
n=count;
while(count)
{
printf("You still have %d chances left!\n",count-1);
printf("Pease input your guess:");
scanf("%d",&guess);
if(judge(result,guess)>0)
{
a=guess; //太小了 更新猜数范围的下限
printf("太小了!\n新的范围:%d-%d\n",a,b);
}
else if(judge(result,guess)<0)
{
b=guess; //太大了 更新猜数范围的上限
printf("太大了!\n新的范围:%d-%d\n",a,b);
}
else
break;
count--;
}
if(count>0)
printf("Congratulation! your guess is right!\n");
else
printf("天啊%d次你都猜错了。杯具。。。",n);
return 0;
}
void produce(int *result,int* count)
{
srand(time(NULL));
*result=rand()%100; //产生0-100之间的数
*count=rand()%10+3; //产生3-12之间的数来代表你猜数的机会
}
int judge(int result,int guess)
{
return (result-guess);
}
第2个回答  2010-05-12
scanf("%d",n);
又是这里的问题 &
你要不加这个符号,系统给赋的值肯定是一个很小的负数,所以是这种结果了

你要进行多次猜的话
void main()
{
int i,n;
int j=0;
srand((unsigned)time(NULL));

printf("%d\n",i);
printf("This is a small game,what you should do is just guess a intange number.\n");
printf("Now,please guess the number!\n");
while(j<100)
{
i=rand()%100;
while(i!=n)
{ scanf("%d",&n);
circle(n);
}
j++;
}
getch();

}
嵌套循环不就可以了
第3个回答  2010-05-12
不懂程序 无能为力~@~

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网