gpt4 book ai didi

c - 如何在 C 中移动数组?

转载 作者:行者123 更新时间:2023-11-30 21:00:37 24 4
gpt4 key购买 nike

所以我正在尝试做几件事。首先我想根据用户输入移动数组。假设用户输入(按此顺序):1,2,3,4,5。我想将其移动,使其变为 2,3,4,5,1。

正如您所看到的,这个特定的数组是可扩展的,即尺寸不固定。

#include <stdio.h>

void arrayShift(int *a, int intLength);


int main() {

int arr[10] = {0}; //array for input numbers
int array = 0;

printf("Enter the size of the array (MAX): ");
scanf("%d", &array);
printf("Now please enter your %d values: \n", array);
int i;
for (i = 0; i < array; i++) {
scanf("%d", arr+i);
}

return 0;
}

然后我想打印出来然后创建一个函数,将每个数字乘以它之前的数字(移位后):因此使用与之前相同的数字(2,3,4 , 5, 1),我们应该得到 2, 6, 12, 20, 5 的输出。

最佳答案

看来这可以简单地完成。对于所描述的“旋转”,我们只需将第一个元素复制到最后一个元素之后,更改起始索引并将其称为旋转,而不移动所有数据。以及其他简化:

#include <stdio.h>

int main() {
int number_elements;

printf("Enter the size of the array (MAX): ");
(void) scanf("%d", &number_elements); // should test return value in case of bad input

int array[number_elements + 1]; // array for input numbers (over allocate by 1 for rotation)

printf("Now please enter your %d values:\n", number_elements);
for (int i = 0; i < number_elements; i++)
{
(void) scanf("%d", array + i); // ditto re return value
}

array[number_elements] = array[0]; // rotated array now starts at 1

for (int i = 1; i <= number_elements; i++)
{
printf("%d ", array[i]); // print the rotated array
array[i - 1] *= array[i]; // multiply the rotated array
}

putchar('\n');

for (int i = 0; i < number_elements; i++) // multiplied array starts at 0 again
{
printf("%d ", array[i]); // printing the multiplied, rotated array
}

putchar('\n');

return 0;
}

使用

% ./a.out
Enter the size of the array (MAX): 5
Now please enter your 5 values:
1 2 3 4 5
2 3 4 5 1
2 6 12 20 5
%

我不确定您的文本和示例是否一致,因此这是我对您想要的内容的假设,但可以根据需要进行调整。

关于c - 如何在 C 中移动数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40159672/

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