【问题标题】:c++: How to take user input as a function argument?c++:如何将用户输入作为函数参数?
【发布时间】:2018-07-11 05:12:20
【问题描述】:

我不知道这段代码有什么问题... =/

这是一个简单的代码,但是...

不输出结果。

似乎没有将用户输入作为参数。

字符串好像有问题。

给出我不理解的长错误 cmets,真的很长。

#include <iostream>
#include <string>
using namespace std;

int marks;
string result;

string gpa(marks){

if (marks >= 0 && marks <= 49){
    result = "GPA: 0.00\n\n";
}

else if (marks >= 50 && marks <= 54){
    result = "GPA: 1.00\n\n" ;
}

else if (marks >= 55 && marks <= 59){
    result = "GPA: 2.00\n\n" ;
}

else if (marks >= 60 && marks <= 64){
 result = "GPA: 2.30\n\n" ;
}

else if (marks >= 65 && marks <= 69){
    result = "GPA: 2.70\n\n" ;
}

else if (marks >= 70 && marks <= 74){
    result = "GPA: 3.00\n\n" ;
}

else if (marks >= 75 && marks <= 79){
    result = "GPA: 3.30\n\n" ;
}

else if (marks >= 80 && marks <= 84){
    result = "GPA: 3.70\n\n" ;
}

else if (marks >= 85 && marks <= 100){
    result = "GPA: 4.00\n\n" ;
}

else if (marks > 100 && marks < 0){
    result = "Error, please input again.\n\n" ;
}

return result;
}

int main(){

cin >> marks;
gpa (marks);

return 0;
}

【问题讨论】:

  • 首先,您需要将函数签名提供给string gpa(int marks)。其次,函数gpa 有一个std::string 返回。你称它为void 函数。
  • 所以,我把它从一个字符串改成了一个 void 函数,但是仍然有一点错误:variable or field 'gpa' declared void void gpa(marks){
  • 这是否也意味着,对于除 int 之外的任何 return_type,我都应该放置 void?
  • 您似乎四处游荡,寻求越来越不可能的解决方案。我建议您在继续之前停止并刷新您对文本中有关编写函数的部分的记忆。从基础开始,一个将标记作为参数并将其打印到屏幕上的函数。
  • 作为参考,如果有“你不理解的长错误信息”,编译器仍在试图告诉你一些东西,其他人可能会理解它们。将它们放在问题中,至少尝试阅读它们,最终它们会有意义。

标签: c++ string input


【解决方案1】:

marksresult 可以在块范围内,参数使用与变量声明相同的语法表示,即删除

int marks;
string result;

string gpa(marks){ 更改为 string gpa(int marks){ string result; 并将您的主要过程更改为

int main(){

    int marks;
    cin >> marks;
    cout << gpa (marks); //cout is totally optional, it will just print the result from gpa

    return 0;
}

【讨论】:

    【解决方案2】:

    您的变量 marks 在文件范围内声明,因此将其声明为 gpa 的输入参数是多余的。

    编辑:您可以使用cout &lt;&lt; gpa() &lt;&lt; endl 打印结果。

    【讨论】:

      【解决方案3】:
          #include <iostream>
      using namespace std;
      
      #include <iostream>
      #include <string>
      using namespace std;
      
      string result;
      void gpa();
      
      
      int main()
      {
          gpa();
      
          return 0;
      }
      void gpa()
      {
          int marks;
          cout<< "please input marks"<<endl;
          cin>>marks;
          system("cls"); //clears terminal in windows OS
      
      
          if (marks >= 0 && marks <= 49)
              {
                  result = "GPA: 0.00\n\n";
              }
      
          else if (marks >= 50 && marks <= 54)
              {
                  result = "GPA: 1.00\n\n" ;
              }
      
          else if (marks >= 55 && marks <= 59)
              {
                  result = "GPA: 2.00\n\n" ;
              }
      
          else if (marks >= 60 && marks <= 64)
              {
                  result = "GPA: 2.30\n\n" ;
              }
      
          else if (marks >= 65 && marks <= 69)
              {
                  result = "GPA: 2.70\n\n" ;
              }
      
          else if (marks >= 70 && marks <= 74)
              {
                  result = "GPA: 3.00\n\n" ;
              }
      
          else if (marks >= 75 && marks <= 79)
              {
                  result = "GPA: 3.30\n\n" ;
              }
      
          else if (marks >= 80 && marks <= 84)
              {
                  result = "GPA: 3.70\n\n" ;
              }
      
          else if (marks >= 85 && marks <= 100)
              {
                  result = "GPA: 4.00\n\n" ;
              }
      
          else if (marks > 100 && marks < 0)
              {
                  result = "Error, please input again.\n\n" ;
              }
      
      
          cout << result <<endl;
      }
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      【解决方案4】:
      int marks;
      string result;
      string gpa(int marks){definition of function}//modify content string to int if you passing int.
      int main(){
      cin >> marks;
      cout<<gpa (marks);//return result is print
      return 0;
      }
      

      【讨论】:

      • 欢迎来到 SO。请添加一些解释!
      猜你喜欢
      • 1970-01-01
      • 2021-12-24
      • 2018-06-04
      • 2021-06-12
      • 1970-01-01
      • 2020-01-30
      • 2013-10-27
      • 1970-01-01
      • 2016-03-12
      相关资源
      最近更新 更多