c语言求助,我哪里错了啊??题目是编程,输入10个互不相等的正整数存入一维整型数组a中,要求对这10个数

输入10个互不相等的正整数存入一维整型数组a中,要求对这10个数作相应的处理并按示例格式依次输出下列结果:
⑴ 最大值和最小值及其所在位置下标;
⑵ 平均值(保留1位小数);
⑶ 大于并最接近平均值的数及其所在位置下标;
⑷ 小于平均值的数的个数。
⑸ 10个数按从小到大的顺序排列。
ps:我没有输出下标,这个先不用管,请先帮忙看看我语法哪里错了啊??
#include<stdio.h>
int main(void)
{
int i,index,minimum,maximum,temp,all,j,closest,count,k,m,max;
double average;
int a[10],b[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
index=0;
for(i=1;i<10;i++)
{if(a[i]<a[index])
index=i;}
minimum=a[index];
printf("%d\n",minimum);
temp=0;
for(i=1;i<10;i++)
if(a[i]>a[temp])
temp=i;
maximum=a[temp];
printf("%d\n",maximum);
all=0;
for(i=0;i<10;i++)
all=all+a[i];
average=all/10;
printf("%.1f\n",average);
for(i=0;i<10;i++)
while(a[i]>average)
b[i]=a[i]-average;
j=0;
for(i=1;i<10;i++)
if(b[i]<b[j])
j=i;
closest=a[j];
printf("%d\n",closest);
for(i=0;i<10;i++)
if(a[i]<average)
count++;
printf("%d\n",count);
for(k=0;k<10;k++)
m=k;
for(i=k+1;k<10;i++)
if(a[i]>a[m])
m=i;
max=a[m];
a[m]=a[k];
a[k]=max;
for(i=0;i<10;i++)
printf("%d\n",a[i]);
return 0;
}

格式不规范,所以导致很多{}缺失,而且程序没有优化,冗余代码过多,我正在修改,一下子发给你,还有你的(3)处理方法不对,因为默认的b[n]都是0,还有那个all/10会有问题,结果为int,会舍弃小数值的。追问

好的,感谢,改好了加分啊~~~~~~~~

追答

#include
#define num 10 //这样调试时不用每次都输10个数,改5个数试试就可以了
int main(void)
{
int i,index,minimum,maximum,temp,all,j,closest,count,tmp;
float average,b[num];//不然b[]全都是整形,记不了小数
int a[num];
for(i=0;ia[temp])
temp=i;
}
maximum=a[temp];
printf("%d\n",maximum);

all=0;
for(i=0;i0&&(b[j]b[i]))j=i;
closest=a[j];
printf("%d\n",closest);

count=0;
for(i=0;ia[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
for(i=0;i<num;i++)
printf("%d\n",a[i]);
return 0;
}

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答