C语言实现数组元素移动:将小于平均值的元素移至数组前半部分
该程序实现了以下功能:
- 提示用户输入由 10 个正整数组成的数组。
- 使用循环将用户输入的数组存储到 arr 数组中。
- 计算数组元素的总和。
- 计算数组元素的平均值。
- 使用冒泡排序算法对数组进行升序排序。
- 定义两个指针,一个指向数组的起始位置,一个指向数组的末尾位置。
- 当起始指针小于末尾指针时,比较起始指针位置的元素是否小于平均值。
- 如果小于平均值,则将起始指针向后移动一位。
- 如果大于等于平均值,则将起始指针位置的元素与末尾指针位置的元素交换,并将起始指针向后移动一位,末尾指针向前移动一位。
- 打印平均值和移动后的数组。
#include <stdio.h>
int main()
{
int arr[10];
printf('请输入由 10 个正整数组成的数组:\n');
for (int i = 0; i < 10; i++)
{
scanf('%d', &arr[i]);
}
double sum = 0;
for (int i = 0; i < 10; i++)
{
sum += arr[i];
}
double average = sum / 10;
for (int i = 0; i < 9; i++) // 冒泡排序
{
for (int j = 0; j < 9 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
int lowerIndex = 0;
int higherIndex = 9;
while (lowerIndex < higherIndex)
{
if (arr[lowerIndex] < average)
{
lowerIndex++;
} else
{
int temp = arr[lowerIndex];
arr[lowerIndex] = arr[higherIndex];
arr[higherIndex] = temp;
lowerIndex++;
higherIndex--;
}
}
printf('平均值: %.2f\n', average);
printf('移动后的数据: ');
for (int i = 0; i < 10; i++) {
printf('%d ', arr[i]);
}
printf('\n');
return 0;
}
原文地址: https://www.cveoy.top/t/topic/pBRY 著作权归作者所有。请勿转载和采集!