unsigned char crol(unsigned char c,unsigned b)
{ //左移
unsigned char left;left=cb;
unsigned char right;right=c( sizeof (unsigned char )-b) ;
return left|right;
}
unsigned char cror(unsigned char c,unsigned b)
{ //右移
unsigned char right;
right =cb;
unsigned char left ;
left=c( sizeof (unsigned char )-b) ;
return left|right;
默认只有算术右移. 要循环右移需要把最低位保存下来, 然后赋值到最左.
unsigned?int?func(unsigned?int?n)
{
unsigned?int?v=n1;
n=1;
if(v)?n|=1(sizeof(unsigned?int)-1);
return?n;
#include?stdio.h
#include?math.h
unsigned?fun(unsigned?num,?int?n)
if(n?0)
}?
else?
void?main(void)?
函数功能:将输入字符串 src循环右移n位 result为输出结果
要求:以效率最高的方式实现
示例:
void right_shift_r(const char* src,char* result,unsigned int n)
? ? ? unsigned int len = strlen(src);
int i=0;
? ? ? for(i=0;ilen;i++)
? ? ? ? ? ? ? result[i] = src[i+n]%len;?
#include stdio.h
void fun(int value,int n,int dire)
if(dire==0) return;
int temp;
int i;
if(dire0)
for(i=0;in;i++)
temp=value1;
value=1;
if(temp) value|=x;
else
temp=value x;
if(temp) value|=1;
void main()
fun(x,1,1);
printf("%x",x);
代码文本:
#include "stdio.h"
int myfun(int m,int n){//十进制循环右移
int tmp,i;
for(tmp=m,i=0;tmp;i++,tmp/=10);
if((n%=i)0) n+=i;
for(tmp=i-n,i=1;tmp;i*=10,tmp--);
for(tmp=n,n=1;tmp;n*=10,tmp--);
return m%n*i+m/n;
int main(int argc,char *argv[]){
int n,m;
printf("Please enter n m(int 0n,m1000000000)...\n");
scanf("%d%d",n,m);
printf("你输入的数是: %d\n",n);
printf("右移%d位后是: %d\n",m,myfun(n,m));
return 0;
以上就是土嘎嘎小编为大家整理的c语言循环右移的库函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!