单选题
有以下程序:
#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++) printf("%d", a[k]);
A) 0987654321 B) 4321098765 C) 5678901234 D) 0987651234
【正确答案】
C
【答案解析】[解析] 本题主要考查的是函数。在fun函数中,首先将形参n1和n2分别赋给局部变量i和j,然后使用while循环,交换s[i]和s[j]的内容,并使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}。