C程序输出具有数组最大元素索引的数组最大元素

时间:2018-10-01 03:25:10

标签: c arrays

我正在上我的第一门编程课,其中大部分是自学的。所以,请忍受我。

用户输入数字(例如10、20、100、3、4)后,应该有一个输出要读取 “ list1数组中最大元素的索引是_ list1数组中最大的元素是100“”

到目前为止,这是我的代码。我知道如何获取最大数组的输出,但不知道第一行或如何命名数组。提前非常感谢。

#include<stdio.h>
int main()
{
int i;
float arr[5];

printf("Please enter five numbers:\n ");

for (i = 0; i < 5; ++i)
{

    scanf_s("%f", &arr[i]);
}

for (i = 1; i < 5; ++i)
{
    if (arr[0] < arr[i])
        arr[0] = arr[i];
}
printf("Largest element = %.2f", arr[0]);

return 0;
}

4 个答案:

答案 0 :(得分:0)

您知道,如果知道元素的索引,就可以获取该元素。这意味着,您可以存储“已知最大”元素的索引,也可以使用存储的索引引用最大元素。

int imax = 0;
for (i = 1; i < 5; ++i)
{
    if (arr[imax] < arr[i])
        imax = i;
}
printf("Largest element = %.2f at index %i\n", arr[imax], imax);

答案 1 :(得分:0)

您可以在数组中找到max元素的方法很好。但这会改变原始数组。如果可以,请继续进行,否则,如果您希望保持阵列完好无损,并找到带有索引的max元素,请检查下面附加的代码。如果您打算保持方法相同,则只需添加一个变量,当发现更大的数字时应更新该变量,如下所示:

int max_index;       //declare before
if (arr[0] < arr[i]) {
     max_index  = i;
     arr[0] = arr[i];
}

如果您希望保持数组不变并找出带有索引的max元素,则代码如下:

#include<stdio.h>
int main()
{
int i, max_index;
float arr[5], max;

printf("Please enter five numbers:\n ");

for (i = 0; i < 5; ++i)
{

    scanf("%f", &arr[i]);
}
max  = arr[0];//start off assuming that the 1st element is the max
for (i = 0; i < 5; i++)//now compare it with the rest of the array, updataing the max all along
{
    if (arr[i] > max) {
        max = arr[i];
        max_index = i;
    }
}
printf("Largest element = %.2f at index %d", max, max_index);

return 0;
}

希望这会有所帮助。

答案 2 :(得分:0)

此处的代码将为您提供最大的元素,即数组,但它也更改了元素输入的顺序。您可以使用整数来存储最大元素的索引,而不用将最大元素移到数组的第0位。您可以对程序进行如下修改:

#include<stdio.h>
int main()
{
int i,temp=0;
float arr[5];

printf("Please enter five numbers:\n ");

for (i = 0; i < 5; ++i)
{

    scanf_s("%f", &arr[i]);
}

for (i = 1; i < 5; ++i)
{
    if (arr[temp] < arr[i])
    temp=i;
}
printf("Largest element = %.2f", arr[temp]);
printf("Index = %d",temp);

return 0;
}

希望答案有用。

答案 3 :(得分:0)

enter image description here

使用此代码代替上一个循环