我有一个包含五个随机数的int数组。我正在检查三个数字是否相符。

int die[5] = {2, 3, 5, 2, 1};
int kind = 0;
int score = 0;
int i = 0;
int x = 0;

    for (i; i <= 4; i++) {
        for (x; x <= 4; x++) {
            if (die[i] == die[x]) {
                kind++;
                score += die[i];
            }
        }
    }

我遇到的问题是它将自己与自身进行比较的第一个案例。这将永远成为现实。如果我给索引加上一个+1,它就会超出界限。
如果我从1开始,而不是从0开始,那么当它转到第二个数字时,一旦它对照第二个数字(本身)检查自己,它将返回相同的结果。

最佳答案

你可以检查一下我是否等于j,只是continue;你的循环。

for(i=0; i<=4; i++){
    // you can set x=i+1 and skip some numbers
    for(x=0; x<=4; x++){
        if(i==x)
            continue;
        if (die[i] == die[x]) {
            kind++;
            score += die[i];
        }
     }
 }

编辑:
有更简单的方法可以做到这一点(检查3个数字是否相等),但如果您只是想跳过一个迭代,请使用continue。

关于c - 检查数组中的5个整数(如果3个相同),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53716229/

10-12 12:29
查看更多