C、使用随机数并将它们存储在数组中

标签 c arrays loops random

只是尝试生成 60-100 之间的 25 个随机数并将它们存储在数组中。不过需要一些确认。这是它的样子吗?

int main () {

int temp[25], i, sum;


srand( (unsigned) time(NULL) );

for (i=0; i <= 25; i++) {

get_value(i);
sum += temp[25];  //Eventually will be added together to find avg

};


}


int get_value(int temp_random) {
    return((rand()%40)+60);

}

最佳答案

你调用了未定义的行为

  • 使用超出范围的数组下标。
  • 使用未初始化变量的值sum具有自动存储期限,这是不确定的。

sum += temp[25];应该是 sum += temp[i]; ,
并且循环条件应该是 i < 25i < (int)(sizeof(temp)/sizeof(*temp))而不是 i <= 25 .

还有 sum必须初始化。

除了未定义的行为,您的程序存在以下问题:

  • 什么 get_value()返回被丢弃。
  • get_value()未使用且似乎毫无意义的强化 temp_random .
  • 函数在声明之前使用。
  • get_value()不会返回 100因为rand()%40将仅为 0 到 39 之间的数字,包括 0 到 39。

另请注意,属于 for 的 block 后面的分号不需要循环。 (虽然这没有害处)

你的代码应该是这样的:

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

#define GENERATE_NUM 25
#define GENVALUE_MIN 60
#define GENVALUE_MAX 100

int get_value(void);

int main (void) {

    int temp[GENERATE_NUM], i, sum = 0;

    srand( (unsigned) time(NULL) );

    for (i=0; i < GENERATE_NUM; i++) {

        temp[i] = get_value();
        sum += temp[i];  //Eventually will be added together to find avg

    }

    return 0;
}

int get_value(void) {
    return((rand() % (GENVALUE_MAX - GENVALUE_MIN + 1)) + GENVALUE_MIN);

}

关于C、使用随机数并将它们存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952033/

相关文章:

libc 中的字符编码?

c - 如何改变double的字节顺序?

javascript - 在react中更新状态时使用if时出错

javascript - 循环返回 bool 值

c - 为什么/如何在 Segger JTAG ICE 下为微 Controller 平台设置时间?

c - 为什么我的可变参数在 C 中不起作用?

java - 编写 int 数组并返回元素数量的正确方法?

python - 使用变量 NumPy 切片保留维度

postgresql - PL/pgSQL 中的 BREAK 语句

c - C中的for循环只返回数组的第一个值