2014-10-26 29 views
-5
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 

void Multiplier(a, b); 
int main() 
{ 
    int a; 
    int b; 
    printf("Enter the first no.\n"); 
    scanf("%d", a); 
    printf("Enter the second no.\n"); 
    scanf("%d", b); 
    Multiplier(a, b); 
    return 0; 
} 
void Multiplier(a, b) 
{ 
    printf("The result of a*b is %d", a*b); 
    return; 
} 

當我嘗試運行它,它打印:爲什麼這個基於scanf和函數的簡單程序無法正常工作?

輸入第一個沒有。

只要我輸入任何號碼,並點擊輸入它說「項目名稱.exe已停止工作」。

什麼問題?

+4

'的scanf( 「%d」,&a);''的scanf( 「%d」,&b);' – P0W 2014-10-26 14:03:59

+1

[常見的C編程錯誤2.3.1忘記給在參數上加一個&符號(&)](http://www.drpaulcarter.com/cs/common-c-errors.php#2.3.1) – 2014-10-26 14:05:36

+1

該程序不應該編譯(至少不是沒有警告)。 – mafso 2014-10-26 14:07:53

回答

1

變化

scanf("%d", a); 

scanf("%d", &a); 

scanf("%d", b); 

scanf("%d", &b); 

scanf預計int*,你傳遞和導致崩潰類型int的參數。

此外,函數的聲明Multiplier應該

void Multiplier(int a, int b); 

void Multiplier(int, int); 

,而不是

void Multiplier(a, b); 

,而它的定義應該是

void Multiplier(int a, int b) 
{...} 


所以最終的代碼如下:

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

void Multiplier(int,int); 
int main() 
{ 
    int a; 
    int b; 
    printf("Enter the first no.\n"); 
    scanf("%d", &a); 
    printf("Enter the second no.\n"); 
    scanf("%d", &b); 
    Multiplier(a, b); 
    return 0; 
} 
void Multiplier(int a,int b) 
{ 
    printf("The result of a*b is %d", a*b); 
    return; 
} 
+0

非常感謝CoolGuy先生給出了這樣一個徹底的答案。 感謝其他人張貼評論。 – Neeraj 2014-10-26 15:53:58

相關問題