1. 題目:輸入一個整數a,再輸入兩個整數p1,p2(p1,p2<32),輸出該整數的二進制表示
方法中從右端開始的p1到p2位.
#include<stdio.h>int exchange(int num) //將整數以二進制形式輸出{ int i; i = num % 2; if(num != 0 ) { num /= 2; exchange(num); //采用遞歸方法 } PRintf("%d",i);}int main(){ int num,p1,p2,temp; int mask = ~0; //掩碼補充位 int len = 0; printf("Please enter an integer:/n"); scanf("%d",&num); printf("Please enter two integer:/n"); scanf("%d%d",&p1,&p2); temp = num; while(temp) //判斷輸入的數有幾位 { temp /= 10; len++; } len = 8 * len; //總的位數 mask <<= (len - p2); //將掩碼p2左邊置0 mask >>= (len - p2); mask >>= (p1 - 1); //將掩碼p1右邊置0,得到p1~p2段為1 mask <<= (p1 - 1); num &= mask; num >>= (p1 - 1); //將區間移至最低位 exchange(num);}
新聞熱點
疑難解答