我想从数组复制到字符

I want to copy from array to char

本文关键字:字符 复制 数组      更新时间:2023-10-16

大家好,如果我的英语不是那么好,对不起。

我正在尝试制作一个有 5 个玩家的程序,每个玩家有 5 个随机整数每个球员的总和.然后我想检查谁的积分最多,并用消息打印他的名字.

我正在尝试做:

for (int i=0;i<5;i++)
{
    if (p[i].sum>p[i+1].sum)
    {
       strcpy(p[i].name,winner);
    }
    else strcpy(p[i+1].name, winner);
}
cout << "The winner is : " << winner << endl;

但是获胜者值不会改变。这是屏幕截图 http://prntscr.com/abxqd3

提前谢谢你。

"winner"的值不会明显改变,因为您没有在任何地方修改其值,并且代码查找最大元素的逻辑不正确。如果您正在尝试找到最大值并将名称复制到 winner 变量,您应该尝试此操作

int max = 0;     // index of the largest sum, initially assumed to be 0
for (int i=1;i<5;i++)
{
 if (p[i].sum>p[max].sum)
 {
  max = i;
 }
}
strcpy(winner, p[max].name);
cout << "The winner is : " << winner << endl;

我认为首先你应该修复你的逻辑错误。你只需比较玩家 i 和下一个玩家的总和。这没有意义。

例如,假设您有这些总分 8,3,1,4,6。 因此,在第一次迭代中,您将 winner 设置为玩家 0,其值为 8,但在下一次迭代中设置为 3,依此类推。 在上次迭代中,您获得了得分为 6 的玩家的名称,但您应该拥有得分为 8 的玩家。

因此,您始终拥有在数组的最后一个元素之间得分较大的玩家名称作为获胜者。

您应该定义一个具有播放器类型的对象,用于存储最大总和(如 pmax)的播放器,并将 if 条件更改为波纹管

if (p[i].sum>pmax.sum)
{
    pmax.name=p[i].name;
    pmax.sum=p[i].sum;
}
cout << "The winner is : " << pmax.name << endl;