2016-11-09 57 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)出現。

函數聲明在函數調用之前必須可見。由於函數定義也可以作爲聲明,所以我通常會在調用者之前定義一個函數(如果它們都在同一個源文件中),所以我的代碼傾向於從底層讀取。