阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明1] 函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后

admin2010-12-16  36

问题 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
   [说明1]
   函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。
   [C函数1]
   void fun(char*W,char x,int*n)
   {  int i,P;
   p=0;
   w[*n]=x;
   while(x>w[p]) (1) ;
   for(i=*n,i>p;i--)w=(2);
   w[p]=x;
   ++*n;
   }
   [说明2]
   函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。
   [C函数2]
   void revstr(char*s)
   {  char*p,c;
   if(s==NULL)return;
   p=(3);  /*p指向字符串s的最后一个有效字符*/
   while(s<p){    /*交换并移动指针*/
   C=*s;
     (4)=*p;
     (5)=c;
   }
   }

选项

答案(1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--)

解析 函数1的fun()中的while循环是为了找到x的插入位置,因此(1)填“p++”,for循环是移动数组中的元素,因此(2)填“w[i-1]”。
   对于函数2,设字符串的长度为n,则该函数的思想为将*(s+j)与*(s+n-1+i)对换,i=0....n/2。采用指针来实现,s为起始地址,p定位为最后一个字符的位置,所以空(3)应填“s+strlen(s)-1”;采用*s与*p交换后为s++与P--。即空(4)填“*s++”或“*(s++)”,空(5)填“*p-”或“*(p--)”。
转载请注明原文地址:https://kaotiyun.com/show/pBjZ777K
0

最新回复(0)