从键盘中输入10个不同的整数,找出其中的最大值和最小值,将最大值和最小值位置互换,将互换后的十个数

从键盘中输入10个不同的整数,找出其中的最大值和最小值,将最大值和最小值位置互换,将互换后的十个数输出

1.找出数组中的最大值和最小值索引位置,然后将其交换即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

#include <stdio.h>

// 交换最大、最小值位置
void SwapLimVal(int *src, int len)
{
int max , min, maxlen = 0, minlen = 0;
max = min = src[0]; // 初始化最大、最小值暂时为第一个
for (int i = 1; i < len; i++)
{
if (max < src[i]) // 元素如果比最大数的,则重置最大值,及其索引
{
max = src[i];
maxlen = i;
}
else if (min > src[i])// 元素如果比最小数的,则重置最小值,及其索引
{
min = src[i];
minlen = i;
}
}
if (maxlen == minlen) // 如果所有值一样,不用交换
return;
int tem = src[maxlen]; // 交换最大、最小值
src[maxlen] = src[minlen];
src[minlen] = tem;
}

int main()
{
int a[10];
printf("intput 10 number : "); // 输入10个整数
for (int i = 0; i < 10; i++)
scanf("%d", &a[i]);
SwapLimVal(a, 10);
for (int i = 0; i < 10; i++) // 输出交换结果
printf("%d ", a[i]);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-05
int max,min,m,n;
max=min=a[0];
m=n=0;
for(int i=1;i!=10;++i)
{
if(a[i]>max)
{max=a[i];
m=i;
}
if(a[i]<min)
{min=a[i];
n=i;
}
}
int temp=a[m];
a[m]=a[n];
a[n]=temp;
输出你会吧不写了追问

不行

追答

什么不行,你自己有地方写错了吧

本回答被网友采纳
第2个回答  2014-12-05
冒泡排序追问

是的,不过我想知道它的程序怎么写

相似回答