C语言输入10个数去掉最大值最小值求剩下数的和
这题考察数组的知识,代码如下:
#include<stdio.h>
int main()
{
int a[10],n,max,min,maxxiabiao,minxiabiao;
for(n=0;n<=9;n++)
{
scanf("%d",&a[n]);
}
max=min=a[0];
maxxiabiao=minxiabiao=0;
for(n=0;n<=9;n++)
{
if(a[n]>max)
{
max=a[n];
maxxiabiao=n;
}
else if(a[n]<min)
{
min=a[n];
minxiabiao=n;
}
}
printf("max=%d,xiabiao=%d\n",max,maxxiabiao);
printf("min=%d,xiabiao=%d\n",min,minxiabiao);
return 0;
}
扩展资料
同一数组中存储的数必须满足以下两个条件:
1、这些数的类型必须相同。
2、这些数在内存中必须是连续存储的。
换句话说,数组是在内存中连续存储的具有相同类型的一组数据的集合。
一维数组的定义方式如下:
类型说明符 数组名[常量表达式];
例如:int a[5];
它表示定义了一个整型数组,数组名为 a,定义的数组称为数组 a。数组名 a 除了表示该数组之外,还表示该数组的首地址。
此时数组 a 中有 5 个元素,每个元素都是 int 型变量,而且它们在内存中的地址是连续分配的。也就是说,int 型变量占 4 字节的内存空间,那么 5 个int型变量就占 20 字节的内存空间,而且它们的地址是连续分配的。
1 输入十个数。
2 遍历数组,求的最大值,最小值,及和。
3 用和减去最大和最小值,即剩下所有数的和。
代码如下:
int func(int *a)//求数组a中的10个元素,去掉最大最小值后剩余元素的和,并返回。
{
int i, s, min, max;
s = min = max = a[0];
for(i = 1; i <10;i++)
{
s+=a[i];//求和。
if(min > a[i]) min = a[i];//最小值。
if(max < a[i]) max = a[i];//最大值。
}
s -= min+max;//去掉最大最小两个值。
return s;//返回结果
}
int main()
{
int a[10],i;
for(i = 0; i < 10; i ++)
scanf("%d",a+i);//输入10个数。
printf("%d\n",func(a));//输出结果。
return 0;
}
int main()
{
int a[10];
int i,min,max,total;
printf("请输入10个数据:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
min=max=a[0];
for(i=1;i<10;i++)
{
if(max<a[i])
max=a[i];
if(min>a[i])
min=a[i];
}
for(i=0;i<10;i++)
{
if(a[i]==min)
a[i]=0;
if(a[i]==max)
a[i]=0;
}
total=0;
for(i=0;i<10;i++)
{
total+=a[i];
}
printf("减去最大值和最小值的和为:%d\n",total);
return 0;
}
时间匆忙,没有调试,你可以看下思路,还有本程序在10个数中允许同时存在相同的最大值或者最小值,并且会减去所有相同的最值,比如10个数中最大值100,但有两个数都是100,那么它会减去2次100.
#include <conio.h>
void main()
{
int sum=0,max=-32768,min=32767,x,i;
for(i=0;i<10;++i)
{ printf("输入第%d数\t",i+1);
scanf("%d",&x);
sum+=x;
if(max<x)
max=x;
if(min>x)
min=x;
}
printf("输入10个数去掉最大值最小值求剩下数的和:%d\n",sum-min-max);
getch();
}
void main()
{
int a,sum=0,max,min,i=1;
printf("Please input 10 numbers");
scanf("%d",&a);
sum+=a;
max=min=a;
while(i<=9)
{
scanf("%d",&a);
sum+=a;
if(a>max)max=a;
else if(a<min)min=a;
i++;
}
printf("%d",sum-max-min);
}