Linuxc基礎 八
阿新 • • 發佈:2018-11-23
今天寫了幾個有趣的的程式,對於我來說這幾個程式是真的難。
程式碼
- 程式的題目內容:輸入一個整數a,再輸入兩個整數p1,p2(p1,p2<32),輸出該整數的二進位制表示方法中從右端開始的p1到p2位.
int jizh(int a,int p1,int p2) { int temp,i; if(p1>p2) { temp=p2; p2=p1; p1=temp; } for(i=p2;i>=p1;i--) { if(a>>(i-1)&1==1) { printf("1"); } else { printf("0"); } } } int main3() { int p1,p2; int a; scanf("%d%d%d",&a,&p1,&p2); jizh(a,p1,p2); return 0;
- 程式題目內容:輸入一個32位的整數a,使用按位異或^運算,生成一個新的32位整數b,使得該整數b的每一位等於原整數a中該位左右兩邊兩個bit位的異或結果
int jizh4(int a,int b) { int i; for(i=0;i<32;i++) { if(0==i||31==i) { b+=(((a>>i)&1)^0)<<i; } else { b+=(((a>>(i+1))&1)^((a>>(i-1))&1))<<i; } } return b; } int main() { int a; int b=0; scanf("%d",&a); printf("%d\n",jizh4(a,b)); return 0; }
總結
今天我寫的這兩個程式不找其他人程式參照的話我是真的寫不出來,一開始對題目意思不理解,之後理解了不知道怎麼寫程式。從這兩個程式也能反映出我的C語言的基礎以及邏輯思維不太好,但我相信熟能生巧以後多打程式我的C語言基礎就會慢慢的積累邏輯思維也會變的更好。