下列给定程序中,函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]…中,把偶数从数组中删除,奇数个数通过函数值返回。
例如,若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除偶数后a所指数组中的数据为:9,4,3,5,7,返回值为5。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#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");
参考答案:1 (2)j++ (3)i
解析:
本题关键字有:if语句条件表达式;自增运算符;函数返回值;奇偶数的判断。奇偶数可通过对2求余的方法判定,结果为0则为偶数,为1则为奇数。单目运算符++、--的功能是使变量的值自增1、自减1,具有右结合性,有前缀和后缀两种形式,前缀表示自增或自减后再参加运算,后缀表示参加运算后再进行自增或自减。
[微分析]
填空1:根据题意要保留奇数删除偶数,if语句用来判断数组元素是否为奇数,奇数不能被2整除,所以填入if(a[i]%2==1)。
填空2:将奇数赋值给数组元素,数组下标递增。
填空3:数组中奇数的个数通过函数返回值返回,所以填入j。