喜悦国际村 » JAVA/C/C++ » 菜鸟求助

页: [1]
jxg9452005-9-2 05:19 AM
菜鸟求助

在别的地方 看到一个一个有意思的代码但是自己用main调用老有错误,请高手帮忙,写个有main函数的能直接编译运行的代码

将n个元素的数组向左旋转i个位置(循环旋转)。
比如abcdefg向左旋转3个位置就是defgabc。
写简单的代码实现。

void recl(int *c,int n,int i)//c这数组,n为数组大小,i为起始位置
{
    int *buf = new int[n];
    memcpy(buf,c+i,n-i);
    memcpy(buf+n-i,c,i);
    memcpy(c,buf,n);
    delete[] buf;
    return;
}

谢谢大虾们 :blowzy:

jxg9452005-9-3 09:06 AM
经过一天,作为菜鸟的我自己研究出来了,希望给和我一样的菜鸟打气,只要努力就会有收获。
上面的例子的确有问题,所以当初我很是迷惑。下面是我写好的
适合整型数组左移的代码:(如果你觉得写得乱,或者很简单,就不要浪费时间看了,本人菜,不好意思)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void my_game(int *c,int k,int j)   
  {
      int *buf;
      buf =(int *)malloc(k);
      if (buf == NULL){
        printf("没有分配内存\n");
        exit(1);
      }
      memcpy(buf,c+j,sizeof(int)*(k-j));  //这三句思想不错,注意的是
      memcpy(buf+k-j,c,sizeof(int)*j);    //memcpy每个参数的意义!
      memcpy(c,buf,sizeof(int)*k);        //这也就是作者错误的地方,
  }                                                      //困扰了我很久。
  
int main(){
  int i;
  int j=4;    //你要4移的个数
  int b[] = {2,3,4,54,6,12,23,56};//整形数组,自己随便写
  int n;
  n =(sizeof(b))/(sizeof(int));   //数组的个数
  for(i=0;i<n;i++)
  {
    printf("%d ",b[i]);  
  }  
  printf("\n");
  
  my_game(b,n,j);  //调用上面的函数  这里带入的是实参
  
  for(i=0;i<n;i++)
  {
    printf("%d ",b[i]);
  }
  printf("\n");
}
如果哪有说的不对的,还请大虾们多多关照
看完这个,有兴趣的可以试试写个右移,还有改写成字符串数组偏移。

jxg9452005-9-13 05:47 AM
哪个高手用c写个 strcpy的函数呀,带main方法  能打印出结果的
我老打印不出结果,请帮帮忙。

jxg9452005-9-14 11:43 AM
这个论坛c的真菜,以后还是混php把,鄙视这里会c的不回答的,你们看看php的气氛把  不说了伤心

雨伞2005-9-16 09:55 AM
char k[100];
char *kk="hello world";
strcpy(k,kk);

网上有C/C++函数参考手册,找到下一个吧,MSDN里也有,这里没什么人来的。

jxg9452005-9-17 08:29 AM
首先很感谢版主的发言,但是我要的是自己用c语言写strcpy的功能,不调用c语言自带的函数,我已经在别的论坛找到了.谢谢.

jxg9452005-9-17 08:43 AM
my_strcpy(char *dst,const char *src){
   if((dst==NULL) || (src==NULL))
       printf("array error");
   char *temp = dst;
   while((*dst++ = *src++)!='\0')
       continue;
       return temp;
}


查看完整版本: 菜鸟求助


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.006264 second(s), 2 queries