交换最大值和最小值
下面程序的功能是从键盘输入10个整数,用函数编程实现计算其最大值和最小值,并互换它们所在数组中的位置。程序运行结果如下:
Input n(n<=10):10↙
Input 10 Numbers:1 4 3 0 –2 6 7 2 9 -1 ↙
Exchange results: 1 4 3 0 9 6 7 2 -2 -1
程序:
#include <stdio.h>
void ReadData(int a[], int n);
void PrintData(int a[], int n);
void MaxMinExchang(int a[], int n);
void Swap(int *x, int *y);
int main()
{
int a[10], n;
printf("Input n(n<=10):");
scanf("%d", &n);
printf("Input %d numbers:", n);
ReadData(a, n);
MaxMinExchang(a, n);
printf("Exchange results:");
PrintData(a, n);
return 0;
}
/* 函数功能:输入数组a的n个元素值 */
void ReadData(int a[], int n)
{
int i;
for (i=0; i<n; i++)
{
scanf("%d", &a[i]);
}
}
/* 函数功能:输出数组a的n个元素值 */
void PrintData(int a[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf("%5d", a[i]);
}
printf("\n");
}
/* 函数功能:将数组a中的最大数与最小数位置互换 */
void MaxMinExchang(int a[], int n)
{
int maxValue = a[0], minValue = a[0], maxPos = 0, minPos = 0;
int i;
for (i=1; i<n; i++)
{
if (a[i] > maxValue)
{
maxValue =a[i];
maxPos = i;
}
if (a[i] < minValue)
{
minValue = a[i];
minPos = i;
}
}
Swap( &a[maxPos], &a[minPos]);
}
/* 函数功能:两整数值互换 */
void Swap(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}