【发布时间】:2021-11-07 00:03:27
【问题描述】:
我正在编写一些涉及数组操作的 c 代码。 我正在努力实现以下目标:
- 使用给定的输入数组,创建一个仅包含前 10 个元素的 new_array
- 在 new_array 中找到 index_of_largest 元素
- 将 index_of_largest 左侧的 2 个元素和右侧的 3 个元素全部放入一个 new_array2 中
For example if array[15] = {12,25,99,56,44,79,62,11,10,2,1,3,4,5,6}
then new_array[10] = {12,25,99,56,44,79,62,11,10,2}
then new_array2 [6]={12,25,99,56,44,79}
这是我当前的代码:
#include<stdio.h>
int main()
{
int a[15]={12,25,99,56,44,79,62,11,10,2,1,3,4,5,6}, arr1[10], arr2[5], i, pos=10, k1 = 0, k2 = 0, max_index, max;
for(i = 0; i < 10; i++)
{
if(i < pos)
arr1[k1++] = a[i]; //seperate array
else
arr2[k2++] = a[i];
}
printf("\nElements of First Array -> arr1[%d]\n", k1);
for(i = 0; i < k1; i++)
printf("%d\n", arr1[i]);
max = arr1[0]; //find index of max element
for (i = 0; i < 10; i++)
{
if (arr1[i] > max) {
max = arr1[i];
max_index = i;
}
}
printf("Largest element = %d at index %d", max, max_index);
return 0;
}
输出:
Elements of First Array -> arr1[10]
12
25
99
56
44
79
62
11
10
2
Largest element = 99 at index 2
我能够分离初始数组 (1) 能够找到最大元素的索引 (2)。我不知道如何解决(3)从我目前的观点向前发展。 最大的索引将始终位于数组中的某个位置,以便可以将元素放在它周围。 (例如最大值不会是第一个或最后一个索引) 我还认为我应该添加一个条件,以便如果有多个最大值,我们取第一个出现的最大值。 将来我会将所有这些都包装在一个函数调用中,但对于目前混乱的代码感到抱歉。
【问题讨论】:
-
答案到达后更改代码/问题是糟糕的礼仪。最好回滚。
-
您将
arr2定义为int[5],但您打算在其中存储6 个元素。 -
@Stef 对不起,我不明白,如果我的 a[15] 有元素并且 arr1[10] 不会 arr2 只剩下 5 个元素吗?除非我对 c 的从 0 开始的索引感到困惑。我不需要 arr2 任何东西(只是用来存储垃圾元素),但我想了解您提出的观点。
-
@AshtonStark 好吧,您的帖子首先解释说您要复制新数组中的前 10 个项目,然后从新数组到第二个新数组。我假设这两个新数组是
arr1和arr2。如果你真的只是定义arr2来存储垃圾元素,那么你根本不需要arr2;忽略垃圾元素。 -
实际上,你定义
pos=10,然后有一个带有条件i<10的循环,然后在循环内部if (i < pos)。 “如果”的条件显然总是为真,所以你根本不需要这个“如果”。
标签: arrays c sorting indexing element