C语言十进制转化为二进制

来源:百度知道 编辑:UC知道 时间:2024/04/30 11:48:27
原题是这样的,编写一个函数,输入一个十进制数,输出相应的二进制数.
请告诉我十进制转化为二进制,整数、小数、负数的运算原理分别是什么。
请再将完整的C语言代码写在下面,辛苦了。
顺便帮我看看这个程序哪里出问题了,怎么把double换成float就可以运行了呢?
#include "stdio.h"
main()
{ double score[3],av=0;
int i;
for(i=0;i<3;i++)
scanf("%f",&score[i]);
for(i=0;i<3;i++)
{ if(score[i]<60)
av+=score[i];
}
printf("不及格者的成绩总合为%f",av);
}
楼下的大哥们,辛苦你们了,可各位似乎都没看懂我的题意。
1.我要求写出程序;
2.我要求使用C语言,而不是C++。本来这个程序也不应该使用指针的,因为第五章还没学指针了。
3.重点是要小数和负数部分,整数的我自已也会啊。
希望各位能把题看清楚了再回答。

位权是转换的核心,比如说,二进制的位权是2的n次方,就是说将需转换的数除以2取余数组成的0,1串即为所求了(倒排)
实现该功能如下:
#include<stdio.h>
main()
{int i,j,k=0,AA[50];/*数组用来存放余数*/
printf("Input:\t");/*命令提示输入一个数*/
scanf("%d\n",&i);
while(1)
{ j=i%2;
i=i/2;
AA[k++]=j;
if(i==0) break; /*i==0时,跳出循环,结束运算*/
}
printf("Output:\t");/*命令提示输出运算结果*/
for(k=k-1;k>=0;k--)
printf("%d",AA[k]);
}

由于时间仓促,程序可能有不足的地方,望见谅!

整数部分除2取余,逆序输出
小数部分乘2取整,顺序输出

#include<iostream.h>
#include<math.h>

void f1(int m, int n) { //转整数部分
if(m) { f1(m/n,n);
if(n<10) cout<<m%n;
else m%n>=10? cout<<char(m%n-10+'A') : cout<<m%n;
}
}

void f2(double m, int n) { //转小数部分
while(m) { if(n<10) cout<<int(m*n);
else m*n>=10? cout<<char(int(m*n)