tan90�=
2020-04-07 17:04
采纳率: 100%
浏览 185

请问代码哪里错误了?可以编译但得不出正确答案

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
样例输出
00000
00001
00010
00011
<以下部分省略>
#include
using namespace std;
int main()
{
int a[5] = { 0,0,0,0,0 };
int s = 4;
int temp;
for (int i = 0; i < 32; i++)
{
temp = i;
while (temp != 0)
{
a[s] = temp % 2;
temp = temp / 2;
s--;
}
for (int j = 0; j < 5; j++)
{
cout << a[j];
}
cout << endl;
}
return 0;
}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2020-04-07 17:21
    已采纳

    问题解决的话,请点采纳

    #include <iostream>
    using namespace std;
    int main()
    {
    int a[5] = { 0,0,0,0,0 };
    int s = 4;
    int temp;
    for (int i = 0; i < 32; i++)
    {
    temp = i;
    s = 4; //加上
    while (temp != 0)
    {
    a[s] = temp % 2;
    temp = temp / 2;
    s--;
    }
    for (int j = 0; j < 5; j++)
    {
    cout << a[j];
    }
    cout << endl;
    }
    return 0;
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 小学狗喵喵叫 2020-04-07 17:29

    我们知道这其实是要输出0-31的2进制

    #include <iostream>
    #include <bitset>
    using namespace std;
    int main()
    {
        for (int nn = 0; nn < 32; nn++)
            cout << bitset<5>(nn)<<endl;
        return 0;
    }
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题