#include stdio.h
創(chuàng)新互聯(lián)是一家網(wǎng)站設(shè)計公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營產(chǎn)品:成都響應(yīng)式網(wǎng)站建設(shè)公司、高端網(wǎng)站設(shè)計、營銷型網(wǎng)站建設(shè)。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動的體驗,以及在手機等移動端的優(yōu)質(zhì)呈現(xiàn)。網(wǎng)站制作、成都網(wǎng)站設(shè)計、移動互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運營、VI設(shè)計、云產(chǎn)品.運維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認真對待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價值服務(wù)。
void fun(int value,int n,int dire)
{
if(dire==0) return;
int x=1(sizeof(int)*8-1);
int temp;
int i;
if(dire0)
{
for(i=0;in;i++)
{
temp=value1;
value=1;
if(temp) value|=x;
}
}
else
{
for(i=0;in;i++)
{
temp=value x;
value=1;
if(temp) value|=1;
}
}
}
void main()
{
int x=0x55555555;
fun(x,1,1);
printf("%x",x);
}
函數(shù)功能:將輸入字符串 src循環(huán)右移n位 result為輸出結(jié)果
要求:以效率最高的方式實現(xiàn)
示例:
“abcde” --2-- "deabc"
"abcde"--8--"cdeab"
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;?
}
}
默認只有算術(shù)右移。 要循環(huán)右移需要把最低位保存下來, 然后賦值到最左。
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"
int myfun(int m,int n){//十進制循環(huá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("你輸入的數(shù)是: %d\n",n);
printf("右移%d位后是: %d\n",m,myfun(n,m));
return 0;
}