如何用C语言程序实现:接收用户输入10个整数,然后计算并输出这10个数的平均值。接着,找出与平均值之差的绝对值最小的两个数组元素,并显示这两个元素的值。
时间: 2025-01-01 14:39:00 浏览: 10
要使用C语言实现这个功能,首先需要创建一个程序来接收用户的输入,存储这些整数,并进行相应的计算。以下是一个简单的步骤说明:
1. 首先,声明一个数组`int numbers[10]`来存储10个整数。
```c
#include <stdio.h>
int main() {
```
2. 使用循环结构如`for`从用户那里获取10个整数输入,同时将它们存储到数组中。记得提示用户输入。
```c
int i;
float sum = 0; // 存储总和
for (i = 0; i < 10; i++) {
printf("请输入第 %d 个整数: ", i+1);
scanf("%d", &numbers[i]);
sum += numbers[i];
}
```
3. 计算平均值,即总和除以10。
```c
float average = sum / 10;
printf("10个数字的平均值是: %.2f\n", average); // 输出保留两位小数的平均值
```
4. 接下来,遍历数组找到与平均值之差的绝对值最小的两个元素。可以使用双指针技巧,一个指向开始位置,另一个初始值设为第一个元素,然后每次移动较大的那个指针直到结束。
```c
int min_diff = INT_MAX, mindiff_index1 = -1, mindiff_index2 = -1;
int left = 0, right = 1;
while (right < 10) {
int diff1 = abs(numbers[left] - average);
int diff2 = abs(numbers[right] - average);
if (diff1 < min_diff) {
min_diff = diff1;
mindiff_index1 = left;
mindiff_index2 = right;
} else if (diff2 < min_diff && diff2 != diff1) { // 如果第二个元素的差值更小且不等于第一个的差值
min_diff = diff2;
mindiff_index1 = left;
mindiff_index2 = right;
}
if (numbers[left] > numbers[right]) {
left++;
right++;
} else {
left++;
right--;
}
}
```
5. 最后,输出这两个元素的值。
```c
if (mindiff_index1 == -1 || mindiff_index2 == -1) {
printf("没有找到满足条件的元素。\n");
} else {
printf("与平均值相差最小的两个元素是: %d 和 %d\n", numbers[mindiff_index1], numbers[mindiff_index2]);
}
return 0;
}
```
阅读全文