本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使使用第二个主函数时结果正常?本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使字符型的do

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 22:23:40
本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使使用第二个主函数时结果正常?本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使字符型的do

本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使使用第二个主函数时结果正常?本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使字符型的do
本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使使用第二个主函数时结果正常?

本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使字符型的do.while判断语句符合要求(第二个主函数).

运用第一个主函数时的运行结果:

运用第二个主函数时的运行结果:


代码如下:

#include<stdio.h>

#include<time.h>

 

int User_Choice()

{

    int u;

    do

    {

        printf("请出拳(1-石头,2-剪刀,3-布):");

        scanf("%d",&u);

        switch(u)

        {

            case 1:printf("你出的是石头!\n");break;

            case 2:printf("你出的是剪刀!\n");break;

            case 3:printf("你出的是布!\n");break;

            default:printf("你的输入有误,请重新输入!\n");continue;

        }

    }while(u<1||u>3);

    return u;

}

 

int Computer_Choice()

{

    int c;

    srand(time(0));

    c=rand()%3+1;

    switch(c)

    {

        case 1:printf("电脑出的是石头!\n");break;

        case 2:printf("电脑出的是剪刀!\n");break;

        case 3:printf("电脑出的是布!\n");break;

    }

    return c;

}

 

void Compare(int c, int u)

{

    if((u==1 && c==2)||(u==2 && c==3)||(u==3 && c==1))

    printf("你赢了!\n");

    if((c==1 && u==2)||(c==2 && u==3)||(c==3 && u==1))

    printf("电脑赢了!\n");

    if(u==c)

    printf("你和电脑打平了!\n");

}

 

 

void main()

{

    int c,u;

    int flag=1;

    do

    {

     u=User_Choice();

     c=Computer_Choice();

     Compare(c,u);

     printf("还要继续玩吗?(1/0):");

     scanf("%d",&flag);

     if(flag==0) break;

    }while(flag==1);

    printf("谢谢使用!欢迎下次再玩!\n");

}


/*

void main()

{

    int c,u;

    char ans;

    do

    {

     u=User_Choice();

     c=Computer_Choice();

     Compare(c,u);

     printf("还要继续玩吗?(y/n):");

     scanf("%c",&ans);

     if((ans=='n')||(ans=='N')) break;

    }while((ans=='y')||(ans=='Y'));

    printf("谢谢使用!欢迎下次再玩!\n");

}

*/


本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使使用第二个主函数时结果正常?本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使字符型的do

楼主请看我的修改

运行结果:

#include<stdio.h>
#include<time.h>

int User_Choice()
{
\x09int u;
\x09do
\x09{
\x09\x09printf("请出拳(1-石头,2-剪刀,3-布):");
\x09\x09scanf("%d",&u);
\x09\x09switch(u)
\x09\x09{
\x09\x09\x09case 1:printf("你出的是石头!\n");break;
\x09\x09\x09case 2:printf("你出的是剪刀!\n");break;
\x09\x09\x09case 3:printf("你出的是布!\n");break;
\x09\x09\x09default:printf("你的输入有误,请重新输入!\n");continue;
\x09\x09}
\x09}while(u<1||u>3);
\x09return u;
}

int Computer_Choice()
{
\x09int c;
\x09srand(time(0));
\x09c=rand()%3+1;
\x09switch(c)
\x09{
\x09\x09case 1:printf("电脑出的是石头!\n");break;
\x09\x09case 2:printf("电脑出的是剪刀!\n");break;
\x09\x09case 3:printf("电脑出的是布!\n");break;
\x09}
\x09return c;
}

void Compare(int c, int u)
{
\x09if((u==1 && c==2)||(u==2 && c==3)||(u==3 && c==1))
\x09printf("你赢了!\n");
\x09if((c==1 && u==2)||(c==2 && u==3)||(c==3 && u==1))
\x09printf("电脑赢了!\n");
\x09if(u==c)
\x09printf("你和电脑打平了!\n");
}

void main()
{
\x09int c,u;
\x09char ans;
    
\x09do
\x09{
\x09 u=User_Choice();
\x09 c=Computer_Choice();
\x09 Compare(c,u);

\x09 printf("还要继续玩吗?(y/n):");
\x09 scanf("%c",&ans); //用来接受回车符
\x09 scanf("%c",&ans);
\x09// while(ans=='\n') scanf("%c",&ans); //这里主要用来接受回车键

\x09 if((ans=='n')||(ans=='N')) 
           break;
\x09}while((ans=='y')||(ans=='Y'));
\x09printf("谢谢使用!欢迎下次再玩!\n");
}



/*
void main()
{
\x09int c,u;
\x09int flag=1;
\x09do
\x09{
\x09 u=User_Choice();
\x09 c=Computer_Choice();
\x09 Compare(c,u);
\x09 printf("还要继续玩吗?(1/0):");
\x09 scanf("%d",&flag);
\x09 if(flag==0) break;
\x09}while(flag==1);
\x09printf("谢谢使用!欢迎下次再玩!\n");
}


楼主可以看看这个:
C语言中scanf函数输入回车符的问题
       在用c语言编写输入语句的时候常用到scanf函数,初学者在刚用scanf函数输入时,经常会遇到各种各样的输入错误,最重要的是一定要记住scanf函数的输入格式,scanf函数里包含了哪些东西,输入的时候就必须有哪些东西,比如:scanf("%c%c%c"),那么输入的时候就必须连续输入3个字符,中间不能有任何空格逗号或者回车符等分开,而如果是scanf("%c,%c,%c"),那么输入3个字符的时候中间就必须用一个逗号分隔.
       scanf函数最常用的两种输入方式%d整数输入方式,以及%c字符输入方式.
       用%d方式输入整数时,输入一串数字然后按回车符,输入就完成了.而用%c方式输入字符时,就稍微复杂一点.一般来说用%c输入字符时,当输完以后,都习惯按一下回车,这时回车符就成了一个问题.

       【例1】:
       scanf("%c",&a); /*此时输入一个字符,并按下回车,那么变量a将会正确接收输入的字符*/
       scanf("%c",&b); /*但是变量b将会接收到回车符,其值为10,或者说ASCII码为10*/

       【例2】:
        scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
        scanf("%d",&y); /*变量y不会接收到回车符,需要用户继续输入数字,并回车,正常接收到整数*/

       【例3】:
      scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
        scanf("%c",&a); /*但是变量a将会接收到回车符,其值为10,或者说ASCII码为10*/
       【例4】:
        scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
        scanf("%d",&y); /*若此时输入的是字母而不是数字,比如输入“s”并回车*/
                                  /*那么变量y将不会接收到任何字符或数字,其值保持原样,不发生任何改变*/
        scanf("%c",&a); /*此时变量a将接收到上一步输入的字母*/
                                  /*即变量a中存储的字符将是"s",而不是回车符*/
       【结论】:
        当输入完整数或字符时,后面还需要输入字符时,为了避免输入的字符变成回车符,可以在输入字符前多加一条scanf语句来吃掉前面的回车符.此时用来吃掉回车符的scanf输入可以用%c方式,也可以用%d方式.当用%c方式来吃掉回车符时,回车符被读进了char类型变量中,当用%d方式来吃掉回车符时,回车符并没有被送进int类型变量中,而是在异常的字符输入后,被自动清除了.
        
  */

本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使使用第二个主函数时结果正常?本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使字符型的do 下列数学式子用C语言运行结果是多少?用Win-Tc运行出结果: 用C语言排列字母表,要求运行结构如图 一个C语言求解二元一次方程根,以下是我在VC6.0中写的代码,编译通过,但是运行时就出问题了,例如输入a=2,b=2,c=4时,运行结果就是“方程有两个解,x1=..,x2=...” 方程只有一个解x=..,一看就知道这 用C语言绘制图形大一上简单的学了一下C语言(就是当做入门来学的),下学期学C++,感觉C++比C好就没有在用C.今天看见了一个游戏,使用TURBO C写的,我以前用MFC写过,但看到那个程序后感到很 C语言编程:1.100以内任意数的阶乘.2 .表达式求值如题,第一个就不解释了.第二个就是运行后,输入一个表达式自动求值(+,-,*,/ 自动区分先后算法),一定要附带基本思路,本人对C很不懂,所以``` c 语言这两题的运行结果等于零1是什么原因呢 用C语言编写一段程序,求两个集合的笛卡尔乘积.并对运行结果截图.一定要对运行结果截图啊, 求用c语言写一个字符串输入的计算器.如1+2*3=7.输入的均为整数,不需要有括号什么的,结果要有小数.把结果存放在一个字符数字里. 求用C语言编写的能运行计算四则运算结果的程序,要求输入算式按回车得出结果我想可以输入如:99+9*7-9/34让后计算出答案的 谁知道这是什么语言的程序?如图,这程序是什么语言写的,求教这是一个游戏 但是不知道该用什么打开程序本体 程序本身只有一个文件 无任何dll或其他文件 C语言求助:if(x/=0)是在判断什么?看到别人写的DSP的程序里面有这样一个判断:if(x/=0){x--;}.编译运行都没问题.但不知道究竟是在判断什么条件.于是用VC6.0写了同样的代码,运行就崩溃,提示除数 c语言直线插补程序,高手请进采纳后追加20分我用c语言写了一个直线插补程序,用来模拟数控机床的直线插补运动,但是在c-free软件中总是无法运行,提示头文件错误,那位高手帮忙解决一下,(在 用C语言写一个计算A+B的简单程序如题 用位操作写一个判断正负数的C语言代码如题, 我用C语言编写了一个画三角形的程序 顶点坐标全部确定好了 运行的时候直接出了一个三角形 然而我希...我用C语言编写了一个画三角形的程序 顶点坐标全部确定好了 运行的时候直接出了一 二级C语言机试我做了填空题和改错题,都运行出结果了,并显示没错误 为什么还是不及格啊? C语言 阅读程序写结果这道题的结果是什么