有以下程序 #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); *(

admin2020-11-27  25

问题 有以下程序
#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} ,i, *p = a;
   fun( p,0,3 ); fun( p,4,9 ); fun( p,0,9 );
   for( i=0; i<10; i++ )printf("%d ", *( a+i ) );
   printf("\n" );
}
程序运行后的输出结果是

选项 A、5 6 7 8 9 0 1 2 3 4
B、0 9 8 7 6 5 4 3 2 1
C、4 3 2 1 0 9 8 7 6 5
D、0 9 8 7 6 5 1 2 3 4

答案A

解析 程序执行过程为:调用函数fun(p,0,3),将数组a首地址传入函数,循环执行2次,将数组前4个元素前后倒置,数组a={4,3,2,1,5,6,7,8,9,0};调用函数fun(p,4,9),将数组a首地址传入函数,循环执行3次,将数组第5个到第10个元素前后倒置,数组a={4,3,2,1,0,9,8,7,6,5};调用函数fun(p,0,9),将数组a首地址传入函数,循环执行5次,将数组元素前后倒置,数组a={5,6,7,8,9,0,1,2,3,4};依次输出数组元素,A选项正确。
转载请注明原文地址:https://kaotiyun.com/show/gd3p777K
0

最新回复(0)