C ++调试;我看不出错误:(

时间:2011-01-29 05:17:33

标签: c++

所以通常经过一夜的“喝酒”之后,我回家并通过编程来检查醉酒的程度。我决定制作一个计算器程序。我收到了一个错误,现在我无法入睡。有人可以请我摆脱这种痛苦。这段代码有什么问题?

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    double num1;
    double num2;
    char redo;
    char operation;
    do
      {  
         cout<< "Please enter your calculation "<< endl;
         cin >> num1 >> operation >>num2;
         switch operation {
           case '+':
             cout<< "" <<num1+num2 << endl;
             break;

           case '/':
             cout<< "" <<num1/num2 << endl;
             break;

           case '*':
             cout<< "" <<num1*num2 << endl;
             break;

           case '/':
             cout<< "" <<num1/num2 << endl;
             break;

      }
      while (redo=='y'||redo=='Y');
    system("PAUSE");
    return EXIT_SUCCESS;
}

我的第一个调试错误是在cout ..我无法入睡:(


YAY!我没醉!!我得到了它的工作! Thajink youou giusy所以mcuh !! 哦,继续代码btw:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    double num1;
    double num2;
    char redo;
    char operation;
    do
      {  
         cout<< "Please enter your calculation "<< endl;
         cin >> num1 >> operation >>num2;
         switch (operation) {
           case '+':
             cout<< num1+num2 << endl;
             break;

           case '-':
             cout<< num1-num2 << endl;
             break;

           case '*':
             cout<< num1*num2 << endl;
             break;

           case '/':
             cout<< num1/num2 << endl;
             break;

      }
     cout<<" Do you want to continue? ";
     cin>>redo; }

     while (redo=='y'||redo=='Y');
}

4 个答案:

答案 0 :(得分:2)

您的程序缺少switch语句的结束大括号;我不确定将代码复制到帖子中是否存在错误,或者这是否是造成你的困境的原因。

在一个有些不相关的说明中,我注意到你的代码中的几个地方你已经写过了

cout<< "" <<num1+num2 << endl;

在打印出总和之前,您不需要打印空字符串;你可以写

cout<< num1 + num2 << endl;

您可能遇到的另一个问题是您的代码循环使用此条件:

while (redo=='y'||redo=='Y');

但是,您的代码永远不会为redo赋值,因此这具有未指定的行为 - 它可以永久循环,或者只循环一次。

希望这有助于解决问题!

答案 1 :(得分:0)

哪个cout?你在程序中使用它5次。

您正在阅读redo,而无需为其分配值。这不太可能正常工作。

答案 2 :(得分:0)

你的第二种情况应该是' - '而不是'/'。没有足够的结束括号。

这对我有用:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
  double num1;
  double num2;
  char redo;
  char operation;
  do
  {
    cout<< "Please enter your calculation "<< endl;
    cin >> num1 >> operation >>num2;
    switch (operation )
      {
      case '+':
        cout<< "" <<num1+num2 << endl;
        break;

      case '-':
        cout<< "" <<num1-num2 << endl;
        break;

      case '*':
        cout<< "" <<num1*num2 << endl;
        break;

      case '/':
        cout<< "" <<num1/num2 << endl;
        break;
      }
    }
    while (redo=='y'||redo=='Y');
    system("PAUSE");
    return EXIT_SUCCESS;

}

答案 3 :(得分:0)

我可以看到一些错误:

  1. }阻止了大括号switch

  2. switch中的条件应该在括号中:

    switch (operation) {
           ^         ^
    
  3. 有重复case '/'。案例-缺失。

  4. 变量redo未经初始化使用。您需要询问用户是否要继续。阅读变量redo中的响应。

  5. See it