按照你的代码逻辑简单调试了一下
#include <stdio.h>
int main(void)
{
int a[10] = { 4,2,7,8,9,10,2,1,3,0 };
int sum = 0;
for (int i = 0; i < 10; i++) //求sum的和
{
sum += a[i];
}
int temp = 0;
//按照你的逻辑 期望是降序排列
for (int i = 0; i < 9; i++)
{
for (int j = i; j < 10; j++)
{
if (a[i] < a[j]) //每次i的位置放入和数组中最大的数
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
double aver = sum / 10.0;
double b[11] = { 0 }; //你期望按降序+arev塞入b中
//这里你的处理就开始混乱了
int pos = 0;
for (int i = 0; i < 10; i++) //i是a已经时降序的下标 同时和想处理的b的有一定关系
{
if (a[i] >= aver)
{
b[i+ pos] = a[i];
}
//塞入一个aver
if (a[i] < aver && pos == 0)
{
b[i+ pos] = aver;
pos = 1; //b比a下标差1
}
if (pos == 1)
{
b[i + pos] = a[i];
}
printf("%d ===>%lf \n", pos, b[i+pos]);
}
for (int i = 0; i < 11; i++)
{
printf("%d ===>%lf \n", i, b[i]);
}
return 0;
}