【问题标题】:How can I reverse the output of my array when given an input of random numbers generated by the computer?当给定计算机生成的随机数输入时,如何反转数组的输出?
【发布时间】:2020-02-23 09:21:53
【问题描述】:

我目前遇到的问题是我的代码创建了 40 个数字并将其打印到一个数组中。当试图向后打印这组代码时,它只会在我需要它以相反的顺序打印整个第一个数组时打印常规/普通数组中的最终数字。谢谢您的帮助。我正在使用 C++。

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

int main(void) 
{ 
    int i;
    int lower = 0, upper = 100; //Random number between 1 and 100 is generated
    int rand_num; 
    int num[40];

    srand(time(0)); 

    printf("Your array is shown:\n");
    for(i = 0; i < 40; i++)
    {
        rand_num = (rand() % (upper - lower + 1)) + lower;
        num[rand_num] = rand_num;

        printf("%d ",num[rand_num]);

    }


    printf("\nYour array backwards is:\n");
    for(i = 39; i >= 0; i--)
    {
        printf("%d ", num[rand_num]);

    }


    return 0; 
} 

【问题讨论】:

  • 你用的是c++吗?
  • 是的,很抱歉没有早点说明
  • 仔细思考num[rand_num] 的含义。我很确定它的所有出现都不是你想要的。
  • 如果输入是真正随机的,怎么会有人知道你是否没有反转数组?
  • num[rand_num] 好像有点不对劲。

标签: c++ arrays random reverse


【解决方案1】:

问题在于您使用了num[rand_num]。这意味着您对数组的访问是由一个随机数控制的,而不是i

解决方案很简单:将num[rand_num] 的每个实例替换为num[i]

【讨论】:

    【解决方案2】:

    在您的第一个 for 循环中,将 num[rand_num] = rand_num 更改为 num[i] = rand_num,将 printf("%d ", num[rand_num]) 更改为 printf("%d", num[i])

    在您的第二个for 循环中,将printf("%d ", num[rand_num]) 更改为printf("%d", num[i])

    如您所见,问题出在您的 for 循环中。您没有使用迭代变量 i 来索引 num 数组,而是始终使用随机数 rand_num 对其进行索引,特别是在最后一个 for 循环中它没有t 改变,所以它在每次循环迭代中都显示num[rand_num]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 2021-04-12
      • 2023-03-26
      • 1970-01-01
      • 2021-09-03
      • 2020-03-05
      • 2011-09-18
      相关资源
      最近更新 更多