写一个函数int* dec 2bin(int N,int* n),给定一个自然数0 ≤ N〈65535,计算并返回它的二进制表示,程序必须确定系数ai ∈ {0,1},i = 0,...,n − 1,使得N =(sum-〉n-1)ai2^i(n ≤ 16)。
#include <stdio.h>
#include <math.h>
#include <assert.h>
int decimalToBinary(int N)
{
int B_Number = 0;
int c= 0;
int ctr=0;
while (N != 0) {
int rem = N % 2;
c = pow(10, ctr);
B_Number += rem * c;
N /= 2;
ctr++;
}
return B_Number;
}
int main()
{
int N;
scanf("%d", &N);
printf("%d", decimalToBinary(N));
return 0;
}
我知道如何编写一个转换数字的程序,但我不明白为什么需要指针,以及如何实现它。
3条答案
按热度按时间yshpjwxd1#
另一种方式...
这是为了打印一个值的二进制表示(从左到右),而不是打印,你可以简单地把0/1(从左到右)赋给一个传递过来的数组(16个整数),然后把赋值的整数个数返回给调用函数,从一个循环中打印出来。
hgqdbh6s2#
使用能够对十进制数1111_1111_1111_1111进行编码的整数类型:使用
long long
。不要使用
pow()
,它是一个处理整数问题的浮点函数。它可能会生成比预期的整数稍小的值,而且速度很慢。使用情况
goqiplq23#
您的函数没有所需的参数和返回值。