主题:请大家帮忙分析下这个题
zj2099qc
[专家分:0] 发布于 2010-03-08 23:13:00
饿饿·~ 我是初学者,不要嫌太简单!!!
以下函数用来在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个回复)
沙发
miaoyong [专家分:760] 发布于 2010-03-09 13:12:00
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 ;
}
板凳
耶路撒冷 [专家分:650] 发布于 2010-03-09 13:16:00
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 楼
雪光风剑 [专家分:27190] 发布于 2010-03-09 14:30:00
[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码最大的,就会溢出
我来回复