把任意十进制正整数转换成二进制数(指针实现)
时间: 2023-04-21 16:03:46 浏览: 94
将十进制正整数转换成二进制数的方法是不断地除以2,直到商为为止。每次除法的余数就是二进制数的一位,从下往上排列即可。
以下是指针实现的代码:
```c
#include <stdio.h>
void dec2bin(int n, int *bin, int *len) {
int i = ;
while (n > ) {
bin[i++] = n % 2;
n /= 2;
}
*len = i;
}
int main() {
int n = 123;
int bin[32], len;
dec2bin(n, bin, &len);
printf("%d的二进制数为:", n);
for (int i = len - 1; i >= ; i--) {
printf("%d", bin[i]);
}
printf("\n");
return ;
}
```
运行结果:
```
123的二进制数为:1111011
```
在函数`dec2bin`中,`n`是要转换的十进制正整数,`bin`是存放二进制数的数组,`len`是二进制数的位数。函数中的循环不断地除以2,将余数存入数组中,直到商为为止。最后将数组中的元素从后往前输出即可得到二进制数。
相关问题
把任意十进制正整数转换成二进制数(指针实现
### 回答1:
可以使用指针实现将任意十进制正整数转换成二进制数。
具体步骤如下:
1. 定义一个指针变量,指向一个数组,用于存储二进制数。
2. 通过循环,将十进制数不断除以2,直到商为为止,每次将余数存储到数组中。
3. 将数组中的元素倒序输出,即可得到对应的二进制数。
示例代码如下:
```
#include <stdio.h>
void decimalToBinary(int n, int *binary) {
int i = ;
while (n > ) {
binary[i] = n % 2;
n /= 2;
i++;
}
for (int j = i - 1; j >= ; j--) {
printf("%d", binary[j]);
}
}
int main() {
int n = 10;
int binary[32] = {};
decimalToBinary(n, binary);
return ;
}
```
以上代码将十进制数10转换成二进制数101,并输出到控制台。
### 回答2:
把任意十进制正整数转换成二进制数是一种十分基本的计算机应用。在指针实现中,需要使用指针作为中间变量,以便在运算中存储和操作数据。
具体实现步骤如下:
(1)申请一个内存空间来存储二进制数,初始值为空。
(2)用输入的十进制正整数不断除以二,每次得到的余数即为该位的二进制数。
(3)将余数加入到二进制数的末尾,直到商为0。
(4)反转二进制数,即得到正确的二进制数。
(5)将指针指向二进制数的首位,逐个输出二进制数中的数字,即为最终结果。
需要注意的是,在进行除2运算时,如果得到的余数为0,则表示该位为0,否则为1。当十进制数为0时,需要特殊处理,此时二进制数即为0。
以下是具体代码:
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "请输入一个十进制正整数:";
cin >> n;
int* result = new int;
int* temp = result;
*temp = 0;
if(n == 0)
{
temp++;
*temp = 0;
}
else
{
while(n != 0)
{
int remainder = n % 2;
temp++;
*temp = remainder;
n /= 2;
}
}
temp++;
*temp = -1;
cout << "转换成二进制数为:";
temp = result + 1;
while(*temp != -1)
{
cout << *temp;
temp++;
}
delete[] result;
return 0;
}
通过上述代码,即可将输入的十进制正整数转换成二进制数,并输出结果。在进行指针实现时,需要注意释放内存空间,以免造成程序内存泄漏。
### 回答3:
任意十进制正整数转换成二进制数是一个常见的计算问题,在计算机科学领域中尤其常见。指针是一种特殊的变量类型,它包含一个地址,指向计算机内存中的某个位置,可以用于在程序中操作变量的值。指针的使用可以方便地实现对任意整数的二进制转换,下面就是一个指针实现的例子:
1. 首先定义两个变量,一个整型变量n和一个字符型指针p,用于指向一个字符型数组。
int n;
char* p;
2. 从标准输入读取一个十进制数n,并分配足够的内存以保存该数的二进制表示:
scanf("%d",&n);
p = (char*)malloc(32*sizeof(char));
if(!p) {
printf("内存不足!");
exit(1);
}
3. 将整数n转换为二进制表示,从最高位开始依次计算每一位的值,直到最低位。
int i = 0;
while(n > 0) {
*(p+i) = n%2 + '0';
n /= 2;
i++;
}
*(p+i) = '\0';
4. 将转换后的二进制字符串翻转,以得到正确的二进制表示,然后释放内存。
char temp;
int j = i-1;
for(int k = 0; k < j; k++,j--) {
temp = *(p+k);
*(p+k) = *(p+j);
*(p+j) = temp;
}
printf("二进制表示:%s",p);
free(p);
以上就是用指针实现将任意十进制正整数转换成二进制数的简单例子。从这个例子中可以看出,指针的使用可以方便地操作内存中的数据,在编写计算机程序时是非常有用的一种工具。
把任意十进制正整数转换成二进制数(指针实现)。
可以使用指针实现将任意十进制正整数转换成二进制数的操作。具体步骤如下:
1. 定义一个指向整型数组的指针,用于存储二进制数的每一位。
2. 通过循环,将十进制数不断除以2,得到商和余数。将余数存储到数组中,直到商为0为止。
3. 反转数组中的元素,得到正确的二进制数。
例如,将十进制数23转换成二进制数的过程如下:
1. 定义一个长度为8的整型数组,用于存储二进制数的每一位。
2. 23除以2得到商11余1,将余数1存储到数组中。11除以2得到商5余1,将余数1存储到数组中。5除以2得到商2余1,将余数1存储到数组中。2除以2得到商1余0,将余数0存储到数组中。1除以2得到商0余1,将余数1存储到数组中。
3. 反转数组中的元素,得到二进制数10111。
代码实现如下:
```c
#include <stdio.h>
void decimalToBinary(int decimal, int *binary) {
int i = 0;
while (decimal > 0) {
binary[i] = decimal % 2;
decimal /= 2;
i++;
}
for (int j = 0; j < i / 2; j++) {
int temp = binary[j];
binary[j] = binary[i - j - 1];
binary[i - j - 1] = temp;
}
}
int main() {
int decimal = 23;
int binary[8] = {0};
decimalToBinary(decimal, binary);
printf("%d的二进制数为:", decimal);
for (int i = 0; i < 8; i++) {
printf("%d", binary[i]);
}
printf("\n");
return 0;
}
```