C语言如何把十进制转化为二进制,只能用三种基本结构和基本运算,“数组,指针,函数一类的以及更高级的语法均不能用”
同样的要求,十进制转化八进制和十六进制怎么编?
各位高手请指教啊
下列程序在VC++ 6.0环境下调试通过,可以满足要求。
#include "stdafx.h"
void main()
{
int j;
int aaa, bbb = 0, ccc = 0;
printf("请输入一个十进制数:\n");
scanf("%d", &aaa);
j = 1;
while(1) {
bbb = aaa % 2;
aaa = (aaa - bbb) / 2;
ccc = bbb * j + ccc;
j *= 10;
if (aaa == 0) break;
}
printf("对应的二进制数:\n");
printf("%08d\n\n", ccc);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-11-21
“三种基本结构和基本运算”是指什么?哪三种?
第2个回答 2009-11-21
我空间里有个用c++实现的,符合你上面的要求,基本和c一样,除了输入和输出用得c++的,其他都是样的,
如果有不清楚的地方可以加我百度好友,
如果有不清楚的地方可以加我百度好友,
第3个回答 2009-11-21
int i
i%2
i%8
n=i%16 n>10 就用ABCDEF
i%2
i%8
n=i%16 n>10 就用ABCDEF
第4个回答 2009-11-21
对十进制数以2为底取对数,取上整数,即二进制后的位数。然后从0位到最高位,分别按基数取模填充。
#include<stdio.h>
#include<math.h>
#define BASE 2
int main()
{
int i = 2,k = 0;
char * bin;
int bits = (int)(log10(i)/log10(BASE)) + 1;
bin = (char *)malloc(bits+1);
bin[bits] = '\0';
for(;k<bits;++k)
{
int c = (int)pow(BASE,bits-k-1);
bin[k] = i/c + '0';
i = i%c;
}
puts(bin);
}
BASE可设任意进制
#include<stdio.h>
#include<math.h>
#define BASE 2
int main()
{
int i = 2,k = 0;
char * bin;
int bits = (int)(log10(i)/log10(BASE)) + 1;
bin = (char *)malloc(bits+1);
bin[bits] = '\0';
for(;k<bits;++k)
{
int c = (int)pow(BASE,bits-k-1);
bin[k] = i/c + '0';
i = i%c;
}
puts(bin);
}
BASE可设任意进制