C语言如何实现找出数组中所有的最大值并输出下标?
谭浩强语言教程第四版中P193页例7.9的答案中的代码不能输出数组中的多个最大值(如果有多个最大值的话)。
下面的写法可以把数组中的最大值及其角标都输出出来。
#include
#include
#include
#include 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就可以自动跳出循环呢?
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
