2013-09-22 160 views
-1

想一想1到100之间的数字。 然后,你的程序应该问你最少的#个问题,并根据你的答案确定你的电话号码。 程序的问题格式是NN(<,=,>)? 您可以通过3种方式回答该问题:<表示您的电话号码少于计算机的猜测值,=表示程序猜对了您的号码,>表示您的电话号码大于计算机的猜测值。 允许用户玩这个游戏任意次数。当用户准备退出时,输出平均猜测次数/游戏次数。猜数字游戏

使用单独的功能玩游戏。根据需要重复从main()调用该函数。

所以输出应该是这样的:

猜1和100(包括两端)之间的一个数,并准备好回答几个问题。

是50(<,=,>)? <

是25(<,=,>)? <

是12(<,=,>)? >

是不是18(<,=,>)? >

是21(<,=,>)? <

是19(<,=,>)? >

你的猜测是20

这是一场精彩的比赛!你想再玩一次吗(Y/N)? y

猜测1到100之间的数字(包括两个数字),并准备好回答几个问题。

是50(<,=,>)? >

是75(<,=,>)? <

是62(<,=,>)? >

是68(<,=,>)? >

是71(<,=,>)? =

这是一个很好的游戏!

你想再次玩(y/n)吗? n


这就是我到目前为止。但是,函数playGame()甚至没有执行。它给我的价值50没有任何计算。

​​
+0

请结合使用'fgets'与'strcmp'处理用户输入:两'的scanf( “%C”,...)'和'的scanf(“% s“,...)”是错误的(由于不同的原因)。由于您的原始问题已修复,请接受答案(如果您需要更多帮助,请提出另一个问题)。 – anatolyg

回答

2

您需要使用==来比较两件事,而不是=,它将一个指派给另一个。你在三个地方犯了这个错误,所以即使在你修好round = 0之后,它也会把每个答案都看作<,直到你修正了其他两个。

从你已经完成这个工作的if条件的双括号中,我假设编译器警告你,你错了,并且你添加了额外的括号来禁用警告。如果您不知道自己在做什么,请不要忽略编译器警告。

2

功能琐事()甚至不执行不确定

它是。什么不执行是你的循环里面,因为

while ((round = 0)) 

是一个任务,而不是比较。

+0

感谢您的帮助 –

3
while ((round = 0)){ // This is an assignment. It evaluates to zero and the loop 
         // never executes 

尝试

while ((round == 0)){ // This is a comparison. 
+0

谢谢,修正了这个问题。当我输入第一个符号时,它会自动给出答案,而不会提出进一步的问题。 喜欢这个: '50怎么样? < 25怎么样?你的号码是25 你想再玩一次吗? y/n' –

+0

同样的问题。 if((ans ='<')){'should be'if((ans =='<')){'等等。检查你所有的比较。 – 2013-09-22 09:57:21

+0

我已经做到了。还是一样 –