| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1263 人关注过本帖
标题:请大家看看这程序错在哪里了?
取消只看楼主 加入收藏
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
结帖率:100%
收藏
 问题点数:0 回复次数:8 
请大家看看这程序错在哪里了?
下面是我写的一段石头剪刀布的游戏,但是现在一运行就要我输入两次数字,我也不知道错在哪里,请大家帮我纠正一下吧。如果要程序不结束,继续多玩几局,然后显示出你几胜几拜,这又改怎么修改呢?小弟万分感谢
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
    int Player , Computer;
    printf ( " Start the game already\n " );
    printf ( " Plese input a number\n 1 Scissors\n 2 Rock\n 3 Paper\n " );
    scanf ( " %d ", &Player);
    if ( Player >= 4 || Player <= 0 )
          printf ( " Input error!\nPlease input again!\n " );
    else
        srand ( time ( NULL ) );
    Computer = 1 + rand() % 3;
if ( Computer == Player ) printf ( "Ping Ju!\n" ); else
if ( ( Player - Computer ) == -1 ) printf ( "YOU WIN!\n" ); else
if ( Player == 1 && Computer == 3) printf ( "YOU WIN!\n" ); else
printf("YOU LOSE!\n");

}

[[it] 本帖最后由 hopepark 于 2008-9-12 20:59 编辑 [/it]]
搜索更多相关主题的帖子: c语言 
2008-09-12 20:52
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
谢谢楼上的朋友,但是为什么去掉空格就可以了?
2008-09-12 21:38
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
回楼上的朋友,我那句的意思是如果输入的数满足>=4或者<=0就执行
printf ( " Input error!\nPlease input again!\n " );
上面那个确实有BUG,现在改进了一下
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
    int Player , Computer;
    printf ( "Start the game already\n" );
    printf ( "Plese input a number\n 1 Scissors\n 2 Rock\n 3 Paper\n" );
    scanf ( "%d", &Player);
    if ( Player >= 4 || Player <= 0 )
          printf ( "Input error!\nPlease input again!\n" );
    else
    {  srand ( time ( NULL ) );
    Computer = 1 + rand() % 3;
if ( Computer == Player ) printf ( "Ping Ju!\n" );
else if ( ( Player - Computer ) == -1 ) printf ( "YOU WIN!\n" );
else if ( Player == 1 && Computer == 3) printf ( "YOU WIN!\n" );
else
printf ( "YOU LOSE!\n" );
    }
}
2008-09-12 22:34
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
[bo][un]GaFu[/un] 在 2008-9-12 22:32 的发言:[/bo]

Player - Computer ) == -1?
应该是Player - Computer ) == 1才是吧
srand ( time ( NULL ) );????这个是什么意思

srand ( time ( NULL ) );是为了不让每次生成的随机数是同一数
2008-09-13 11:01
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
回复 7# GaFu 的帖子
谢谢了,学到了很多
2008-09-13 11:03
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
如果要加入显示电脑出了什么和你自己出了什么该怎么修改呢?如果再加上你现在几胜几败又该如何修改呢?
2008-09-13 11:04
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
[bo][un]kscus[/un] 在 2008-9-13 15:08 的发言:[/bo]


那个其实你的程序里面已经有了,可能你没注意,就是 printf("%d\n",Computer)
如果想明确一点的话,可以写为 printf("Computer's key is:%d\n",Computer),然后在前面 scanf ( "%d", &Player);语句之后加上想要的p ...

我确实这样写了,但是我的意思是电脑这样写出来Computer's key is:石头 或者剪刀什么的,而我写的这个也仅仅是1,2,3,
2008-09-14 11:05
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
[bo][un]kscus[/un] 在 2008-9-13 14:58 的发言:[/bo]

#include
#include
#include

int main(void)
{
        int Player,Computer,ping,win,lose;
        int single=0;
            ping=0;
            win=0;
            lose=0;
        goto start1; ...

谢谢指教,我还是菜鸟蛋
2008-09-14 11:11
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
[bo][un]kscus[/un] 在 2008-9-14 13:16 的发言:[/bo]


这个也很简单,加几句if else   printf;语句就可以了,代码如下:
#include
#include
#include

int main(void)
{
        int Player,Computer,ping,win,lose;
        int single=0;
            ping= ...

srand(time(null))是利用时间设置随机种子,只有一秒以后你运行一次这程序,生成的随机数就会不一样,如果不用这个很有可能一直生成的随机数都是同一个;Computer=1+rand()%3;是为了让生成的随机数+1.如果Computer= rand()%3 就是生成0,1,2这三个数,为了让选择时候1,2,3这样选择,所以加了一个1.这样Computer=1+rand()%3就可以生成1,2,3这三个数
2008-09-15 10:37
快速回复:请大家看看这程序错在哪里了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012809 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved