要求:从键盘输入10个整数存入一个数组中,用函数编程将其中的最大数与最小数位置互换,然后输出互换后的数组。
函数原型:void MaxMinExchang(int a[], int n);
输入提示信息:“Input 10 numbers:”
输入格式:"%d"
输出提示信息:“Exchang results:”
输出格式:"%4d"
程序运行结果示例:
Input 10 numbers:8 2 7 4 9 11 5 47 6 97↙
Exchang results: 8 97 7 4 9 11 5 47 6 2
第一次这么认真地做学校C语言习题。虽然写的代码又臭又长,而且没有按照要求的函数原型来写……(标准答案在最后面)
#include <stdio.h>
#include <stdlib.h>
void Input(int a[],int n);
int Findmax(int a[],int n);
int Findmin(int a[],int n);
void Exchange(int x[], int n, int a,int b);
void Output(int a[],int n);
int main()
{
printf("Input 10 numbers:");
int num[10];
int max,min;
Input(num,10);
max=Findmax(num,10);
min=Findmin(num,10);
printf("%d,%d",max,min);
Exchange(num,10,max,min);
printf("Exchang results:");
Output(num,10);
return 0;
}
void Input(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
return 0;
}
int Findmax(int a[],int n)
{
int i,findmax=a[0];
for(i=1;i<n;i++)
{
if(findmax<a[i])
findmax=a[i];
}
return findmax;
}
int Findmin(int a[],int n)
{
int i,findmin=a[0];
for(i=1;i<n;i++)
{
if(findmin>a[i])
findmin=a[i];
}
return findmin;
}
void Exchange(int x[], int n, int a,int b)
{
int i;
printf("%d,%d\n",a,b);
for(i=0;i<10;i++)
{
if(x[i]==a)
x[i]=b;
else if(x[i]==b)
x[i]=a;
else
x[i]=x[i];
}
}
void Output(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
return 0;
}
然后是标准答案:
#include <stdio.h>
void MaxMinExchang(int a[], int n);
int FindMaxPos(int s[], int n);
int FindMinPos(int s[], int n);
int main()
{
int i, a[10];
printf("Input 10 numbers:");
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
MaxMinExchang(a, 10);//1
printf("Exchang results:");
for (i = 0; i < 10; i++)
{
printf("%4d", a[i]);//1
}
printf("\n");
return 0;
}
/* 函数功能:将数组中的最大数与最小数位置互换 */
void MaxMinExchang(int a[], int n)
{
int maxPos, minPos, temp;
maxPos = FindMaxPos(a, n);//1
minPos = FindMinPos(a, n);//1
temp = a[maxPos];
a[maxPos] = a[minPos];//1
a[minPos] = temp;
}
/* 函数功能:计算数组中的最大值在数组中的下标位置 */
int FindMaxPos(int s[], int n)//1
{
int maxPos = 0, max = s[0], i;
for (i = 1; i < n; i++)
{
if (s[i] > max) //1
{
max = s[i];
maxPos = i;
}
}
return maxPos;
}
/* 函数功能:计算数组中的最小值在数组中的下标位置 */
int FindMinPos(int s[], int n)//1
{
int minPos = 0, min = s[0], i;
for (i = 1; i < n; i++)
{
if (s[i] < min)//1
{
min = s[i];
minPos = i;
}
}
return minPos;
}
同学们还是要认真对待每一门课程,不要像我一样偷懒!呜呜呜呜呜。
本文分享了使用C语言实现数组中最大数与最小数位置互换的两种方法。一种是通过直接查找最大值和最小值并进行交换,另一种则是采用函数封装的方式,通过查找最大值和最小值的位置进行交换,后者更符合函数编程思想。

5104

被折叠的 条评论
为什么被折叠?



