要求:从键盘输入10个整数存入一个数组中,用函数编程将其中的最大数与最小数位置互换,然后输出互换后的数组。

本文分享了使用C语言实现数组中最大数与最小数位置互换的两种方法。一种是通过直接查找最大值和最小值并进行交换,另一种则是采用函数封装的方式,通过查找最大值和最小值的位置进行交换,后者更符合函数编程思想。

要求:从键盘输入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;
}  	   	  	

同学们还是要认真对待每一门课程,不要像我一样偷懒!呜呜呜呜呜。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值