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