题目链接:
解题思路:
C语言中只有十六进制(%x),八进制(%o),十进制的格式控制符 ;
一个数的二进制还需我们自己去编写一个算法实现:
利用 while 循环不断对要转化为二进制的数进行对 2 取余数,
然后定义一个数组,
依次存储它所取余而得到的余数,
然后将它进行反向输出,
就得到了对应的二进制码
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int data = 0;
cin >> data;
int arr[100] = {0},n = 0;
while(data)
{
arr[n++] = data % 2;
data /= 2;
}
while(n)
{
cout << arr[--n];//必须是先--,因为数组中首元素的下标是以0开始的
}
return 0;
}
变式题目:
题目链接:
参考代码:
#include<bits/stdc++.h>
using namespace std;
void func(int data)
{
int arr[100] = {0},n = 0;
while(data)
{
arr[n++] = data % 2;
data /= 2;
}
//出了该循环后,n就表示的是元素的个数,而不是数组的最后一位下标了
while(n)
{
if((n-1)%4 == 0)//此时的n-1正对应要输出数组元素的下标--n
{
cout << arr[--n] << " ";
//因为是逆序打印,所以要在 (n-1)%4== 0 时输出空格
}
else
{
cout << arr[--n];
}
}
cout << endl;
}
int main( )
{
int arr[5] = {0};
for(int i = 0;i < 5;i++)
{
cin >> arr[i];
func(arr[i]);
}
return 0;
}