C 我不知道';I don’我不知道如何在打印结果句子时使0,1,2的随机数以石头、纸张和锡纸的形式出现

C 我不知道';I don’我不知道如何在打印结果句子时使0,1,2的随机数以石头、纸张和锡纸的形式出现,c,C,我刚开始学习编程,所以我还不够好。 如果有人能帮助我,我将不胜感激:) 问题:应使用两个随机值来玩总共10次的剪刀布游戏,并产生以下结果。 下面是示例结果。 第1场比赛是电脑赢的 (计算机=SISSOR,播放器=纸张) 第二场比赛由该运动员获胜 (电脑=纸张,播放器=电脑) 第三场比赛是平局 (计算机=sissors,玩家=sissors) 第十场比赛~ 这是我写的代码 #包括 #包括 #包括 内部主(空) { //0=岩石,1=纸张,2=锡索 //c=计算机,p=播放器 srand(时间(空

我刚开始学习编程,所以我还不够好。 如果有人能帮助我,我将不胜感激:)

问题:应使用两个随机值来玩总共10次的剪刀布游戏,并产生以下结果。

下面是示例结果。 第1场比赛是电脑赢的 (计算机=SISSOR,播放器=纸张)

第二场比赛由该运动员获胜 (电脑=纸张,播放器=电脑)

第三场比赛是平局 (计算机=sissors,玩家=sissors)

第十场比赛~

这是我写的代码
#包括
#包括
#包括
内部主(空)
{
//0=岩石,1=纸张,2=锡索
//c=计算机,p=播放器
srand(时间(空));

对于(inti=0;i您可以尝试类似的方法,我认为这是一个优雅的解决方案

static const int outcome[3][3] =
{
    { 0, 2, 1 },
    { 1, 0, 2 },
    { 2, 1, 0 }
};

static const char * signs[3] =
{
    "rock",
    "paper",
    "scissors"
};

static const char * texts[3] =
{
    "was a draw",
    "was won by the player",
    "was won by the computer"
};

int main()
{
    //<..>

    printf("The %i th game %s (computer = %s, player = %s)\n", i+1, texts[outcome[p][c]], signs[c], signs[p]);

    //<..>
}
静态常量int结果[3][3]=
{
{ 0, 2, 1 },
{ 1, 0, 2 },
{ 2, 1, 0 }
};
静态常量字符*符号[3]=
{
“摇滚”,
“文件”,
“剪刀”
};
静态常量字符*文本[3]=
{
“是平局”,
“被玩家赢了”,
“被电脑赢了”
};
int main()
{
//
printf(“第%i个游戏%s(计算机=%s,玩家=%s)\n”、i+1、文本[结果[p][c]、符号[c]、符号[p]);
//
}

您可以将三种可能的结果存储为单个
2d字符数组
或@dratenik在评论中提到的
const char*
。我使用
2d数组
只是为了简化方法:

char r[3][7]={"Rock","Paper","Scissor"};
至于循环的
,我将您最后的else if语句更改为如下内容:

else if((c==0 && p==2)||(c==1 && p==0)||(c==2 && p==1))
而不是你所做的:

else if ((c == 0 && p == 2) || (c == 1 && p == 0) || (c == 2) && (p == 1));
请注意,在这里,我们处理的是类似于
A或B或C或..
的情况,其中每个事件
A
包括进一步的
A和B和C以及..
。在您的情况下,您所做的是指类似
A或B或C和D的事情。了解如何使用
C
中的括号,以及关于

最后,上面
printf
语句
部分(不符合您指定的格式,但您可以编辑):


您知道如何使用
if
和变量,您将如何结合这些技能将正确的内容添加到变量中?字符串变量的好类型应该是类似
const char*
。或者您知道可以使用printf打印行的一部分吗?只是不要以
\n
结束格式。这可以再次组合使用
if
s来实现您的目标。
else if ((c == 0 && p == 2) || (c == 1 && p == 0) || (c == 2) && (p == 1));
printf("Computer: %s\nPlayer: %s\nComputer wins\n",r[c],r[p]);