谁能帮我编个函数

来源:百度知道 编辑:UC知道 时间:2024/05/16 00:51:46
> 有个小算法,帮我写个函数,
> 功能:对一个指定的数组,输入指定数的数值,和输入这个数在这个数组中位置,将这个数插入到指定的位置,如果数组全部被插入满(即如果数组长度为100,插入了100个数),那么以后插入的数放在最后一位,原来的100个数依次前移。将原来第一个数丢掉。
>
>
> 输入参数:1、数组(或内存指针)(unsigned char型);2、数组大小;3、插入数的位置;4、插入的数值(0-255)
>

由于C/C++数组无空状态(只要声明(即使你不初始化)也要占空间只不过里面的内容不确定),所以要想完全实现你的功能必须声明另一个足够大的数组来记录你的输入情况。会使这个程序很大反而偏离你的初衷,所以本程序只是将数组成员初始化为0,如插入不为0当成正常插入。由于你的叙述中没有考虑当插入点大于现有成员数的情况,所以本程序只简单插入到指定点。
本程序只实现正常输入和插入操作,没有进一步的排错代码。
int _tmain(int argc, _TCHAR* argv[])
{
int i,iLen=5,iIns=0;
unsigned char ucAry[5],ucV=0;
for(i=0;i<=iLen;i++)
ucAry[i]=0;
i=0;
while(i<iLen)
{
printf("%d,%u\n",i++,ucAry[i]);
}
//struct node *p;
do
{
scanf("%u %d",&ucV,&iIns);//插入内容和插入位置(插入位置由1开始)
if(ucV==0)
return 0;
if(iIns>iLen)
{
printf("err");
break;
}
fn(ucAry,iLen,iIns,ucV);
i=0;
while(i<iLen)
{
printf("%d,%u\n",i++,ucAry[i]);
}

}while(ucV!=0);
return 0;
}

int fn(unsigned char* ucAry,int iAryLen,int iInsPoint,unsigned char ucValue)
{
while(