xx[12]={0,0,0,0,1,1,1,0,1,1,1,0}//double型
yy[12]={0,0,0,0,1,1,1,0,1,1,1,0}
for(i=0;i<4;i++)
{
for(j=0;j<2;j++)
{
y[j]=xx[j];
printf("\nthis is y=%lf\n",y[j]); }
for(j=0;j<1;j++){
d[j]=yy[j];
printf("\nthis is d=%lf\n",d[j]);
}
}想实现每次i循环,xx[],yy[]就把xx[0]-xx[j],yy[0]-yy[j]的值放到最后边,并且后面的数前移。也就是是说xx[],yy[]数组是时刻循环的。例如
以xx[]为例:
xx[0],xx[1],xx[2],xx[3],xx[4],xx[5],xx[6].....xx[11]
第一次循环后得到如下新数组
xx[2],xx[3],xx[4],xx[5],xx[6].....xx[11],xx[0],xx[1]请问怎样实现,谢谢
我c程序不懂。基本想法是这样的
yy[12]={0,0,0,0,1,1,1,0,1,1,1,0}
for(i=0;i<4;i++)
{
for(j=0;j<2;j++)
{
y[j]=xx[j];
printf("\nthis is y=%lf\n",y[j]); }
for(j=0;j<1;j++){
d[j]=yy[j];
printf("\nthis is d=%lf\n",d[j]);
}
}想实现每次i循环,xx[],yy[]就把xx[0]-xx[j],yy[0]-yy[j]的值放到最后边,并且后面的数前移。也就是是说xx[],yy[]数组是时刻循环的。例如
以xx[]为例:
xx[0],xx[1],xx[2],xx[3],xx[4],xx[5],xx[6].....xx[11]
第一次循环后得到如下新数组
xx[2],xx[3],xx[4],xx[5],xx[6].....xx[11],xx[0],xx[1]请问怎样实现,谢谢
我c程序不懂。基本想法是这样的
解决方案 »
- 一个从_variant_t到其他类型变量的转换函数vartostr()的怪异问题
- 通过另一程序调用 dll, 怎么获得 dll 的 hinstance
- CDialog怎么设置窗体的初始大小和位置?怎么获得屏幕的长宽?
- 怎样让对话框运用程序,最小化的时候,不去最小化,而是隐藏窗体?
- 共享数据的互斥访问 解决马上给分!
- 低层socket通讯,文件传输高效率传输,求助好的模型~~~~~~~~~~在线!!
- 急!触发CTreeCtrl的单选框的事件是什么,哪位大哥知道?
- VC6中一个很困扰问题,编译不成功,DEBUG方式编译成功,却有问题?何解?
- 为什么我不能使用MSN和NETMEETING的视频传输和语音传输
- 一个问题请GDI高手回答
- VC的SDK编程, 用VC写一个类似文本记事本的程式,为何读不出*.TXT 文件
- VC字符串输出求助
for(int i = 0; i < n; i++) //move n
{
dTemp = xx[0];
for(int j = 1; j < 12; j++)
xx[j-1] = xx[j];
xx[j] = dTemp;
}
double dTemp1 = 0;
double dTemp2 = 0;dTemp1 = xx[0];
dTemp2 = xx[1];for(int i=2; i < 12-2; i+2)
{
xx[i-2] = xx[i];
xx[i-1] = xx[i+1];
}
xx[10] = dTemp1;
xx[11] = dTemp2;
2。C中定长数组的长度可以获得,但是对你没用。
3。在使用指针时,判断该指针为空可以采用 p==NULL来判断
4。C中不能直接判断你是否使用了数组中的某一位,除非你自己加以记载或标记
就 实现每次i循环,xx[],yy[]就把xx[0]-xx[j],yy[0]-yy[j]的值放到最后边,并且后面的数前移。也就是是说xx[],yy[]数组是时刻循环的代码如下:
A)xx yy数组长度固定 或者你开辟足够大的数组空间
long xx[1024],yy[1024],l_tmp,l_tmpindex;
long xx_len ,yy_len;
int i,j ;
..........
............
xx_len = 10 ;
yy_len = 20 ;for( i = 0 ; i < 5 ; i ++)
{
for( j = 0 ;j < 2 ; j ++)
{
if ( j >= xx_len ) break ;
l_tmp = xx[0];
for( l_tmpindex = 1 ; l_tmpindex < xx_len ; l_tmpindex ++ )
xx[l_tmpindex-1] = xx[l_tmpindex];
xx[l_tmpindex] = l_tmp ;
} for( j = 0 ;j < 2 ; j ++)
{
if ( j >= yy_len ) break ;
l_tmp = yy[0];
for( l_tmpindex = 1 ; l_tmpindex < yy_len ; l_tmpindex ++ )
yy[l_tmpindex-1] = yy[l_tmpindex];
yy[l_tmpindex] = l_tmp ;
}}
for(j = 0; j < 2j++) //move n
{
dTemp = xx[j];
for(k = 1; k < 12; k++)
{ xx[k-1] = xx[k];}
xx[k] = dTemp;
}
区别在于 你使用了
dTemp = xx[j];
此处应该写为 dTemp=xx[0];!!!!!!!!!!!!!!!
哦,我写错了,实际程序是
for(j = 0; j < n[layernum-1]; j++) //move n
{
//dTemp = xx[j];
for(k = 1; k < 12; k++)
{ xx[k-1] = xx[k];}
xx[k] = dTemp;//这个地方对不对?
}
你的代码应该如下:
for(j = 0; j < n[layernum-1]; j++) //move n
{
dTemp = xx[0]; //此处保存第一个值,此处必须有,因为每次循环后xx[0]的值是变化的!!
for(k = 1; k < 12; k++)
{ xx[k-1] = xx[k];} //此处将后面的值移到前面,对的
xx[k] = dTemp;//这个地方对不对? 队的
}
{
long *pTmp ;
long lIndex , lMaxLen ;
if (NULL == XX) return ;
if( dLength <= 0 || dMoveNum <= 0 ) return ;
while( dMoveNum > dLength ) dMoveNum -= dLength ;
//下面采用内存方式快速平移
pTmp = malloc(dLength * sizeof(long));
memcpy(pTmp , (unsigned char*)XX + dMoveNum*sizeof(long) , (dLength-dMoveNum)*sizeof(long) );
memcpy((unsigned char *)pTmp + (dLength-dMoveNum)*sizeof(long) , XX , dMoveNum*sizeof(long) );
memcpy(XX,pTmp,dLength);
}
此时XX的数量,有效的长度都可以通过参数传入,你的代码中dMoveNum = 2 dLength=12