gpt4 book ai didi

c - C编程-将一个先前生成的列表从另一个函数改组为输出0的函数

转载 作者:行者123 更新时间:2023-11-30 19:25:16 25 4
gpt4 key购买 nike

我正在尝试从另一个函数generate()中的一个函数shuffle()改组生成的列表,但我似乎无法使其正常工作。我得到的输出是一个全0的数组,除了最后一位输出为10。

这是代码:

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

#define N 10 //Defining a constant N

int * generate(int i); //Declaring function generate(int numList[N], int i);
int * shuffle(int toShuffle[N], int i, int j, int num); //Declaring function shuffle(int i, int j);

int main() { //The Main Method
int * array;
//int * array2;
int i = 0, j = 0, num = 0; //variables
//int temp = 0;

printf("Generating an ascending list of integers:\n\n");
array = generate(i); //Executes function generate(int numList[N], int i)
printf("\n-----------------------------------------------------------------");

printf("\n\nShuffling the previously generated list:\n\n");
array = shuffle(array, i, j, num); //Executes function shuffle(int i, int j, int num)
printf("\n-----------------------------------------------------------------");

return 0; //End of program
}

int * generate(int i){
static int array[N] = {0};
for (i = 1; i <= N; i++) {
array[i] = i;
printf("%d ", array[i]);
}
return array;
}


void swap (int *num1, int *num2){
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}

//A function to shuffle a sorted array
int * shuffle(int array[], int i, int j, int num){
static int toShuffle[N] = {};
toShuffle[N] = array[N];
srand(time(NULL)); //Using the time variable as time is always changing, making the program shuffle randomly every time

num = sizeof(toShuffle) / sizeof(toShuffle[0]);

for (i = num-1; i > 0; i--) {
j = rand() % (i + 1);
swap(&toShuffle[i], &toShuffle[j]);
printf("%d is swapped with %d\n", toShuffle[i], toShuffle[j]); //Displaying the two swapped values
}

printf("\n"); //New line

for (i = 1; i <= N; i++) {
printf("%d ", toShuffle[i]); //Printing the final Shuffled array
}
return toShuffle;
}


这是我得到的输出:

最佳答案

您没有将阵列正确复制到toSuffle。您的声明仅复制一个元素。

此外,您的代码还存在数组索引问题。在C中,索引从0开始。

关于c - C编程-将一个先前生成的列表从另一个函数改组为输出0的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59128022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com