1. c語言數組的左移函數
//下面是將數組左移的函數void fun(char *a, int *length)//length為字元串a的長度{ for(int i = 0; i < length - 2; i++) { a[i] = a[i+2]; }*length = (*length) - 2; } //如果只是輸出左移兩位的結果,可以用下面這個函數void fun(char *a, int length){ for(int i =2; i < length; i++) { printf("%c",a[i]); }}
2. C語言編程題:移位函數,既能循環左移又能循環右移
#include<stdio.h>
#include<math.h>
unsignedfun(unsignednum,intn)
{
if(n>0)
{
//sizeof(unsigned)*8計算變數所佔位數,如int型佔32位
return(num>>(sizeof(unsigned)*8-n))|(num<<n);//先高位移動,再低位移動後,兩者按位或,相當把低位溢出的又添加到了高位,實現了循環的效果
}
else
{
return(num<<(sizeof(unsigned)*8-abs(n)))|(num>>abs(n));
}
}
voidmain(void)
{
printf("%u ",fun(2,-34));
}
3. C語言51單片機左移函數的問題
m==0xfe你這個是什麼意思,不對吧
m<<=1這個不對
m<<1左移不是循環移位,左移後最右邊可能是補零的
4. C語言控制上下左右的函數是什麼
希望這個能對你有幫助:#include
#include
int
main(void){
int
c
;
while(1){
c
=
getch();
if(c==0)
c=getch();
//
getch在遇到方向鍵時會返回0
再使用getch便會返回掃描碼
if(
c
==
72
)
printf("UP\n");
//
我幫你把上下左右數據調出來
你用的時候define成
UP來使用這個值就可以了
if
(
c
==
80)
printf("DOWN\n");
if
(
c
==
75)
printf("LEFT\n");
if
(
c
==
77)
printf("RIGHT\n");
if(c
==
113)
//按q退出
break;
}
return
0;
}
5. C語言中左移函數和右移函數分別是什麼,使用格式是什麼
C語言總並沒有左移函數和右移函數。左移和右移是位運算符,僅僅適用於整數型的數據。
6. 單片機C語言 的循環左右移動 函數問題。
首先對比一下 左邊與右邊 那裡有不同 同時 程序不同對應的輸出結構有哪些不同。。
P2口 連接8個LED 低電平驅動使其發光。
P2=0xfe //上電 P2.0連接的 LED發光。 其餘的熄滅。
對比一下程序
void main() //主函數
{
P2=0xfe; //P2初始化
while(1) //死循環
{
num=P2; //這里 與左邊不同 把P2的狀態給 NUM 也就是0XFE num=0xfe
P2=_crol_(num,1); //P2等於num 循環左移 P2=0xef 這時應該是連接的P2.7的LED發光
delay(0);//延遲
}
}
左邊 代碼 NUM 每次大循環 都賦值 num=0xfe 是固定的 所以不管你以後怎麼移動 P2口的輸出都是不變得 只移動了一次。。
7. C語言中函數參數壓棧方式為什麼是從右到左的
因為有些是不定參數的
這樣函數內 在處理的時候 從左到右 會更方便。
根據前面的參數 來確定後面還有多少參數 這樣。
要函數內部彈棧從左到右
那麼壓棧就只能從右到左了。
8. 如何用c語言實現循環左移
循環左移時,用從左邊移出的位填充字的右端,而循環右移時,用從右邊移出的位填充字的左側。這種情況在系統程序中時有使用,在一些控製程序中用得也不少。設有數據說明:
a=01111011,循環左移2位 正確結果: 11101101
過程:
b=a>>(8-2) 用來得到正常左移丟失的位和循環移位後其正確位置 b=00000001;
a=a<<2;左移 a=11101100
a=a|b; a=11101101
如果不是用中間變數 a=(a>>(8-2))|(a<<2)
總長度N(8 16 32)
循環左移n: (a>>(N-n))|(a>>n)
循環右移n: (a<<(N-n))|(a>>n)
C語言的位運算功能是其區別於其他大多數高級程序設計語言的特色之一,用它可以方便實現一些特殊功能,靈活掌握是用C程序編寫系統程序的基礎。
(8)左函數c語言擴展閱讀:
C語言高效編程技巧:
一:以空間換時間
計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題
二:數學方法解決問題
數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。
三:使用位操作
實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。
在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效提高程序運行的效率。
9. C語言 入棧順序為什麼函數入棧順序從右往左
C語言函數參數入棧順序從右到左是為了方便可變參數函數。
一、在函數調用時,函數參數的傳遞,在C語言中是通過棧數據結構實現的。
在調用函數時,先根據調用函數使用的參數,自右向左依次壓入棧中,然後調用函數,在函數開始執行時,將參數再依次彈棧。根據棧數據結構先進後出的特點,在函數中彈棧的順序就是從左向右的。
二、對於參數固定的函數,無論是從左向右還是從右向左,都沒什麼區別,最終都是所有參數全部傳遞。
三、對於可變參數,比如printf,會在第一個參數格式字元串中,指明後續有幾個參數,各自是什麼類型的。於是在函數中,參數格式字元串必須第一個彈棧,否則無法獲取參數類型,也就無法獲知後續參數占幾個位元組,導致無法正確獲知參數。
四、理論上來說,如果從左向右壓棧,可變參數標記格式字元串的參數放在最後,那麼也是可以的。 不過最早設計C語言的人採用了這種方式,後續也就延續下來了。
10. C語言:寫一個函數用來實現左右循環移位。
既然是循環移位,這里的n沒意義。