C语言 “return”前应为标识符或“(”

wfauudbj  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(190)

我正在写一个算法,从1到60随机抽取数字,其中将有6个数字不重复,但是,我有以下错误“预期标识符或'('在'返回'之前”,因为我是新的编程,我找不到问题。如果你能帮助我将不胜感激。

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

int numeroRandomicoNaoRepetido(int sorteioMega[6]) {
    
    int numeroSorteado;
    int x;
    
    for (x = 0; x <= 6; x++) {
        srand(time(NULL));
        numeroSorteado = rand();
    }
    return numeroSorteado;
}

int main()
{
    int sorteioMega[6];
    int x;

    for ( x = 0; x < 6; x++)
    {
        sorteioMega[x] = numeroRandomicoNaoRepetido(sorteioMega);
    }
    printf("Numeros sorteados de 1 a 60 da Mega Sena\n");
    for (x = 0; x < 6; x++)
    {
        if (sorteioMega[x] <= 60) {
            printf("%i ,", sorteioMega[x]); 
        } else {
            numeroRandomicoNaoRepetido(sorteioMega);
            }
        }
        
    }
    return 0;
}

字符串
这是密码
该程序应该从1到60绘制6个数字。

nmpmafwu

nmpmafwu1#

源代码没有正确对齐,在return语句之前有一个额外的},因此该语句出现在全局范围内,这是不正确的。
错误消息令人困惑,这是一个实现质量问题。
还请注意这些备注:

  • srand(time(NULL));应该只被调用一次来初始化伪随机数生成器。如果是这样的话,你很可能会得到6个相同的数字。
  • 函数numeroRandomicoNaoRepetido应该在循环中将数字存储到sorteioMega[x]中,并验证该数字是否已经存在。此外,该函数应将范围作为参数,并绘制范围内的数字,并在每次迭代时减少它。

以下是修改后的版本:

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

int main(void) {
    int sorteioMega[6];
    int max = 60;

    srand(time(NULL));

    for (int x = 0; x < 6; x++) {
        /* get a random number such that 0 <= x < max */
        int numeroSorteado = rand() % max;
        /* adjust random number */
        for (int i = 0; i < x; i++) {
            if (numeroSorteado >= sorteioMega[i])
                numeroSorteado++;
        }
        sorteioMega[x] = numeroSorteado;
        /* reduce range */
        max--;
    }
    printf("Numeros sorteados de 1 a 60 da Mega Sena\n");
    for (int x = 0; x < 6; x++) {
        printf("%i ", sorteioMega[x] + 1); 
    }
    printf("\n"); 
    return 0;
}

字符串

相关问题