将题目改成大于等于:
// 编写程序,将一维数组x中大于平均值的数据移至数组的前部,小于等于平均值的数据移至数组的后部
程序还是比较简单的,直接贴实现:
float arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// float arr[2] = {3, 1};
// float arr[10] = {1, 1, 1, 2, 1, 1, 1, 1, 9, 1};
// float arr[5] = {5, 4, 3, 2, 1}; //测试多组数据,多个维度去测试
int length = sizeof(arr)/sizeof(float); //获取数组长度
float sum = 0; float average = 0; //注意,float类型,平均数可能有小数点
for (int i = 0; i < length; i++)
{
sum = sum + arr[i];
}
average = sum / length;
int resultArr[length];
int frontArr[100], frontCount = 0;
int behindArr[100], behindCount = 0;
for (int j = 0; j < length; j++)
{
if (arr[j] < average) //小于平均数放在前面
{
frontArr[frontCount] = arr[j];
printf("frount is %d\n", frontArr[frontCount]);
frontCount = frontCount + 1;
}
else //大于平均数放在后面
{
behindArr[behindCount] = arr[j];
printf("behindArr is %d\n", behindArr[behindCount]);
behindCount = behindCount + 1;
}
}
printf("frontCount is :%d \n", frontCount);
printf("behindCount is :%d \n", behindCount);
for (int k = 0; k < length; k++) // 重新组一个数组
{
if (k < frontCount)
{
resultArr[k] = frontArr[k];
}
else
{
resultArr[k] = behindArr[k-frontCount];
}
}
for (int m = 0; m < length; m++)
{
printf("the result is :%d \n", resultArr[m]);
}
截图如下:(下面程序改正:int length = sizeof(arr) / sizeof(float))