填空题
函数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)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]”。 [考点] 参数调用,形参、实参的应用。
提交答案
关闭