【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台“购物街”节目里面猜价格那样。

如果用户猜对了,那么这个数字才会变化……请能否很容易实现?不行的话就算了。
展开
 我来答
renjianke
2010-05-12 · TA获得超过2932个赞
知道小有建树答主
回答量:580
采纳率:0%
帮助的人:655万
展开全部
已经改正,如下:
#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;

}
百度网友35e80f595
2010-05-12 · TA获得超过116个赞
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:70.8万
展开全部
/*编译工具: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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
903896940
2010-05-12 · TA获得超过240个赞
知道小有建树答主
回答量:256
采纳率:0%
帮助的人:324万
展开全部
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();

}
嵌套循环不就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanlei1360
2010-05-12
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
不懂程序 无能为力~@~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式