【问题标题】:How do I write a function below the main? [duplicate]如何在 main 下面写一个函数? [复制]
【发布时间】:2020-07-22 19:55:29
【问题描述】:

我有一位老师/教授只喜欢在 main 下方而不是在其上方编写函数。为了编写main下面的函数,我将如何重写它。一直在下面教怎么做,我会事先声明吗?如果是这样,它会是什么样子?

#include <iostream>
using namespace std;
/* Output
Enter 4 test score numbers
80 90 80 90
Average is 86.6667

Enter 4 test score numbers
70 80 -60 90
Bad Data

*/
bool input(double& test1, double& test2, double& test3, double& test4)
{
cout << "Enter 4 test score numbers" << endl;
cin >> test1;
cin >> test2;
cin >> test3;
cin >> test4;

if(test1 < 0 || test2 < 0 || test3 < 0 || test4 < 0)
return false;
else
return true;
}

double average(double test1, double test2, double test3, double test4, bool data)
{
if(data == false)
{
cout << "Bad Data" << endl;
return -1;
}
double low = test1;
if(test2 < low)
{
low = test2;
}
if(test3 < low)
{
low = test3;
}
if(test4 < low)
{
low = test4;
}
return (test1+test2+test3+test4-low)/3;
}

int main()
{
double test1, test2, test3, test4;
bool data;
data = input(test1, test2, test3, test4);
double avg = average(test1, test2, test3, test4, data);
if(avg != -1)
{
cout << "Average is " << avg << endl;
}
return 0;
}

【问题讨论】:

  • 您尝试过您建议的尝试吗?顺便说一句:你老师的意见并不普遍。作为这里的新用户,也可以使用tour 并阅读How to Ask。此外,您可以将代码缩减为 minimal reproducible example,如果您希望人们阅读它,请正确缩进。
  • 是的,只要在main之前用函数原型声明即可。
  • main 之前的转发声明,之后的实现,应该可以解决问题。但是为什么

标签: c++ declaration function-prototypes


【解决方案1】:

只需将声明放在main之前:

bool input(double& test1, double& test2, double& test3, double& test4);
double average(double test1, double test2, double test3, double test4, bool data);

以及main之后的定义:

bool input(double& test1, double& test2, double& test3, double& test4)
{
    ....
}

double average(double test1, double test2, double test3, double test4, bool data)
{
    ....
}

【讨论】:

    【解决方案2】:

    您需要做的就是在main上方提供一个函数声明。

    bool input(double test1, double test2, double test3, double test4);

    然后就可以实现main下面的函数了。

    【讨论】:

      【解决方案3】:

      你可以在main函数之上声明函数,在main函数之后实现函数。

      【讨论】:

        【解决方案4】:

        之前只有函数实现

        #include <iostream>
        using namespace std;
        
        int sum(int a, int b){
            return a + b;
        }
        
        int main(){
            cout<<sum(3, 5);
        }
        

        AFTERmain 上的函数声明,main 下的函数实现

        #include <iostream>
        using namespace std;
        
        int sum(int a, int b);
        
        int main(){
            cout<<sum(3, 5);
        }
        
        int sum(int a, int b){
            return a + b;
        }
        

        【讨论】:

          【解决方案5】:

          只需将您的 main() 函数剪切并粘贴到顶部即可。并使用函数原型声明您的函数。

          #include <iostream>
          using namespace std;
          /* Output
          Enter 4 test score numbers
          80 90 80 90
          Average is 86.6667
          
          Enter 4 test score numbers
          70 80 -60 90
          Bad Data
          
          */
          
          bool input(double& test1, double& test2, double& test3, double& test4);
          double average(double test1, double test2, double test3, double test4, bool data);
          
          
          int main()
          {
          double test1, test2, test3, test4;
          bool data;
          data = input(test1, test2, test3, test4);
          double avg = average(test1, test2, test3, test4, data);
          if(avg != -1)
          {
          cout << "Average is " << avg << endl;
          }
          return 0;
          }
          
          
          bool input(double& test1, double& test2, double& test3, double& test4)
          {
          cout << "Enter 4 test score numbers" << endl;
          cin >> test1;
          cin >> test2;
          cin >> test3;
          cin >> test4;
          
          if(test1 < 0 || test2 < 0 || test3 < 0 || test4 < 0)
          return false;
          else
          return true;
          }
          
          double average(double test1, double test2, double test3, double test4, bool data)
          {
          if(data == false)
          {
          cout << "Bad Data" << endl;
          return -1;
          }
          double low = test1;
          if(test2 < low)
          {
          low = test2;
          }
          if(test3 < low)
          {
          low = test3;
          }
          if(test4 < low)
          {
          low = test4;
          }
          return (test1+test2+test3+test4-low)/3;
          }
          

          【讨论】:

            【解决方案6】:

            您将创建一个带有函数头的头文件,将其包含在文档的顶部,然后您可以从那里将其放入。

            #include <iostream>
            #include "myheaders.h"
            using namespace std;
            
            int main()
            {
            double test1, test2, test3, test4;
            bool data;
            data = input(test1, test2, test3, test4);
            double avg = average(test1, test2, test3, test4, data);
            if(avg != -1)
            {
            cout << "Average is " << avg << endl;
            }
            return 0;
            }
            
            
            bool input(double& test1, double& test2, double& test3, double& test4)
            {
            cout << "Enter 4 test score numbers" << endl;
            cin >> test1;
            cin >> test2;
            cin >> test3;
            cin >> test4;
            
            if(test1 < 0 || test2 < 0 || test3 < 0 || test4 < 0)
            return false;
            else
            return true;
            }
            
            double average(double test1, double test2, double test3, double test4, bool data)
            {
            if(data == false)
            {
            cout << "Bad Data" << endl;
            return -1;
            }
            double low = test1;
            if(test2 < low)
            {
            low = test2;
            }
            if(test3 < low)
            {
            low = test3;
            }
            if(test4 < low)
            {
            low = test4;
            }
            return (test1+test2+test3+test4-low)/3;
            }
            

            在 myheaders.h 中

            bool input(double& test1, double& test2, double& test3, double& test4);
            double average(double test1, double test2, double test3, double test4, bool data);
            

            说实话,将这些功能放在主要位置是没有意义的。他们应该分开。

            您也可以在 main 之上声明该函数,从技术上讲,您没有在 main 之上实现该函数,但这样做有点愚蠢。

            https://www.learncpp.com/cpp-tutorial/header-files/

            【讨论】:

              【解决方案7】:

              您需要在main() 上方声明prototypesfunction declarationsdeclarationprototype 指定一个唯一名称,其中包括有关其类型的信息。您也不必在prototypefunction declaration 中有参数名称。但是,您必须在definition 中定义它。然后你可以把你的函数放在main()

              下面

              例如,(使用您的示例):

              #include <iostream>
              using namespace std;
              double average(double, double, double, double, bool); //Prototype or function 
              bool input(double&, double&, double&, double&); //Prototype or function declaration.
              int main()
              {
                //code.
              }
              
              double average(double test1, double test2, double test3, double test4, bool data)
              {
               //code.
              }
              bool input(double& test1, double& test2, double& test3, double& test4)
              {
               //code.
              }
              

              【讨论】:

                猜你喜欢
                • 2014-08-11
                • 2013-08-09
                • 1970-01-01
                • 2018-07-14
                • 2019-08-26
                • 2018-03-24
                • 1970-01-01
                • 2014-05-21
                • 2012-06-09
                相关资源
                最近更新 更多