2016-11-09 104 views
0

基本上我的功课是:功能和本周分离程序

写三个功能: 一个当其与两个整数提供,返回就越低。 另一个返回两个提供的整数中较高的一个。 第三个返回两个整数的平均值 要测试你的函数,编写一个提示输入两个整数的程序,然后输出较低的值,然后输出较高的值,然后输出平均值。 你的程序应该包含函数原型。

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

所以这里是我的代码到目前为止(尴尬)。我无法弄清楚,如果我的逻辑应该高于或低于整数的主线。整体上真的很混乱。我一直在努力学习这个模块(远远超过所有其他模块),但仍然感觉像一个失落的孩子。

#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; 
} 

回答

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; 
    } 

} 
+0

@BLUEPIXY,我实际上正在编辑代码。 –

+1

@ManguSinghRajpurohit你的第一个版本很糟糕。这是好的 – bolov

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 
+0

容易与牛仔空行。对许多空行来说,空行可能太少而空行也太少。我冒昧去消除那些不合时宜的。 – bolov

+0

谢谢队友...... :) – rodelarode

1

C不允许嵌套函数 - 你不能main主体内限定getLowgetHigh,或getAvg

函数定义可以前(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)出现。

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