功能和分离程序

时间:2016-11-09 11:37:36

标签: c function

本周基本上我的作业是:

写三个功能: 当提供两个整数时,返回下部。 另一个返回两个提供的整数中的较高者。 第三个返回两个提供的整数的平均值 要测试您的函数,请编写一个程序,提示输入两个整数然后 打印出较低的,然后是较高的,然后是平均值。 您的程序应该包含函数原型。

无论如何,正如我之前提到的,我似乎对这个模块有很大的困难 - 尽管这是我的最爱。

所以这是我的代码到目前为止(令人尴尬)。如果我的逻辑应该高于或低于int主线,我无法解决。总的来说真的很困惑。我一直在努力学习这个模块(远远超过所有其他模块)但仍然感觉像是一个迷失的孩子。

#include <stdio.h>
#include <stdlib.h>

int getLow(int num1 int num2);

int getHigh(int num1 int num2);

int getAvg(int num1 int num2);

int main()
{
    int lores, hires, avres;


    printf("Enter two integers:\n");
    scanf("%i %i", &num1, &num2);

    int getLow(int num1, int num2){

    if (num1 < num2){
        printf("%i is the lowest\n", num1);}
      if (num1 > num2){
        printf("%i is the lowest\n", num2);}}

   int getLow(int num1, int num2){

    if (num1 > num2){
        printf("%i is the highest\n", num1);}
      if (num1 < num2){
        printf("%i is the highest\n", num2);}}

    int getAvg(int num1, int num2)

    getAvg = (num1 + num2) / 2;

     printf("%i is the average of the two integers\n", getAvg);

    return 0;
}

3 个答案:

答案 0 :(得分:2)

#include <stdio.h>
#include <stdlib.h>

int getLow(int num1, int num2);
int getHigh(int num1, int num2);
float getAvg(int num1, int num2);

int main()
{
    int num1, num2, avres;

    printf("Enter two integers:\n");
    scanf("%i %i", &num1, &num2);

    float avg = getAvg(num1, num2);
    printf("The smallest number is %d", getLow(num1, num2));
    printf("The largest number is %d", getHigh(num1, num2));
    printf("%f is the average of the two integers\n", avg);

    return 0;

}

float getAvg(int num1, int num2)
{
    return (num1 + num2) / 2.;
}

int getLow(int num1, int num2)
{
    if (num1 < num2)
    {
        return num1;
    }
    else
    {
        return num2;
    }
}

int getHigh(int num1, int num2)
{
    if (num1 > num2)
    {
        return num1;
    }
    else
    {
        return num2;
    }

}

答案 1 :(得分:1)

#include <stdio.h>

int getLow(int num1, int num2);
int getHigh(int num1, int num2);
float getAvg(int num1, int num2);

int main()
{
    float avg;
    int num1, num2, low, high;

    printf("Enter two integers:\n");
    scanf("%i %i", &num1, &num2);

    low=getLow(num1, num2);
    high=getHigh(num1, num2);
    avg=getAvg(num1, num2);

    printf("Low: %d, High: %d, Average: %f", low, high, avg);

    return 0;
}  

int getLow(int num1, int num2){
    if (num1 < num2)
        return num1;
    return num2;
}

int getHigh(int num1, int num2){
    if (num1 > num2)
        return num1;
    return num2;
}

float getAvg(int num1, int num2){
    return (float)(num1 + num2) / 2;
}

输出:

Enter two integers:
5 6
Low: 5, High: 6, Average: 5.500000

答案 2 :(得分:1)

C不允许嵌套函数 - 您不能在getLow的正文中定义 getHighgetAvgmain

函数定义可能出现在其调用者之前(getHigh)或之后(getLow):

int getHigh( int num1, int num2 )      // function definition, also serves
{                                      // as a function declaration
  return num1 > num2 ? num1 : num2;
}

int getLow( int num1, int num2 );      // function declaration

int main( void )
{
  double getAvg( int num1, int num2 ); // function declaration
  ...
  high = getHigh( num1, num2 );        // function call
  low = getLow( num1, num2 );          // function call
  avg = getAvg( num1, num2 );          // function call
  ...
}

int getLow( int num1, int num2 )       // function definition
{
  return num1 < num2 ? num1 : num2;
}

函数声明可能会出现在其调用方(getAvg)内或之前(getLow)。

在调用函数之前,函数声明必须可见。由于函数定义也可以作为声明,我通常会在调用者之前定义一个函数(如果它们都在同一个源文件中),所以我的代码往往会从下往上读取。