填空题 函数fun()的功能是:逆置数组元素中的值,形参m给出数组中数据的个数。
例如,若x所指数组中的数据依次为:9、8、7、6、5,则逆置后依次为:5、6、7、8、9。
注意:部分源程序给出如下。
请勿改动函数main()与其他函数中的任何内容,仅在fun()函数的横线上填写所需的若干表达式或语句。
试题程序:
#include<stdio.h>
void fun(int a[],int m)
{
int i,temp;
for(i=0;i< 1;i++)
{
temp=a[i];
a[i]=a[m-1- 2];
3=temp;
}
}
void main()
{
int x[9]=(9,8,7,6,5},i;
printf("/nThe original data:/n");
for(i=0;i<5;i++)
printf("%4d",x[i]);
printf("/n");
fun(x,5);
printf("/nThe data after invert:/n");
for(i=0;i<5;i++)
printf("%4d",x[i]);
printf("/n");
}
【正确答案】
【答案解析】m/2 i a[m-1-i] [解析] 该题中函数功能是逆置数组元素的值。此类题的解题思路,是在简单的两个数值交换的基础上,增加对数值定位的功能,也就是确定要交换的数值在数组中的位置。
第一空:对数组中的元素进行逆置,根据上面的分析,整个数组中元素交换的循环次数,应该是只需要交换整个数组长度的一半的次数,所以,第一空应填:“m/2”。
第二空:元素逆置,就是第一个和最后一个交换,依次类推。个数为m的数组中,与第i个元素相对应需要交换的元素是第m-1-i个元素,所以第二空填:“i”。
第三空:根据两个元素交换的算法,第i个和第m-i-1个元素交换的过程,应填:“a[m-1-i]”。