计算机中实现10进制转换成二进制c编程

2019-04-14 21:34发布

  • 方法1(代码附上,暂时未行通,有兴趣可以修改一下)
  • #include
int dectobe(int n) { int temp=n; int k=1; int result=0; int i; while(temp) { i=temp%2; result=k*i+result; k=k*10; temp=n/2; printf("%d ",result); } printf("%d ",result); return result; } int main(int argc, char const *argv[]) { int n=15; int result; //printf("input number "); //scanf("%d",&n); //getchar(); result=dectobe(n); printf("%d ",result ); return 0; } 算法分析:
在实现模2取余后需要逆序输出,这个地方通过不断乘以10来实现后一位比前一位的位数多10,不需要再通过数组或者逆序函数来实现。
  • 方法2
#include void dectobe(int n) { int i=0; int a[32]={0}; while(n) { a[i++]=n%2; n/=2; } for(i = i-1; i >=0; i--)//注意不要重复定义i的类型 { printf("%d",a[i]);//%d后不要加 换行符,不然每一个二进制位都会换行 if(i%4==0) //为了美观,四个二进制空一个空格 printf(" "); } printf(" "); } int main(int argc, char const *argv[]) { int n; printf("input number "); scanf("%d",&n); //getchar();吃掉垃圾字符是用于吃掉上次使用留下的回车。如果接下来还有一个scanf函数,在函数前用getchar吃掉,或者用%*c抑制符。对于int类型的无需吃掉,char类型的要吃掉。 dectobe(n); return 0; } //2013年华为c语言上机试题2
//计算一个整数二进制表达式中0的个数
  • 方法1
#include int count(int n) { int count=0; while(n) { n/=2; count++; } return (count-1);//count++之后多加了一个,要减去 } int main(int argc, char const *argv[]) { int n; printf("input number "); scanf("%d",&n); printf("%d ",count(n)); return 0; }
  • 方法2
  • 先说一下scanf的返回值
    scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
    如:scanf("%d %d",&a,&b);函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;如果只有a被成功读入,返回值为1;如果a和b都未被成功读入,返回值为0;如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。
#include //计算整数中0的个数,下面的方法用移位的操作,更加简单一些 /*void numzero(int k, int*zeronum) { int i; int remin; int inter; (*zeronum) = 0; i = k; inter = i / 2; remin = i % 2; while(inter) { if(remin == 0) { (*zeronum)++; } remin = inter % 2; inter = inter / 2; } }*/ void numzero(int k, int*zeronum) { (*zeronum) = 0; while(k != 0) { if((k & 1) == 0) { (*zeronum)++; } k >>= 1; } } void main() { int i; int temp; int num = 0; printf("请输入一个整数 "); temp = scanf("%d", &i); while(temp == 1) { numzero(i, &num); printf("%d的二进制数中0的个数为%d ", i, num); printf("请输入下一个整数,输入其它字符结束 "); temp = scanf("%d", &i); } }