按如下函数原型,用指针作函数参数,编程统计数组a中奇数和偶数的个数,指针形参odd返回奇数的个数,指针形参even返回偶数的个数: void f(int a[], int *odd, int *even); 在主函数中输入20个整数,调用函数f()统计奇数和偶数的个数并通过指针形参返回给主函数,在主函数中输出统计结果。 **输入提示信息:"input 20 numbers:" **输入数据格式:"%d" **输出数据格式:"Odd numbered=%d,Even numbered=%d\n" 请按如下框架编程,在“......”的位置添加缺失的语句,使程序完整。 #include <stdio.h> /* 功能:统计数组a中奇数和偶数的个数 参数:odd为指向奇数个数的指针 even指向偶数个数的指针 */ void f(int a[], int *odd, int *even) { ........................ } int main() { int a[20], i, odd = 0, even = 0; printf("input 20 numbers:"); ............ printf("Odd numbered=%d,Even numbered=%d\n", odd, even); return 0; }
时间: 2024-03-08 18:50:55 浏览: 66
请见下面的完整程序代码:
```c
#include <stdio.h>
void f(int a[], int *odd, int *even)
{
int i;
for(i = 0; i < 20; i++)
{
if(a[i] % 2 == 0)
{
(*even)++;
}
else
{
(*odd)++;
}
}
}
int main()
{
int a[20], i, odd = 0, even = 0;
printf("input 20 numbers:");
for(i = 0; i < 20; i++)
{
scanf("%d", &a[i]);
}
f(a, &odd, &even);
printf("Odd numbered=%d,Even numbered=%d\n", odd, even);
return 0;
}
```
相关问题
可以通过简单的规律分析得出结论: 假设数组 a 中奇数个数为 odd,偶数个数为 even。 如果 odd 和 even 都为偶数,那么无论如何操作,最终数组中的元素奇偶性都不会改变。 如果 odd 和 even 都为奇数,那么无论如何操作,最终数组中的元素奇偶性都不会改变。 如果 odd 为奇数,even 为偶数,那么可以通过任意次操作 1(每次操作将 odd 加一),使得最终数组中只有奇数。 如果 odd 为偶数,even 为奇数,那么可以通过任意次操作 2(每次操作将 even 加一),使得最终数组中只有偶数。 所以,只有情况 1 和情况 2 可以使得最终数组中的元素奇偶性不变。其余情况都可以通过操作使得最终数组中只有一种奇偶性。 因此,我们只需要判断数组 a 中奇数和偶数的个数,即可判断是否能使最终数组中的元素奇偶性不变。 代码如下:
以下是可以判断最终数组中元素奇偶性是否相同的 Python 代码实现:
```
def can_operate_to_same_parity(a):
odd = sum(1 for x in a if x % 2 == 1)
even = len(a) - odd
if odd % 2 == 0 and even % 2 == 0:
return True
elif odd % 2 == 1 and even % 2 == 1:
return True
else:
return False
```
其中,odd 表示数组 a 中奇数的个数,even 表示数组 a 中偶数的个数。如果 odd 和 even 都为偶数或都为奇数,则返回 True;否则返回 False。
可以在函数中添加一些测试样例来进行测试,例如:
```
a = [1, 2, 3, 4, 5]
print(can_operate_to_same_parity(a)) # True
a = [1, 2, 3, 4, 6]
print(can_operate_to_same_parity(a)) # False
```
输出结果为 True 和 False,符合预期。
用指针法求10个整数的数组a中奇数的个数和平均值,以及偶数的个数和平均值
下面是用指针法求解的代码:
```c
#include <stdio.h>
int main()
{
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *p = a; // 定义指向数组a的指针p
int odd_count = 0, even_count = 0; // 奇数个数和偶数个数
int odd_sum = 0, even_sum = 0; // 奇数和偶数的和
double odd_avg = 0, even_avg = 0; // 奇数平均值和偶数平均值
for (int i = 0; i < 10; i++, p++) {
if (*p % 2 == 0) { // 判断是否为偶数
even_count++; // 偶数个数加1
even_sum += *p; // 偶数和加上当前值
} else {
odd_count++; // 奇数个数加1
odd_sum += *p; // 奇数和加上当前值
}
}
// 计算奇数和偶数的平均值
if (odd_count > 0) {
odd_avg = odd_sum * 1.0 / odd_count;
}
if (even_count > 0) {
even_avg = even_sum * 1.0 / even_count;
}
// 输出结果
printf("奇数个数:%d,平均值:%.2f\n", odd_count, odd_avg);
printf("偶数个数:%d,平均值:%.2f\n", even_count, even_avg);
return 0;
}
```
输出结果为:
```
奇数个数:5,平均值:3.00
偶数个数:5,平均值:6.00
```
阅读全文