C语言temp能做变量明码,C语言——明码问题(进制变化)(蓝桥杯真题)

这篇博客介绍了两种将十进制数转换为二进制并在控制台上以星号(*)表示的方法。第一种是通过自定义函数和二维数组实现,第二种使用C++的bitset库。代码示例中详细展示了如何处理输入的十进制数,并通过循环检查二进制位来输出星号。
摘要由CSDN通过智能技术生成

05e08b870ed079f9e5f5126c994470ab.png

问题分析:这个问题有两种方法,第一种是建造一个全局变量的二维数组x[16][16],通过循环调用函数(将一个十进制数变为二进制然后放入数组中),然后通过循环,判断每一位是否为1,是则输出“*”。第二种方法是用c语言的库函数组合bitset(8) t(n);将十进制的n转变为8位二进制的数字。

3dc08d0f0d855742b195451ac6261ae6.png

问题代码一:

#include

int x[16][16]={};

void c(int n,int g,int l)

{

int k=0;

if(n<0)

{

x[g][l-7]=1;

n*=-1;

}

else

{

x[g][l-7]=0;

}

for(int m=0;m<7;m++)

{

if(n>=2)

{

x[g][l-k]=n%2;

n=n/2;

k++;

}

else

{

x[g][l-k]=n;

break;

}

}

}

int main()

{

int i,j,p;

for(i=0;i<16;i++)

{

for(j=7;j<16;j+=8)

{

scanf("%d",&p);

c(p,i,j);

}

}

for(i=0;i<16;i++)

{

for(j=0;j<16;j++)

{

if(x[i][j]==1)

{

printf("*");

}

else

{

printf(" ");

}

}

printf("\n");

}

return 0;

}

问题代码二:

#include

#include

using namespace std;

int main()

{

int n,m;

int len;

string temp;

bitset<8> t;

while(cin>>n>>m)

{

t = n;

temp = t.to_string();

len = temp.length();

for(int i = 0; i < len; i++)

{

if(temp[i]=='0')

{

cout << " ";

}

else

{

cout << "*";

}

}

t = m;

temp = t.to_string();

len = temp.length();

for(int i = 0; i < len; i++)

{

if(temp[i]=='0')

{

cout << " ";

}

else

{

cout << "*";

}

}

cout << endl;

}

}

问题结果:

ff2f09ab6fb3fb9fa063d74b2ada4742.png

问题回顾:方法一中的代码主函数中循环是从7开始,每次加8(j+=8,不是j+8),注意==和=!,bitset(8) b(6)表示将6变成8位二进制位的数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值