输入一段长度为n的数组,每次去掉他的第一个数后剩余的数在去除最小值后求出平均值,输出每次的平均值,C语言不使用函数
时间: 2024-09-20 16:11:46 浏览: 39
在C语言中,如果你不使用函数,你可以通过循环结构和变量来实现这个过程。这里是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h> // 包含用于排序的头文件
int main() {
int n, *arr; // 定义数组大小和指针
float sum = 0.0, avg;
// 获取数组大小并读取元素
printf("请输入数组长度(n): ");
scanf("%d", &n);
arr = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个元素: ", i + 1);
scanf("%d", &arr[i]);
}
// 遍历数组,计算并打印平均值
for (int i = 0; i < n; ++i) {
// 去掉第一个数
if (i > 0) {
// 移除最小值(假设当前元素是最小的)
int min_index = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
// 更新数组
swap(&arr[0], &arr[min_index]);
// 更新总和
sum += arr[0];
}
// 计算平均值
avg = sum / (i + 1);
printf("去掉第一个数后的平均值: %.2f\n", avg); // 打印到两位小数
}
// 释放内存
free(arr);
return 0;
}
// 临时交换两个整数的辅助函数
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
这段代码首先获取数组的大小和元素,然后遍历数组,每次去掉第一个数并找出剩余部分的新最小值,更新总和并计算平均值。注意,这是一个简化的版本,实际应用中可能需要优化性能,例如使用更高效的数据结构来记录最小值。
阅读全文