页:
[1]
|
菜鸟求助
在别的地方 看到一个一个有意思的代码但是自己用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: |
|
经过一天,作为菜鸟的我自己研究出来了,希望给和我一样的菜鸟打气,只要努力就会有收获。
上面的例子的确有问题,所以当初我很是迷惑。下面是我写好的
适合整型数组左移的代码:(如果你觉得写得乱,或者很简单,就不要浪费时间看了,本人菜,不好意思)
#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");
}
如果哪有说的不对的,还请大虾们多多关照
看完这个,有兴趣的可以试试写个右移,还有改写成字符串数组偏移。 |
|
哪个高手用c写个 strcpy的函数呀,带main方法 能打印出结果的
我老打印不出结果,请帮帮忙。 |
|
| 这个论坛c的真菜,以后还是混php把,鄙视这里会c的不回答的,你们看看php的气氛把 不说了伤心 |
|
char k[100];
char *kk="hello world";
strcpy(k,kk);
网上有C/C++函数参考手册,找到下一个吧,MSDN里也有,这里没什么人来的。 |
|
| 首先很感谢版主的发言,但是我要的是自己用c语言写strcpy的功能,不调用c语言自带的函数,我已经在别的论坛找到了.谢谢. |
|
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 |