C语言平移函数 c语言的移位运算

c语言改错,要求实现数据平移。谢谢哈。

mov 函数中使用了指针 b,但未对它赋值,它指向的内存是未知的,因此出错。

创新互联专业为企业提供微山网站建设、微山做网站、微山网站设计、微山网站制作等企业网站建设、网页设计与制作、微山企业网站模板建站服务,十年微山做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

要实现数据平移,比较简单的方法是先将它复制一份,再平移。这样, mov 函数可写为

void mov(int *x,int n,int m)

{

int *b, i, j;

b = (int *)calloc(n, sizeof(int));

if (b == NULL) {

printf("allocate memory failed!\n");

exit(0);

}

memcpy(b, x, n*sizeof(int));

for (i=0; in; i++) {

j = (i+n-m)%n;

x[i] = b[j];

}

free(b);

}

程序中用到了内存分配的函数及内存复制函数,因此需要包含 stdlib.h 和 string.h 库。

C语言数组平移问题

int a[8] = {xxxxxx};

int b[8];

int m;

int i, j = 0;

scanf("%d",m);

for(i = m;i8;i++)

{

b[j++] = a[i];

}

for(i = 0;im;i++)

{

b[j++] = a[i];

}

利用c语言怎样对bmp图像进行平移的操作?

位图平移没有这方面的库函数,必须自己来实现,下面是位图平移的参考代码:

#include "stdafx.h"

#includewindows.h

#includestdio.h

#includemath.h

int _tmain(int argc, _TCHAR* argv[])

{

int width;

int height;

RGBQUAD *pTableColor;

unsigned char *pBmpBuf1,*pBmpBuf2;

BITMAPFILEHEADER bfhead;

BITMAPINFOHEADER bihead;

//读出源图像的信息

FILE *fpr=fopen("E:\\picture\\dog.bmp","rb");

if(fpr==0)

return 0;

fread(bfhead,14,1,fpr);

fread(bihead,40,1,fpr);

width=bihead.biWidth;

height=bihead.biHeight;

int LineByte=(width*8/8+3)/4*4;

pTableColor=new RGBQUAD[256];

fread(pTableColor,sizeof(RGBQUAD),256,fpr);

pBmpBuf1=new unsigned char[LineByte*height];

fread(pBmpBuf1,LineByte*height,1,fpr);

fclose(fpr);

//将处理后的图像赋值为白色

pBmpBuf2=new unsigned char[LineByte*height];

for(int i=0;iheight;i++)

for(int j=0;jwidth;j++)

{

unsigned char *p;

p=(unsigned char*)(pBmpBuf2+LineByte*i+j);

(*p)=255;

}

//左右平移功能的实现

int t;

printf("请输入左平移或右平移的大小t(左移t0,右移t0):");

scanf("%d",t);

int k=abs(t);

printf("%d",k);

if(t0)

{

if(t=(-width))

{

for(int i=0;iheight;i++)

for(int j=0;j(width-k);j++)

{

unsigned char *p1,*p2;

p1=pBmpBuf1+LineByte*i+j+k;

p2=pBmpBuf2+LineByte*i+j;

(*p2)=(*p1);

}

}

}

else

{

if(t=width)

{

for(int i=0;iheight;i++)

for(int j=k;jwidth;j++)

{

unsigned char *p1,*p2;

p1=pBmpBuf1+LineByte*i+j-k;

p2=pBmpBuf2+LineByte*i+j;

(*p2)=(*p1);

}

}

}

//保存处理后的图像

FILE *fpw=fopen("dog.bmp","wb");

fwrite(bfhead,14,1,fpw);

fwrite(bihead,40,1,fpw);

fwrite(pTableColor,sizeof(RGBQUAD),256,fpw);

fwrite(pBmpBuf2,LineByte*height,1,fpw);

fclose(fpw);

return 0;

}

新闻标题:C语言平移函数 c语言的移位运算
标题URL:https://www.cdcxhl.com/article12/hjipgc.html

成都网站建设公司_创新互联,为您提供小程序开发品牌网站建设标签优化定制开发微信公众号建站公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作