C语言 指针输入10个数,最小的数与第一个数对换,最大的数与最后一个数对换,要求写3个函数,怎么写

如题所述

#include<stdio.h>
float *findMax(float nums[]);
float *findMin(float nums[]);
void dh(float nums[]);//对换:最大值到最后一位 最小值到第一位
int main()
{
    float nums[10];
    int i=10;
    printf("输入10个数:");
    for(i=0;i<10;i++)
        scanf("%f",&nums[i]);
    dh(nums);
    printf("对换后的数组:\n");
    for(i=0;i<10;i++)
        printf("%.2f ",nums[i]);
    return 0;
}
void dh(float nums[])//对换:最大值到最后一位 最小值到第一位
{
    float *nMax,*nMin;
    int num;
    nMax=findMax(nums);
    num=*nMax;
    *nMax=nums[9];
    nums[9]=num;

    nMin=findMin(nums);
    num=*nMin;
    *nMin=nums[0];
    nums[0]=num;
}
float *findMax(float nums[])
{
    int i;
    float *nMax=nums;
    for(i=1;i<10;i++)
        if(*nMax<nums[i])
            nMax=&nums[i];

    return nMax;
}
float *findMin(float nums[])
{
    int i;
    float *nMin=nums;
    for(i=1;i<10;i++)
        if(*nMin>nums[i])
            nMin=&nums[i];

    return nMin;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-24
#include<stdio.h>
#define LEN 10 //可以随时更改想输入的个数.
void input(float *p)
{
int i;
printf("请输入%d个数:\n", LEN);
for (i = 0; i < LEN; i++)
scanf("%f", p + i);
}

void sort_min(float *p)
{
int i, min;
float t;
for (i = 0, min = 0; i < LEN; i++)
if (*(p + min)>*(p + i))  min = i;
t = *(p + min);
*(p + min) = *p;
*p = t;
}

void sort_max(float *p)
{
int i, max;
float t;
for (i = 0, max = 0; i < LEN; i++)
if (*(p + max)<*(p + i))  max = i;
t = *(p + max);
*(p + max) = *(p+i-1); //注意此时i=LEN;
*(p+i-1) = t;
}

int main()
{
int i;
float a[LEN], *p;
p = a;
input(p);
sort_min(p);
sort_max(p);
for (i = 0; i < LEN; i++)
printf("%8.2f", *(p + i));
printf("\n");
return 0;
}

第2个回答  2018-04-24
#include<stdio.h>
int fmax(int *a,int n) { int i,x; //返回最大值下标
  x=0; for ( i=1;i<n;i++ ) if ( a[x]<a[i] ) x=i;
  return x; 
}
int fmin(int *a,int n) { int i,x; //返回最小值下标
  x=0; for ( i=1;i<n;i++ ) if ( a[x]>a[i] ) x=i;
  return x; 
}
void fexc(int *a,int x0,int x1) { int x; x=a[x0];a[x0]=a[x1];a[x1]=x; } //交换
#define N 10
void main() { int a[N],i,m,*p;
  for ( i=0,p=a;i<N;i++,p++ ) scanf("%d",p);
  m=fmax(a,N); fexc(a,0,m);
  m=fmin(a,N); fexc(a,N-1,m);
  for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
}

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网