gpt4 book ai didi

c - 使用 C 旋转数组

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

为什么这段代码会出现段错误?

这是使用 for 循环将 stdin 处的给定数组左移(不进行旋转)的代码。

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int *rotatebyone(int *array_input, int len_of_arr);
void rotate(int *array_input, int len_of_arr, int no_of_rota);
int main()
{

int array1[] = { };
int array2[] = { };
int array3[] = { };
int i = 0, j = 0, size_of_arr = 0, no_of_rotations = 0;

for (i = 0; i < 2; i++)
{
scanf("%d", &array1[i]);
//printf("%d", array1[i]);
}

size_of_arr = array1[0];
no_of_rotations = array1[1];

for (i = 0; i < size_of_arr; i++)
{
scanf("%d", &array2[i]);
//printf("%d ", array2[i]);
}
rotate(array2, size_of_arr, no_of_rotations);

return 0;
}
void rotate(int *array_input, int size_of_array, int no_of_rota)
{
int h = 0;
for (h = 0; h < no_of_rota; h++)
{
rotatebyone(array_input, size_of_array);
}
for (h = 0; h < size_of_array; h++)
printf("%d ", array_input[h]);
}

int *rotatebyone(int *array_input1, int len_of_arr)
{
//int array3 = {};
int j = 0, k = 0;
int temp = 0;
temp = array_input1[0];
for (k = 0; k < len_of_arr - 1; k++)
{
array_input1[k] = array_input1[k + 1];
}
array_input1[len_of_arr - 1] = temp;
return array_input1;
}

最佳答案

对于 array2[],您没有提到它的大小。可以是evn 1000或10000。最好使用int * array2并通过malloc分配内存。Reg array1,它可以初始化为 int array1[2],因为我们知道 array1 有两个元素。

关于c - 使用 C 旋转数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42779667/

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