编一个c程序:将一维数组中元素向右环移N位

编一个c程序:将一维数组中元素向右环移N位,第1张

#include<stdlib.h>

void

rightmove(

int

x[],

int

length

)

int

main(void)

{

int

a[10]={1,2,3,4,5,6,7,8,9,0}

int

count,n,len=10

//

右移位数n,len不应该这样得到,我懒得算

printf("Input

n:\n")

scanf("%d",&n)

for(count=0

count<n%10

count++)

{

rightmove(

a,

len)

}

for(

count=0

count<len

count++

)

printf("%d

",

a[count])

printf("\n")

//

注释掉的这2行是我调试用的,别管

//

rightmove(

a,

10)

//

printf("%d

%d",

*a,

n)

return

0

}

void

rightmove(

int

x[],

int

length

)

{

int

*tmp=NULL,

i

tmp=(int*)malloc(sizeof(int))

for(i=length-1

i>0

i--)

{

*tmp=*(x+i)

*(x+i)=*(x+i-1)

*(x+i-1)=*tmp

}

free(tmp)

tmp=NULL

}

我不知道我理解的对不对,环移1位就是所有成员向右移动1位,最后1位到最前面来。

main函数就是用来测试的,函数rightmove就是把整形数组向右移动1位,形参是数组首地址和数组长度。

main函数输入N,rightmove循环N次。数组只有10个成员,你可以重新定义。

CODE SEGMENT

BUF DB16 DUP(?)

START: PUSH CS

POP DS

PUSH CS

POP ES

LEA SI,BUF

MOV AL,[SI+15]

RCR AL,1

RCR BYTE PTR[SI],1

RCR BYTE PTR[SI+1],1

RCR BYTE PTR[SI+2],1

RCR BYTE PTR[SI+3],1

RCR BYTE PTR[SI+4],1

RCR BYTE PTR[SI+5],1

RCR BYTE PTR[SI+6],1

RCR BYTE PTR[SI+7],1

RCR BYTE PTR[SI+8],1

RCR BYTE PTR[SI+9],1

RCR BYTE PTR[SI+10],1

RCR BYTE PTR[SI+11],1

RCR BYTE PTR[SI+12],1

RCR BYTE PTR[SI+13],1

RCR BYTE PTR[SI+14],1

RCR BYTE PTR[SI+15],1

MOV AH,4CH

INT 21H

CODE ENDS

END START


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7995879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存