Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C rand()一直给我相同的数字,并通过变量减少4_C_Random - Fatal编程技术网

C rand()一直给我相同的数字,并通过变量减少4

C rand()一直给我相同的数字,并通过变量减少4,c,random,C,Random,我曾试图为我拥有的一个类做这项工作,但由于某种原因,我无法让rand()工作,我已经测试了几种不同的东西,试图让它工作,但我就是想不出来。我是C新手,所以我可能在这里做错了什么,请帮忙 #include <stdlib.h> #include <stdio.h> #include <time.h> int main() { srand( time(NULL) ); int num, rep, nu, ba, bas; char B[2

我曾试图为我拥有的一个类做这项工作,但由于某种原因,我无法让
rand()
工作,我已经测试了几种不同的东西,试图让它工作,但我就是想不出来。我是C新手,所以我可能在这里做错了什么,请帮忙

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

int main() {
    srand( time(NULL) );
    int num, rep, nu, ba, bas;
    char B[20] = "";
    char C[20] = "";


    printf("Jogo: Converter Bases!\n");
    printf("\n Quantas perguntas desejas responder? (1-6)");
    scanf("%d", &num);
    while (num <= 0 || num > 6) {
        printf("\n Introduz um  valor valido de 1 a 6: ");
        scanf("%d", &num);
    }
    for (int p=0; p<num; p++) {
        nu=rand()% 10;
        bas=rand()% 3;
        ba=rand()% 3;

        printf("\nnu = %i bas = %i ba = %i", &nu, &bas, &ba);

        while (ba = bas) {
            ba = rand()% 3;
        }
        if (bas = 0) {
            char B[20] = "Octal";
        } else if (bas =1) {
            char B[20] = "Decimal";
        } else {
            char B[20] = "Hexadecimal";
        }
        if (ba = 0) {
            char C[20] = "Octal";
        } else if (ba =1) {
            char C[20] = "Decimal";
        } else {
            char C[20] = "Hexadecimal";
        }
        printf("Converte %i de base %c para base %c\n", &nu, &B, &C);
        scanf("%d", &rep);
    }
    return 0;
}
#包括
#包括
#包括
int main(){
srand(时间(空));
int num、rep、nu、ba、bas;
字符B[20]=“”;
字符C[20]=“”;
printf(“Jogo:转换器底座!\n”);
printf(“\n Quantas perguntas desejas responder?(1-6)”);
scanf(“%d”和&num);
while(num 6){
printf(“\n第1和第6页的介绍”;
scanf(“%d”和&num);
}

对于(int p=0;p来说,这是因为你在写:

printf("%d", &x);
你应该什么时候写作

printf("%d", x);
第一种情况是打印变量的内存地址;第二种情况是打印变量的内容


&
scanf
所必需的,因为它需要知道将结果放在哪里的内存地址,而printf只需要值。

这是因为您正在编写:

printf("%d", &x);
你应该什么时候写作

printf("%d", x);
第一种情况是打印变量的内存地址;第二种情况是打印变量的内容


&
scanf
所必需的,因为它需要知道将结果放在哪里的内存地址,但printf只需要值。

请更具体地说明您的输入、预期输出和实际输出。接受值而不是指针。(除非您确实想要打印内存地址。)所以你应该说,例如,
printf(“…”,nu,bas,ba)
,而不是
printf(“…”,&nu,&bas,&ba)
。本质上你并没有打印你认为正在打印的东西。你怎么知道“rand()一直给出相同的数字”?@AlexP这可能是一个答案:)欢迎使用Stack Overflow!请将您的代码简化为问题的一部分。您当前的代码包含许多与您的问题无关的内容-最小样本通常看起来类似于良好的单元测试:仅执行一项任务,输入值指定为可再现性。例如,那些
if
/
else
的除了声明和初始化变量
B
C
(隐藏
main()
B
C
,并且从不使用)之外,什么都不做的操作都应该省略。请对您的输入、预期输出和实际输出更具体一些。使用值而不是指针。(除非你真的想打印内存地址。)所以你应该说,例如,
printf(“…”,nu,bas,ba)
,而不是
printf(“…”,&nu,&bas,&ba)
。从本质上说,你并没有打印你认为正在打印的内容。你怎么知道“rand()一直给出相同的数字?”?@AlexP这可能是一个答案:)欢迎使用Stack Overflow!请将您的代码简化为问题的一部分。您当前的代码包含许多与您的问题无关的内容-最小样本通常看起来类似于良好的单元测试:仅执行一项任务,输入值指定为可再现性。例如,那些
if
/
else
的它除了声明和初始化变量
B
C
(隐藏
main()
B
C
,而且从未使用过)之外,什么都不做应该忽略。这可能是启用警告不足的迹象。编译器提供大量警告,有经验的C程序员尽可能多地启用!这可能是启用警告不足的迹象。编译器提供大量警告,有经验的C程序员尽可能多地启用警告!