C语言如何输入一个数值(int,float,double,char,long),以二进制的形式输出?

#include<stdio.h>
#include<stdlib.h>
#define NUM 2
#define ZERO 0.000001
//整数部分的转换
void integer(int n)
{
if (n > 0)
{
integer(n / NUM);
printf("%d", n%NUM);
}
}
//小数部分的转换
void decimal(double m)
{
if (m > ZERO)
{
m = m * NUM;
printf("%d", (long)m);
decimal(m - (long)m);
}
}
int main()
{

double f;
long n;

printf("pls enter ur double:");

scanf("%lf", &f);
if (f < 0)
{
printf("-");
f = -f;
}
n = (long)f;//整数部分
printf("is:", NUM);
integer(n);
printf(".");
decimal(f - n);//小数部分的转换
printf("\n");
system("pause");
return 0;
}
这个只能输出小数的,怎么修改一下呢

#include<stdio.h>
void prt(char *p)
{int i;
 for(i=7;i>=0;i--)
   printf("%d",(*p & (1<<i))>0);
}
int main()
{ char c=122;
  int i=123,j;
  long a=124;
  long long b=125;
  float x=19.375;
  double y=19.375;
  char *p;
  p=&c; printf("c="); prt(p); printf("\n");
  p=(char*)&i; printf("i="); 
  for(j=sizeof(i)-1;j>=0;j--) prt(p+j); printf("\n");
  p=(char*)&a; printf("a="); 
  for(j=sizeof(a)-1;j>=0;j--) prt(p+j); printf("\n");
  p=(char*)&b; printf("b="); 
  for(j=sizeof(b)-1;j>=0;j--) prt(p+j); printf("\n");
  p=(char*)&x; printf("x="); 
  for(j=sizeof(x)-1;j>=0;j--) prt(p+j); printf("\n");
  p=(char*)&y; printf("y="); 
  for(j=sizeof(y)-1;j>=0;j--) prt(p+j); printf("\n");  
  return 0;
}

追问

能改成输入一个任意的值,然后输出二进制吗?

追答

可以呀,只要第15行前,增加一个scanf()语句,读入相应的变量,就可以了。

追问

不是,我的意思是,输入一个任意值,然后函数判断这个是数字还是字符,然后自动输出,我前面试了一下if语句,没啥用

追答

不可以的。不论你是输入字符、整数或是浮点数,系统从键盘上得到的都是“字符”,具体要看你用什么格式去解读它、以及程序把它存放到什么类型的变量中去。不能混错的。

追问

懂了,那你看一下我那串代码,我一输入char就报乱码,能帮我修改一下吗

追答

不懂。拍个照片上来?你的程序只能转换数字的。要转换字符,就要增加一段程序。

追问

对,我就是想问加的那一段怎么加。。。。

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言如何输入一个数值(int,float,double,char,long),以二进制的形式输...
include<stdio.h>void prt(char *p){int i; for(i=7;i>=0;i--) printf("%d",(*p & (1<0);}int main(){ char c=122; int i=123,j; long a=124; long long b=125; float x=19.375; double y=19.375; char *p; p=&c; printf("c="); prt(p); print...

C语言中怎么输入一个实数,并输出double型在内存中的存储二进制表示
float a = 1.2;printf("%08x", *((unsigned int*)&a));

c#输入double型的数据怎么输出?
1、双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\\n",x);2、short 占用内存空间2个字节,短整型数据用%d输出 例如:printf("%d\\n",a);例如:include <stdio.h> int main(){double x;sh...

c语言如何输入数字?
类似的,如果是float, double,short,long等类型的数据,那么就要把变量定义成对应的类型,然后使用各自的格式字符%f,%lf,%hd,%ld等进行输入。二、输入单个字符。输入单个字符可以用以下两种函数。定义char c;1 scanf("%c", &c);这种方法和输入数字是类似的,%c仅读入一个字符,并赋值给c。2 c =...

c语言中double、 float怎么输出?
1.双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\\n",x);2.short 占用内存空间2个字节,短整型数据用%d输出 例如:printf("%d\\n",a);例:include <stdio.h> int main(){double x;short...

c语言中如何格式化输入或输出数据?
1、%d表示输入或输出十进制有符号数;2、%f表示输入或输出浮点数(float,四字节表示);3、另%lf表述输入或输出双精度浮点数(double 8字节表示);4、在输出不同数据时要用不同的的格式字符,比如说这个%d是用来输出十进制整型数据的实际长度输出;%f是以小数形式输出单、双精度度数,隐含输出6位...

求C语言中int ,long int,char,float,short,DWORD,WORD,BYTE,byte的...
int,long占用4字节,short占用2字节……16位系统中,int占用2字节,……数字3占用多少,和你声明的的类型有关,在32位系统中,将3赋值给short型变量,他就占用2个字节,如果赋值给int型,他就占用4个字节 可以用sizeof这个函数来计算。例子:int x, n;n = sizeof(x);n的值就是结果。

用C语言的朋友,请问如何将一个10进制的数以二进制的形式输出?
用函数 int num = 1032;char outstring[100];itoa(num, outstring, 2);printf(outstring);第3个参数表示所用的进制,同理可以改成其它进制 Good Luck!

C语言中想输出double和long double型用%什么?
1、%f 是输出 float 型变量;%f 是输出 double 型变量;%Lf 是输出 long double 型变量。2、在C语言中,对于数值类型只有通过printf类函数输出这一种方式,比如printf, sprintf, fprintf等。这类函数输出时要求有格式符号,其中long double的格式符号为%Lf。以下是一个简单的参考代码,输出到标准输出...

C语言int float long double的问题
int -- TC 编译器处理为 short int, 16位2进制整数.其它编译器处理为 long int, 32位2进制整数.float -- 32位2进制浮点数,有效数字共 7 位.double -- 64位2进制浮点数,有效数字共 14-15 位.long -- long int, 32位2进制整数.double a; scanf("%lf",&a); printf("%lf",a);lo...

相似回答