【问题标题】:Converting an octal number to decimal number using char only仅使用 char 将八进制数转换为十进制数
【发布时间】:2018-05-23 11:41:54
【问题描述】:

我是新来的,也是 C++ 的新手。

我刚开始在学校的第一年,我被分配了一项作业,其中一个问题是仅使用 Char 将八进制数转换为十进制数。

任务是创建一个程序,从用户那里接收字符,并且事先不知道数字的长度。用户应按'\t' 以开始计算到十进制数。

我不太明白它是如何工作的。因为如果我编写一个简单的算法,例如:

char ch;
cin<<ch;

cout>>ch>>endl;

我给它67,它只会打印6。这意味着它会分别读取每个字符,不是吗?

有人可以通过向我展示这个问题的算法或向我解释 char 的工作原理来帮助我理解它吗?

非常感谢 珊瑚

【问题讨论】:

  • 您需要一个string 字符,而不仅仅是一个char 变量。
  • 欢迎来到 StackOverflow。向我们展示您到目前为止所拥有的。 “要求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述。” stackoverflow.com/help/on-topic
  • 我不明白你对此有何不了解。是的,如果您阅读char,它将阅读单个char。你有什么问题?
  • "用户应该按 "'\t'" 才能开始计算到十进制数。" - 这是一个奇怪的要求,因为在标准 C++ 中,你不能直接检测按键;您必须等到用户按下 Enter 键。你确定你的老师真的是指'\t' 而不仅仅是Enter?
  • 对不起,我的意思是输入。旁边写着'\n'

标签: c++ input inputstream stdin getchar


【解决方案1】:

您将获得有关如何逐个字符读取标准输入的足够信息。

请通过此链接。 http://www.cplusplus.com/forum/articles/6046/

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {

 string input = "";

 // How to get a string/sentence with spaces
 cout << "Please enter a valid sentence (with spaces):\n>";
 getline(cin, input);
 cout << "You entered: " << input << endl << endl;

 // How to get a number.
 int myNumber = 0;

 while (true) {
   cout << "Please enter a valid number: ";
   getline(cin, input);

   // This code converts from string to number safely.
   stringstream myStream(input);
   if (myStream >> myNumber)
     break;
   cout << "Invalid number, please try again" << endl;
 }
 cout << "You entered: " << myNumber << endl << endl;

 // How to get a single char.
 char myChar  = {0};

 while (true) {
   cout << "Please enter 1 char: ";
   getline(cin, input);

   if (input.length() == 1) {
     myChar = input[0];
     break;
   }

   cout << "Invalid character, please try again" << endl;
 }
 cout << "You entered: " << myChar << endl << endl;

 cout << "All done. And without using the >> operator" << endl;

 return 0;
}

【讨论】:

  • 不解决作业问题,尽量少帮忙。
  • 你是对的。这就是我发布通用输入读取解决方案的原因。他需要进一步定制它。 ;)
  • 感谢您的帮助。问题是他们不希望我们使用字符串。只有char ..现在我编码了这个,但是我得到了一个“while”错误有人能告诉我为什么吗? #include #include using namespace std; void main() { int decimal = 0;八进制字符; cout = '0' && octal
  • 使用字符数组。而不是字符串,char[20],类似的东西。
猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-03
相关资源
最近更新 更多