c语言编程从输入的n个数中,去掉一个最大数和一个最小数,求剩余数的平均值。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程从输入的n个数中,去掉一个最大数和一个最小数,求剩余数的平均值。相关的知识,希望对你有一定的参考价值。

要求简单易懂。

#include <stdio.h>

#include <malloc.h>

void main ()

int *p;

int NUM,i,temp,j,all;

float k;

    printf("how many numbers\\n");

    scanf("%d",&NUM);

p = malloc(NUM * sizeof(int));

    printf("input the numbers\\n");

    for(i=0;i<NUM;i++)scanf("%d",p+i);

for(i=0;i<NUM-1;i++)

for(j=0;j<NUM-1-i;j++)

if(*(p+j)>*(p+j+1))

//互换

temp = *(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)= temp;

    all=0;

for(i=1;i<NUM-1;i++)

temp=*(p+i);

all = all + temp;

k=(float)(all/(NUM-2));

printf("%d\\n",all);

printf("%f\\n",k);

vc6.0下调试通过

参考技术A 学海无涯苦作舟,乘风破浪未有时。学无止境,逆流而上 参考技术B #include "stdio.h"
int main()

int n, x;

double sum = 0;

int max = 0;

double avg;

int min = 1<<31;

scanf("%d", &n);

for (int i = 0; i < n; ++i)


scanf("%d", &x);

sum += x;

max = max >= x ? max : x;

min = min <= x ? min : x;



sum = sum - max - min;

avg = sum / n;

print ("avg = %lf, max = %d, min = %d\n", avg, max, min);

return 0;

追问

不能运行这个程序,有错误

追答

#include "stdio.h"
int main()

int n, x;
double sum = 0;
int max = 0;
double avg;
int min = 1= x ? max : x;//max 保存这N个数里面的最大值
min = min <= x ? min : x;//min保存这N个数里面的最小值

sum = sum - max - min;//去掉最大值和最小值
avg = sum / n;//求平均
printf ("avg = %lf, max = %d, min = %d\n", avg, max, min);//输出
return 0;


已经编译测试过可运行。

本回答被提问者和网友采纳

将C语言中一个整数数组中的重复元素都去掉,如输入1 1 1 2 3,输出 2 3.

我自己写了一个,但不知道有没有缺陷。
#include<stdio.h>
#define N 10
main()


int a[N];
int n;
scanf("%d",&n);
getchar();
int i,j;
for (i=0;i<n;i++)

scanf("%d",&a[i]);

for (i=0;i<n;i++)

for (j=0;j<n;j++)

if (a[i]==a[j]&&i!=j)
break ;

if (a[i]!=a[j])
printf("%d",a[i]);


那么,做到这一步之后,
int a[N],b[N],c[N];
需要将a[N]与b[N]的元素按先后存入这个C数组,如何进行?

输入的数组会有个长度n,去掉之后不能动态改变定长数组的长度,只能把保留下来的非重复n1位数前移,输出这n1个数;
不妨设二维数组a[100],b[100],不知道你要存多少,第一个数组用来保存数组中不同种类数的具体值,第二个数组下标对应保存a数组中数的下标,在弄个计算器记录统计过的数的种类,作为a数组每次遍历的次数,初值为0,
遍历输入的数组num,在a中找num[i],如果不存在,则添加到a数组,b数组对应下标添加num[i]在[i]中位置;如果存在,把num中i后面的数组前移,b数组中找到保存的num[i]的下标,也前移,b中下标换为-1,标识已前移,该数已经统计,
数组删除数只能逐个前移,很不方便,链表会简单一些,基本思想就是一个数组存遍历过的数的种类,一个存位置,每次遍历新的在保存的表里找是否存在过,有就数组前移,没有就添加
参考技术A 你程序中的那种赋值方式只能在数组定义的时候赋值,定义完成后,就要一个一个的赋值。比如:s.a[0] = 1;s.a[1] = 2;如果赋值有一定规律的话,可以用for循环;如果赋的值一样的话,可以用 memset(s.a,0,sizeof(s.a));,memset一般用于数组初始化和清零。追问

赋值并没有规律,重复元素出现的没有规律。但知道这个数组中的元素个数,具体需要怎样实现呢?而且需要按数值出现的先后来打印那些没有重复的元素。

以上是关于c语言编程从输入的n个数中,去掉一个最大数和一个最小数,求剩余数的平均值。的主要内容,如果未能解决你的问题,请参考以下文章

将C语言中一个整数数组中的重复元素都去掉,如输入1 1 1 2 3,输出 2 3.

1. 用C语言写一段程序:从键盘上输入两数,判断其大小关系,将判断结果显示在屏幕上。

C语言,查找数组里重复出现的数字;

用C语言把一个数组中的值按逆序重新存放?

C语言问题 把一个数组中的重复元素去掉

c语言如何写一个自定义函数,随意输入n个数,求出这n个数中的最大值