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