方法必须是除2取余
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。
2、定义变量和数组:#include <stdio.h>#include <string.h>void main(){ long t1;int i, n, t, t3;
char a[100]。
3、 输入字符: printf("请输入字符:\n"); gets(a); /*输入n进制数存到数组a中*/strupr(a); /*将a中的小写字母转换成大写字母*/t3 = strlen(a); /*求出数组a的长度*/t1 = 0; /*为t1赋初值0*/。
4、输入进制: printf("请输入n(2or8or16):\n");scanf("%d", &n); /*输入进制数*/。
5、输出最后的结果。
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2017-10-12
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
参考代码:
#include <stdio.h>int main()
{
int n,a[100],i=0,j;
scanf("%d",&n);
while(n)
{
a[i++]=n%2;
n/=2;
}
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
printf("\n");
return 0;
}
/*
输出:
10
1010
*/
第2个回答 推荐于2017-09-04
#include <stdio.h>
void main()
{
int n,a[100];
printf("input the data:\n");
scanf("%d",&n);
int i=0;
while(n!=0)
{
if(n%2!=0)
a[i]=1;
else a[i]=0;
n/=2;
i++;
}
for(int j=i-1;j>=0;j--)
printf("%d",a[j]);
printf("\n");
}本回答被提问者采纳
void main()
{
int n,a[100];
printf("input the data:\n");
scanf("%d",&n);
int i=0;
while(n!=0)
{
if(n%2!=0)
a[i]=1;
else a[i]=0;
n/=2;
i++;
}
for(int j=i-1;j>=0;j--)
printf("%d",a[j]);
printf("\n");
}本回答被提问者采纳
第3个回答 2009-04-05
#include<stdio.h>
#define N 2
main(int a,int b,int c)
{
c && scanf("%d",&a) ? main(a, b, 0) : a ? b = a % 2, main(a/N, 0, 0), printf("%d",b) : 0;
}
#define N 2
main(int a,int b,int c)
{
c && scanf("%d",&a) ? main(a, b, 0) : a ? b = a % 2, main(a/N, 0, 0), printf("%d",b) : 0;
}
第4个回答 2009-04-05
2楼正解.不过数组太大了吧.他说是正整数啊.就算DOUBLE也用不着100啊...