如题所述
#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;
}
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;
}
#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");
}本回答被网友采纳
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");
}本回答被网友采纳