C++ C++;-简单二进制到ASCII二进制程序

C++ C++;-简单二进制到ASCII二进制程序,c++,binary,console,C++,Binary,Console,好的,这个问题很具体,我会很简短。 我试图将一个5位的简单二进制数转换成十进制数,然后再转换成ASCII十进制数; 但不知何故,我的意见是: 键入二进制数:10110 完成了?(是/否):否 完成了?(是/否):否 它应该是在请求另一个二进制数后才请求完成,然后在我键入y时在字符数组中显示一个句子。发生了什么事?我真的不明白发生了什么 //main.cpp #include <iostream> #include "binconverts.h" int main

好的,这个问题很具体,我会很简短。 我试图将一个5位的简单二进制数转换成十进制数,然后再转换成ASCII十进制数; 但不知何故,我的意见是:

键入二进制数:10110

完成了?(是/否):否

完成了?(是/否):否

它应该是在请求另一个二进制数后才请求完成,然后在我键入y时在字符数组中显示一个句子。发生了什么事?我真的不明白发生了什么

//main.cpp
#include <iostream>
#include "binconverts.h"

int main(){
    using namespace std;
    int numBin;
    char acabou;
    bool breakLoop = false;
    int numer = 0;
    cout << "Digite um numero binario: ";
    cin >> numBin;
    for (int a = 0; a < 54; a++){
        if (breakLoop == true) break;
        binconv.text[a] = binconv.convBin(numBin);
        numer++;
        cout << "Acabou? (s/n): ";
        cin >> acabou;
        switch (acabou){
        case 'S':
            breakLoop == true;
            break;
        case 's':
            breakLoop == true;
            break;
        case 'n':
            breakLoop == false;
            break;
        case 'N':
            breakLoop == false;
            break;
        default:
            breakLoop == false;
            break;}
    }
    for (int b = 0; b < numer; b++){
        cout << binconv.text[b];
    }
}

这将改进代码的格式和功能

int main(){
    using namespace std;
    int numBin;
    char acabou;
    bool breakLoop = false;
    int numer = 0;
    cout << "Digite um numero binario: ";
    cin >> numBin;
    cout << "Acabou? (s/n): ";
    for (int a = 0; a < 54; a++){
        if (breakLoop == true) break;
        binconv.text[a] = binconv.convBin(numBin);
        numer++;
        cin >> acabou;
        if (acabou="s" || acabou="S"){
            breakLoop = true;
        }else {
            breakLoop = false;
        }
        for (int b = 0; b < numer; b++){
            cout << binconv.text[b];
        }
    }
}
intmain(){
使用名称空间std;
int-numBin;
查阿卡布;
bool breakLoop=false;
整数=0;
不能>麻木;
库特>阿卡布;
如果(acabou=“s”| acabou=“s”){
breakLoop=true;
}否则{
breakLoop=false;
}
对于(int b=0;bcout这将改进代码的格式和功能

int main(){
    using namespace std;
    int numBin;
    char acabou;
    bool breakLoop = false;
    int numer = 0;
    cout << "Digite um numero binario: ";
    cin >> numBin;
    cout << "Acabou? (s/n): ";
    for (int a = 0; a < 54; a++){
        if (breakLoop == true) break;
        binconv.text[a] = binconv.convBin(numBin);
        numer++;
        cin >> acabou;
        if (acabou="s" || acabou="S"){
            breakLoop = true;
        }else {
            breakLoop = false;
        }
        for (int b = 0; b < numer; b++){
            cout << binconv.text[b];
        }
    }
}
intmain(){
使用名称空间std;
int-numBin;
查阿卡布;
bool breakLoop=false;
整数=0;
不能>麻木;
库特>阿卡布;
如果(acabou=“s”| acabou=“s”){
breakLoop=true;
}否则{
breakLoop=false;
}
对于(int b=0;bcout在您的程序中您使用的是s/n,但输出使用的是y/n。请按照正确的方式更正。Thx。我很惊讶它没有向您显示该消息54次,因为
breakLoop==false;
和开关块中的其他类似表达式不是赋值,而是比较。我想您需要
breakLoop=false
和因此,顺便说一句,使用
std::toupper
std::tolower
开关的大小写减少50%。在比较之前,应用一个函数将字符转换为大写或小写。在您的程序中,您使用的是s/n,但输出使用的是y/n。请纠正正确的方式。Thx。我很惊讶它没有向您显示由于
breakLoop==false;
和开关块中的其他类似表达式不是赋值,而是比较。我认为您需要
breakLoop=false
等等…顺便说一句,使用
std::toupper
std::tolower
开关的情况减少50%。应用函数在比较之前将字符转换为大写或小写。您意识到您正在另一个循环中使用循环,因此
if(breakLoop==true)break;
只对内部循环有效,无论用户选择什么,消息都会显示54次。现在应该可以了。我只是忘了把外部
用于
循环的目的是什么?您可以通过使用
std::toupper
std::tolower
转换字符来进一步提高功能性在
if
语句之前的ter变量。您意识到您正在另一个循环中使用一个循环,因此
if(breakLoop==true)break;
只对内部循环有效,无论用户选择什么,消息都会显示54次。现在应该可以了。我只是忘了把外部
用于
循环的目的是什么?您可以通过使用
std::toupper
std::tolower
转换字符来进一步提高功能性在
if
语句之前的ter变量。