2012-12-09 103 views
4

我正在學習C編程,並編寫了一個簡單的程序來學習C語言函數。我在這裏使用了兩個函數,雖然第一個函數可以工作,但不是第二個函數!函數不能在c中工作

下面是簡單的代碼:

#include<stdio.h> 

void main() { 
    int a,b,c,sum; 
    printf("Input your numbers one by one:\n"); 
    scanf("%d", &a); 
    scanf("%d", &b); 
    scanf("%d", &c); 
    printf("You have put %d, %d, %d\n\n", a, b, c); 
    max (a,b,c); 
    min (a,b,c); 
} 

void max (int a, int b, int c) { 
    int sum; 
    a=sum; 
    if(sum>b) 
    sum=b; 
    if(sum>c) 
    sum=c; 
} 

void min (int f, int g, int h) { 
    int sum; 
    sum=f; 
    if(sum<g) 
    sum=g; 
    if(sum<h) 
    sum=h; 
    printf("The lowest value is:%d\n\n\n",sum); 
} 

誰能告訴我,爲什麼出現這種情況和解決辦法嗎?

+0

你應該小心使用C未初始化的局部變量,它們不會被默認設置爲零。 –

+0

當問questin時,你應該告訴你得到了什麼結果,以及你期望得到什麼結果......並且,你是否缺少'max'函數的printf?現在,它並沒有真正做任何事情,編譯器可能實際上完全優化它... – hyde

回答

4

您的任何功能都無法工作。第一個在變量a中設置當前值sum,它是單位化的。

那麼對於MAX值進行搜索時,你檢查是否當前總和(應該是a)比b更大,如果它是你存放在sumb值。

然後,如果您想在定義函數之前調用函數,則需要將函數的原型放在文件的開頭。由於您在定義之前調用了min()max(),因此出現編譯錯誤。

它應該是這樣的:

#include<stdio.h> 

void max (int a, int b, int c); 
void min (int f, int g, int h); 

void main() 
{ 
    int a,b,c,sum; 
    printf("Put your numbers throughly one by one:\n"); 
    scanf("%d", &a); 
    scanf("%d", &b); 
    scanf("%d", &c); 
    printf("You have putted %d, %d, %d\n\n", a, b, c); 
    max (a,b,c); 
    min (a,b,c); 
} 

void max (int a, int b, int c) 
{ 
    int sum; 
    sum = a; 
    if(sum<b) 
     sum=b; 
    if(sum<c) 
     sum=c; 

    printf("The max value is:%d\n\n\n",sum); 
} 

void min (int f, int g, int h) 
{ 
    int sum; 
    sum=f; 
    if(sum>g) 
     sum=g; 
    if(sum>h) 
     sum=h; 

    printf("The min value is:%d\n\n\n",sum); 
} 
+0

謝謝,但爲什麼第二個功能不工作http://i.stack.imgur.com/YJU3T.png –

+0

當我看你給我們的代碼,max()函數不會打印任何東西(沒有調用printf),但是min()會打印。在你的圖像中,max()似乎調用printf()你可以更新當前的代碼嗎? – koopajah

+0

雖然我有Microsoft Visual Studio中的更新代碼,但是它將我編譯的以前的代碼,爲什麼不更新新的源代碼? –