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);}
新闻热点
疑难解答