问题 填空题

函数fun()的功能是:将形参a所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。例如,若a所指数组中的数据依次为1、2、3、4、5、6、7、8、9,则调换后为6、7、8、9、5、1、2、3、4。
#include<stdio.h>
#define N 9
void fun(int a[],int n)
int i,t,p;
/**********found**********/
p=(n%2==0)n/2:n/2+ (1) ;
for(i=0;i<n/2;i++)

t=a[i];
/**********found**********/
a[i]=a[p+ (2) ];
/**********found**********/
(3) =t;


main()
int b[N]=1,2,3,4,5,6,7,8,9,i;
printf("\nThe original data:\n");
for(i=0;i<N;i++)printf("%4d",b[i]);
printf("\n”);
fun(b,N);
printf("nThe data after moving:\n");
for(i=0;i<N;i++)printf("%4d",b[i]);
printf("\n");

答案

参考答案:(1)1 (2)I (3)a[p+i]

解析: 本题中函数fun()的功能是将形参a所指数组中的前半部分元素的值和后半部分元素的值对换。具体分为两种情况:a的长度是奇数和偶数。a的长度是奇数时,最中间的元素不移动,将前半部分和后半部分对换;a的长度为偶数时,直接将前半部分和后半部分对换。
第一空:在“p=(n%2==0)n/2:n/2+ (1) ;”和“a[i]=a[p+ (2) ];”中,由“n%2==0”判断是否是偶数,a[i]和a[p+ (2) ]交换。如果n是偶数,a[0]和a[n/2]交换;如果n是奇数,那么a[0]和a[n/2+1]交换,依此类推,故n为偶数时a[i]和a[i+n/2]交换,n为奇数时a[i]和a[i+n/2+1]交换。因此,如果n是奇数的话,p应该等于n/2+1,故第一空处应为“1”。
第二空:由上分析可知,a[i]和a[i+p]交换,故第二空处应为“i”。
第三空:“t=a[i];a[i]=a[p+i];”,故第三处应该是把a[i]赋值给a[p+i],a[i]保存在t中,故第三空处应为“a[p+i]”。
[考点] 参数调用,形参、实参的应用。

单项选择题
判断题