我正在上我的第一门编程课,其中大部分是自学的。所以,请忍受我。
用户输入数字(例如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;
}
答案 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)