编写程序, 先输入一组10个元素,再输出数组中比平均值小的所有奇数。 例如:输入:1 2 3 4 5 6 7 8 9 10 输出:1 3 5
时间: 2024-01-10 22:02:46 浏览: 98
以下是 Python 代码实现:
```python
arr = list(map(int, input("请输入10个整数,以空格分隔: ").split()))
avg = sum(arr) / len(arr) # 计算平均值
result = []
for num in arr:
if num % 2 == 1 and num < avg:
result.append(num)
print("比平均值小的所有奇数为:", end=" ")
print(*result) # 使用 * 将列表展开为多个参数输出
```
示例输出:
```
请输入10个整数,以空格分隔: 1 2 3 4 5 6 7 8 9 10
比平均值小的所有奇数为: 1 3 5
```
相关问题
用C语言编写数组操作:给定数组 int data[] = {1, 9, 7, 5, 2, 11, 56, 3, 13},完成以下任务: a)对数组进行降序排序。 b)计算并输出数组的平均值、最大值和最小值。 c)将数组中的奇数放在左边,偶数放在右边。
在C语言中,我们可以使用标准库函数来完成这些数组操作。以下是针对给定的整数数组 `data[]` 的步骤:
a) 对数组进行降序排序:
```c
#include <stdio.h>
#include <stdlib.h>
void bubble_sort_desc(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int data[] = {1, 9, 7, 5, 2, 11, 56, 3, 13};
int n = sizeof(data) / sizeof(data[0]);
bubble_sort_desc(data, n);
printf("Sorted array in descending order: ");
for (int i = 0; i < n; i++) {
printf("%d ", data[i]);
}
return 0;
}
```
b) 计算并输出数组的平均值、最大值和最小值:
```c
double calculate_average(int arr[], int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
return sum / n;
}
int main() {
// ... 同样在main函数里调用bubble_sort_desc()
double avg = calculate_average(data, n);
int max_value = *std::max_element(data, data + n);
int min_value = *std::min_element(data, data + n);
printf("Average value: %.2f\n", avg);
printf("Max value: %d\n", max_value);
printf("Min value: %d\n", min_value);
return 0;
}
```
c) 将数组中的奇数放在左边,偶数放在右边:
```c
void separate_numbers(int arr[], int* left, int* right, int n) {
int left_index = 0, right_index = n - 1;
while (left_index < right_index) {
// 找到第一个大于等于right_index的偶数
while (arr[left_index] % 2 != 0 && left_index < right_index) {
left_index++;
}
// 找到第一个小于等于left_index的奇数
while (arr[right_index] % 2 == 0 && left_index < right_index) {
right_index--;
}
if (left_index < right_index) {
std::swap(arr[left_index], arr[right_index]);
left_index++;
right_index--;
}
}
}
int main() {
// ... 同样在main函数里调用bubble_sort_desc()和calculate_average()
separate_numbers(data, data, data + n, n);
// 输出分离后的数组
for (int i = 0; i < n; i++) {
printf("%d ", data[i]);
}
// ... 继续计算其他统计数据
return 0;
}
```
用c语言编写程序随机生成一组(20个)两位整数,完成如下功能: (1)分别统计输出奇偶数的个数,并求出偶数和、奇数平均值; (2)编写排序函数sort(int a[],int n)实现将数组从小到大排序,在主函数中调用sort函数对这组(20个)整数进行排序,输出排序结果; (3)不重新排序的前提下(即:前后对调),把数组改为从大到小排序并输出结果。
好的,我会依次回答您的问题。对于您的第一个问题,以下是一个C语言程序,可以随机生成20个两位整数,并完成相应的功能:
```c
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void sort(int a[], int n);
int main(){
int i, a[20], even_count = 0, odd_count = 0, even_sum = 0, odd_sum = 0;
float odd_avg;
srand((unsigned)time(NULL));
// 随机生成20个两位整数
for(i=0; i<20; i++){
a[i] = rand() % 90 + 10;
printf("%d ", a[i]);
if(a[i] % 2 == 0){
even_count++;
even_sum += a[i];
}else{
odd_count++;
odd_sum += a[i];
}
}
printf("\n");
odd_avg = (float)odd_sum / odd_count;
printf("even count: %d, odd count: %d, even sum: %d, odd average: %.2f\n", even_count, odd_count, even_sum, odd_avg);
sort(a, 20);
printf("sorted array: ");
for(i=0; i<20; i++){
printf("%d ", a[i]);
}
printf("\n");
printf("reverse sorted array: ");
for(i=19; i>=0; i--){
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void sort(int a[], int n){
int i, j, temp;
for(i=0; i<n-1; i++){
for(j=i+1; j<n; j++){
if(a[i]>a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
```
程序的核心是sort函数,使用冒泡排序对数组进行排序。在主函数中,我们使用rand函数随机生成20个两位整数,并对数组进行遍历,统计奇偶数的个数并计算偶数和、奇数平均值。然后调用sort函数对数组进行排序,并输出排序结果。最后再将数组从大到小排序输出。
希望这个程序能够满足您的需求,如有疑问,请随时向我提问。
阅读全文
相关推荐
















