输入n值及n个整数存在数组a中,调用一个子函数求出数组中奇数的个数及奇数和与偶数和,最后输出奇数个数、偶数个数、奇数和与偶数和。输出格式参见样张。 子函数功能:求出数组中奇数的个数、奇数和及偶数和。子函数头如下: int fun(int *p, int n, int &oddsum, int *evensum) 该函数返回数组中奇数的个数;指针变量p用来指向包含n个元素的数组;引用变量oddsum表示求得的奇数和;指针变量evensum指向求得的偶数和。
时间: 2024-03-08 11:44:52 浏览: 119
好的,这是一个关于数组操作的问题。可以按照如下步骤解决:
1. 首先读入n和数组a;
2. 再定义一个存放偶数和的变量even_sum和存放奇数个数的变量odd_count;
3. 调用子函数fun,将a数组、n、odd_sum和even_sum地址传入;
4. 在子函数中,遍历数组a,判断每个元素的奇偶性,将奇数个数和奇数和累加到odd_count和odd_sum中,将偶数和累加到even_sum中;
5. 回到主函数中,输出odd_count、n-odd_count、odd_sum和even_sum。
以下是代码实现:
相关问题
编写 C 程序完成以下功能: 1.在主函数中输入数组测试用例,调用 fun 函数实现功能。 2.函数 fun 的功能是分别求出数组中所有的奇数之和和所有的偶数之和。形参 n 给出了数组中数据的个数;利用 odd 返回奇数之和,利用指针 even 返回偶数之和。
在C语言中,你可以编写如下的程序来实现这个功能:
```c
#include <stdio.h>
// 定义函数fun,接收整型数组和其大小作为参数
void fun(int arr[], int n, int *odd, int *even) {
int sum_odd = 0, sum_even = 0; // 初始化奇数和偶数之和
for (int i = 0; i < n; i++) { // 遍历数组
if (arr[i] % 2 == 0) { // 如果元素是偶数
sum_even += arr[i]; // 加入到偶数之和
} else { // 如果元素是奇数
sum_odd += arr[i]; // 加入到奇数之和
}
}
*odd = sum_odd; // 将奇数和赋值给odd指针
*even = sum_even; // 将偶数和赋值给even指针
}
int main() {
int n;
printf("请输入数组元素个数: ");
scanf("%d", &n);
int arr[n];
printf("请输入数组元素:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int odd_sum, even_sum; // 定义临时变量存储结果
fun(arr, n, &odd_sum, &even_sum); // 调用fun函数并传入结果地址
printf("奇数之和: %d\n", odd_sum);
printf("偶数之和: %d\n", even_sum);
return 0;
}
```
在这个程序中,`main()`函数负责获取用户输入的数组长度和元素,然后通过`fun()`函数计算奇数和偶数之和,并将结果存储在`odd_sum`和`even_sum`变量中。`fun()`函数接受数组、数组大小以及两个指向整数的指针,以便更新它们的值。
c语言随机生成一组(20个)两位整数,完成如下功能: (1)分别统计输出奇偶数的个数,并求出偶数和、奇数平均值; (2)编写排序函数sort(int a[],int n)实现将数组从小到大排序,在主函数中调用sort函数对这组(20个)整数进行排序,输出排序结果; (3)不重新排序的前提下(即:前后对调),把数组改为从大到小排序并输出结果。
好的,我来回答你的问题。
以下是 C 语言代码,实现了你要求的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sort(int a[], int n); // 声明排序函数
int main() {
srand(time(NULL)); // 初始化随机数种子
int nums[20]; // 存放生成的随机数
int even_count = 0; // 偶数个数
int odd_count = 0; // 奇数个数
int even_sum = 0; // 偶数和
double odd_avg = 0; // 奇数平均值
// 生成随机数并计算奇偶数个数、偶数和、奇数平均值
printf("生成的随机数为:");
for (int i = 0; i < 20; i++) {
nums[i] = rand() % 90 + 10; // 生成两位整数
printf("%d ", nums[i]); // 输出生成的随机数
if (nums[i] % 2 == 0) { // 判断偶数
even_count++;
even_sum += nums[i];
} else { // 奇数
odd_count++;
odd_avg = (odd_avg * (odd_count - 1) + nums[i]) / odd_count;
}
}
printf("\n");
// 输出奇偶数个数、偶数和、奇数平均值
printf("偶数个数:%d\n", even_count);
printf("奇数个数:%d\n", odd_count);
printf("偶数和:%d\n", even_sum);
printf("奇数平均值:%f\n", odd_avg);
// 排序并输出结果
sort(nums, 20);
printf("从小到大排序的结果为:");
for (int i = 0; i < 20; i++) {
printf("%d ", nums[i]);
}
printf("\n");
// 从大到小排序并输出结果
printf("从大到小排序的结果为:");
for (int i = 19; i >= 0; i--) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
// 排序函数,实现冒泡排序算法
void sort(int a[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
```
希望能够帮到你。
阅读全文