程序填空题:函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。程序文件名为135.c。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include <stdio.h> #define N 9 int fun(int a[], int n) { int i,j; j = 0; for (i=0; i<n; i++) /**********found**********/ if (*(a+i)%2==___1___) { /**********found**********/ *(a+j) = *(a+i); ___2___; } /**********found**********/ return ___3___; } main() { int b[N]={9,1,4,2,3,6,5,8,7}, i, n; printf("\nThe original data :\n"); for (i=0; i<N; i++) printf("%4d ", *(b+i)); printf("\n"); n = fun(b, N); printf("\nThe number of odd : %d \n", n); printf("\nThe odd number :\n"); for (i=0; i<n; i++) printf("%4d ", *(b+i)); printf("\n"); }
时间: 2023-07-01 16:11:34 浏览: 473
程序填空如下:
```c
#include <stdio.h>
#define N 9
int fun(int a[], int n) {
int i, j;
j = 0;
for (i = 0; i < n; i++)
if (*(a+i) % 2 == 1) { // 找到奇数
*(a+j) = *(a+i); // 将该奇数存放到 a[j] 中
j++; // j 指向下一个存放奇数的位置
}
return j; // 返回奇数的个数
}
int main() {
int b[N] = {9, 1, 4, 2, 3, 6, 5, 8, 7};
int i, n;
printf("\nThe original data :\n");
for (i = 0; i < N; i++)
printf("%4d ", *(b+i));
printf("\n");
n = fun(b, N);
printf("\nThe number of odd : %d \n", n);
printf("\nThe odd number :\n");
for (i = 0; i < n; i++)
printf("%4d ", *(b+i));
printf("\n");
return 0;
}
```
函数 fun 的实现如下:
- 初始化变量 j 为 0,用于记录当前存放奇数的下标;
- 遍历整个数组,若找到奇数,则将其存放到 a[j] 中,同时 j 指向下一个存放奇数的位置;
- 返回存放奇数的个数 j。
在主函数中,我们先输出原始数据,然后调用函数 fun 处理数组 b,并将返回值保存在变量 n 中,最后输出处理后的奇数及其个数。
阅读全文