用C语言编程序,由键盘输入五个数后按从高到低排列,再去掉一个最高一个最低求平均。

如题所述

#include <stdio.h>
#include <stdlib.h>#define MAXlen 5void select_sort(int *x, int n) { //选择排序
int i, j, min;
int t;
for (i = 0; i < n - 1; i++) { // 要选择的次数:0~n-2共n-1次
min = i; // 假设当前下标为i的数最小,比较后再调整
for (j = i + 1; j < n; j++) { //循环找出最小的数的下标是哪个
if (*(x + j) > *(x + min)) {
min = j; // 如果后面的数比前面的大,则记下它的下标
}
}
if (min != i) { // 如果min在循环中改变了,就需要交换数据
t = *(x + i);
*(x + i) = *(x + min);
*(x + min) = t;
}
}
}int main() {
int i,a[MAXlen],sum = 0;
for(i = 0 ; i < MAXlen ; i++) {
printf("请输入第%d个数 : ",i + 1);
scanf("%d",&a[i]);
sum = sum + a[i];
}
printf("\n");
select_sort(a,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i < MAXlen ; i++) {
if(i % 10 == 0) printf("%\n");
printf("%5d",a[i]);
}
printf("\n\n去掉最大数后的平均值为:%.2f",(float)(sum - a[0])/(MAXlen - 1));
printf("\n\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-02
#include <stdio.h>
#define CNT 5

void Sort(double arr[])
{
int i,j;
double tmp;

for (i=0; i<CNT; i++)
for (j=i+1; j<CNT; j++)
if (arr[i]>arr[j])
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}

void main()
{
double inArr[5] = {0.0}, aveValue = 0.0;
int i;

printf("请输入%d个数字: \n", (int)CNT);
for (i=0; i<CNT; i++)
scanf("%lf", &inArr[i]);

Sort(inArr);

printf("去掉一个最高一个最低后的平均值为: %.2lf\n", (inArr[1]+inArr[2]+inArr[3])/3);
}
//测试结果:
第2个回答  2013-12-02
#include "stdio.h"
main()
{
int a[5];
int i,j,num,max,t; int sum=0; float avg=0;
printf("请输入五个数:");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
max=a[i];
num=i;
for(j=i+1;j<5;j++)
{
if(max<a[j])
{
max=a[j];
num=j; }
}
t=a[num];
a[num]=a[i];
a[i]=t;
}
for(i=1;i<4;i++)
{
sum=sum+a[i]; } avg=sum/3; printf("去掉一个最小值:%d\n",a[0]);
printf("去掉一个最大值:%d\n",a[4]);
printf("最终的平均值为:%2f\n",avg);
}

相关了解……

你可能感兴趣的内容

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