输出不正确

时间:2013-06-01 00:59:49

标签: c++ visual-c++ syntax

我已经纠正了下面程序中的错误,但仍然是混合输出。更新的结果如下。请指教。

我将不胜感激任何帮助。相关的代码部分是:

      string student::standing() const
      // post: use selection to return the current standing as either
      //       Freshman, Sophomore, Junior, or Senior.

      {    

          cout  << "Freshman";

      if (my_credits <= 60.00);
      {cout  << "Sophomore";}

      if (my_credits <= 90.00);
      {cout  << "Junior";}

      if (my_credits >= 90.00);
       else
       { cout  << "Senior";}

      }

      string student::name() const
      // post: return the student's name
      {
          {return my_name;}

      }

1 个答案:

答案 0 :(得分:2)

嗯,首先你的标题引用一个错误而你的问题显示另一个错误。两者都是合法的,所以让我们解决这两个问题,不管吗?

问题是C4716错误消息告诉你完全错误是什么:你只需要阅读它。它表示函数student::standing()声称返回string但没有。当然,这不是唯一的问题。您声称的另一个问题是C2134(但很可能是C4390)是因为您在if之后放了一个分号,这是不对的。这段代码:

if(my_credits <= 60.00);
{cout  << "Sophomore";}

与此代码相同:

if(my_credits <= 60.00)
    /* do nothing if my_credits are less than or equal to 60 */

{
    /* and then always print "Sophomore" */
    cout << "Sophomore";
}

真正想要的是这样的:

string student::standing() const
{    
    if(my_credits >= 90.00)
        return "Senior";

    if(my_credits >= 60.00)
        return "Junior";

    if(my_credits >= 30.00)
        return "Junior";

    return "Freshman"; 
}

为了将来参考,如果您在Google上搜索了C4390,那么您将登陆an MSDN page describing this error,其中包含问题的确切描述以及您所犯的错误。

同样地,如果您使用Google搜索了C4716,那么您将登陆another MSDN page describing that error,这又包含了一个与您的错误非常接近的示例。

最后,在此代码中:

string student::name() const
{
    {return my_name;}
}

那些额外的花括号有什么意义?他们并没有真正伤害任何东西,但他们只是没有任何可想象的目的,除了混淆。删除它们:

string student::name() const
{
    return my_name;
}