标题:我写的一个正整数变为二进制的程序
只看楼主
枯藤天涯
Rank: 1
等 级:新手上路
帖 子:99
专家分:0
注 册:2007-4-25
结帖率:100%
 问题点数:0 回复次数:14 
我写的一个正整数变为二进制的程序
#include<stdio.h>
void main()
{
int n,a[16],i,k,j=0;
float m;
printf("Enter the number:\n");
scanf("%d",&i);
if((i>=0)&&(i<=31767))
{
if(i==o) printf("Code:0\n");
if(i==1) printf("Code:1\n");
do
{
j++;
m=i/2.0;
n=(int)m;
if(m==n)
a[16-j]=0;
else
a[16-j]=1;
i=n;
}
while(i==1);
a[15-j]=1;
for(k=0;k<15-j;k++)
a[k]=2;
printf("Code:");
for(k=0;k<16;k++)
{
if(a[k]!=2) printf("%d",a[k]);
}
}
else
printf("Error!");
}
望指正!
搜索更多相关主题的帖子: 二进制 整数 void int 
2007-04-29 14:49
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
得分:0 
if(i==o) printf("Code:0\n");
if(i==1) printf("Code:1\n");

要写成

if(i==0) printf("Code:0\n");
else if(i==1) printf("Code:1\n");

自我放逐。。。
2007-04-29 14:54
雾雨
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-4-29
得分:0 
看不懂啊!能不能解释一下啊?
2007-04-30 10:21
洛川
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-4-28
得分:0 
运行了一下,结果不符合预期
Enter the number:
23
Code:11

2007-04-30 15:54
linuxbabya
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-19
得分:0 
#include<stdio.h>
void main()
{
int n,a[16],i,k,j=0;
float m;
printf("Enter the number:\n");
scanf("%d",&i);
if((i>=0)&&(i<=31767))
{
if(i==0) printf("Code:0\n");
if(i==1) printf("Code:1\n");
do
{
j++;
m=i/2.0;
n=(int)m;
if(m==n)
a[16-j]=0;
else
a[16-j]=1;
i=n;
}
while(i!=1); /*你条件判断错误了*/
a[15-j]=1;
for(k=0;k<15-j;k++)
a[k]=2;
printf("Code:");
for(k=0;k<16;k++)
{
if(a[k]!=2) printf("%d",a[k]);
}
}
else
printf("Error!");
}
2007-04-30 19:44
linuxbabya
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-19
得分:0 
层次感有点差,看的费劲给你改了改。
#include<stdio.h>
void main()
{
int n,a[16],i,k,j;
float m;
printf("Enter the number:\n");
scanf("%d",&i);
if(i==0) printf("Code:0\n");
else if(i==1) printf("Code:1\n");
else if((i>1)&&(i<=31767))
{
for(j=1;j<=16;j++)
{
m=i/2.0;
n=(int)m;
if(m==n)
a[16-j]=0;
else
a[16-j]=1;
i=n;
if(i==1)
{
a[15-j]=1;
printf("Code:");
for(k=15-j;k<16;k++)
{
printf("%d",a[k]);
}
}
}
}
else
printf("Error!");
}
2007-04-30 20:00
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
得分:0 
/*将0~4294967295之间的
整数按2进制形式显示出来
注意:TC或VC6.0都能运行
*/
#include <stdio.h>
main( )
{
unsigned long i;
char bits[33]="\0";
int k=32;
scanf("%lu",&i);
do
{
bits[--k]=(char)('0'+i%2);
i=i/2;
}
while(i);
printf("Code:%s\n",&bits[k]);
}
2007-05-01 09:28
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
得分:0 
/*将小于2的64次方也即小于18446744073709551616
的正整数按2进制形式显示出来.注意在VC6.0下运行
*/
#include <stdio.h>
main( )
{
unsigned __int64 i;
char bits[65]="\0";
int k=64;
scanf("%I64u",&i);
do
{
bits[--k]=(char)('0'+i%2);
i=i/2;
}
while(i);
printf("Code:%s\n",&bits[k]);
}
2007-05-01 09:41
枯藤天涯
Rank: 1
等 级:新手上路
帖 子:99
专家分:0
注 册:2007-4-25
得分:0 

谢谢大家拉


2007-05-01 13:51
洛川
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-4-28
得分:0 
#include <stdio.h>
#include <math.h>
#define N 160
void main()
{
int a[N]={0},i,j,k,n;
scanf("%d",&n);
for(k=1;n>pow(2,k);k++){}
k=k-1;
for(i=k;i>=0;i--)
{
j=n%2;n/=2;
if(j==1)
a[i]=1;
}
for(i=0;i<=k;i++)
printf("%d",a[i]);
}
我写的,昨天忘了发上来了

2007-05-01 18:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-135978-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043898 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved