| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1263 人关注过本帖
标题:请大家看看这程序错在哪里了?
只看楼主 加入收藏
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
结帖率:100%
收藏
 问题点数:0 回复次数:19 
请大家看看这程序错在哪里了?
下面是我写的一段石头剪刀布的游戏,但是现在一运行就要我输入两次数字,我也不知道错在哪里,请大家帮我纠正一下吧。如果要程序不结束,继续多玩几局,然后显示出你几胜几拜,这又改怎么修改呢?小弟万分感谢
#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
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:0 
空格太多了
%d两边没有空格就好了
2008-09-12 21:28
hopepark
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-3-23
收藏
得分:0 
谢谢楼上的朋友,但是为什么去掉空格就可以了?
2008-09-12 21:38
GaFu
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2008-9-4
收藏
得分:0 
输入小于等于0或大于等于4是也不行啊
还得在if后加错误处理语句吧
2008-09-12 22:14
GaFu
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2008-9-4
收藏
得分:0 
Player - Computer ) == -1?
应该是Player - Computer ) == 1才是吧
srand ( time ( NULL ) );????这个是什么意思
2008-09-12 22:32
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
GaFu
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2008-9-4
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void main(void)
{
        int Player,Computer;
        printf("Start the game already\n" );
        do
        {
    begin:  printf ( " Plese input a number\n 1Scissors\n 2Rock\n 3Paper\n 4Quit\n");
            scanf ( "%d", &Player);
            if (Player>4||Player<=0)
            {
                printf ("Inputerror!\nPlease input again!\n " );
                goto begin;
            }


            srand (time(NULL));
            Computer=1+rand()%3;
            printf("%d\n",Computer);


            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");
        }while(Player!=4);
}
2008-09-12 22:41
GaFu
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2008-9-4
收藏
得分:0 
加了goto,图简单,按书上讲少用goto的话
用for 最好了
2008-09-12 22:44
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
快速回复:请大家看看这程序错在哪里了?
数据加载中...
 
   



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

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