谭浩强语言教程第四版中P193页例7.9的答案中的代码不能输出数组中的多个最大值(如果有多个最大值的话)。
下面的写法可以把数组中的最大值及其角标都输出出来。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
int max(int x, int y)
{
return x > y ? x : y;
}
int main()
{
int arr[10] = {0};
int index = 0;//存放两数比较最大值
int zhong = 0;//存放最大值
for (int i = 0; i < 10; i++)
{
scanf("%d", &arr[0] + i);
}
for (int i = 0; i < 9; i++)
{
index = max(arr[i], arr[i + 1]);
if (index > zhong)
zhong = index;
}
for (int i = 0; i < 10; i++)
if (zhong == arr[i])
printf("最大值是%d,下标是%d\\n", zhong, i);
return 0;
}
另外延伸了一种写法,scanf输入一组数,输出最大的是第几个,是多少。
//输入多个数字,输出最大的,第几个,但是需要输入数字的最后打上 CTRL+Z EOF符号!
int main()
{
int mid = 0;
int index = 0;
int index1 = 0;
int index2 = 0;
int max = 0;
do
{
index = scanf("%d", &mid);
index1++;
if (mid > max)
{
max = mid;
index2 = index1;
}
} while (index);
printf("最大值是%d,第%d个数", max, index2);
return 0;
但是有没有办法不输入EOF就可以自动跳出循环呢?