问题
单项选择题
有以下程序:
#include<stdio.h>
void fun(int*s,int n1,int n2)
{int i,j,t;
i=n1;j=n2;
while(i<j)(t=s[i];s[i]=s[j];s[j]=t;i++;j--;)
}
main()
{int a[10]=[1,2,3,4,5,6,7,8,9,0),k;
fun(a,0,3;fun(a,4,9);fun(a,0,9);
for(k=0;k<10;k++)print f(“%d”a[k];}
程序运行后的输出结果是( )。
A.0987654321
B.4321098765
C.5678901234
D.0987651234
答案
参考答案:C
解析: 本题主要考查的是函数。在fun函数中,首先将形参n1和n2分别赋给局部变量i和j,然后使用while循环,交换s[i]和s[i]的内容,并使i增1、j减1,直到i不小于j为止。所以该函数实现的功能是:对形参指针s所指的一系列元素,从第n1位到第n2位进行逆序。主函数中,连续调用了3次fun函数,依次对数组a的第0-3位、第4—9位和第0-9位进行了逆序。对0~3位逆序后,数组a的内容是(4,3,2,1,5,6,7,8,9,0];再对4~9位逆序后是(4,3,2,1,0,9,8,7,6,5);最后对0~9位逆序后是(5,6,7,8,9,0,1,2,3,4)。