回 帖 发 新 帖 刷新版面

主题:请大家帮忙分析下这个题

饿饿·~ 我是初学者,不要嫌太简单!!!
以下函数用来在x数组中插入a值,数组中的数据已按从小到大的顺序存放,指针n所指内存单元中存放数组中数据的个数,插入后数组中的数据仍有序。请填入代码。
[code=c]
void fun(char *x,char a,int *n)
{  int k,p=0;
   x[*n]=a;
  while(a>x[p])
   p++;
for(k=*n;k>p;k--)
   x[k]=______;
  x[p]=a;
 ++*n;
[/code]
最好能吧思路讲一下,尤其for语句中的代码不知道在这里起到什么作用!

回复列表 (共3个回复)

沙发

void fun(char *x,char a,int *n)
{  int k,p=0;
   x[*n]=a;       //  这句可有可无,
  while(a>x[p])   //  数组中 小于a 的元素个数,
   p++;           //  查找插入元素位置, p索引数组中位置!
for(k=*n;k>p;k--)  //  这时x[p] 中有值,所以吧大于 a 的元素往后移动1位;
   x[k]=x[k-1]______; // 以此移动;
  x[p]=a;          // 跳出循环,把a 插入到x[p]中;
 ++*n;           //把元素总数加 1 ;

}

板凳

void fun(char *x,char a,int *n)
{  int k,p=0;
   x[*n]=a;           
  while(a>x[p])
   p++;
for(k=*n;k>p;k--)
   x[k]=x[k-1];       
  x[p]=a;
 ++*n;

3 楼

[quote]void fun(char *x,char a,int *n)
{  int k,p=0;
   x[*n]=a;       //  这句可有可无,
  while(a>x[p])   //  数组中 小于a 的元素个数,
   p++;           //  查找插入元素位置, p索引数组中位置!
for(k=*n;k>p;k--)  //  这时x[p] 中有值,所以吧大于 a 的元素往后移动1位;
   x[k]=x[k-1]______; // 以此移动;
  x[p]=a;          // 跳出循环,把a 插入到x[p]中;
 ++*n;           //把元素总数加 1 ;

}[/quote]
那句还真不是可有可无,否则的话如果插入的字符是所有字符中ascii码最大的,就会溢出

我来回复

您尚未登录,请登录后再回复。点此登录或注册