2016-11-11 48 views
0
#include <stdio.h> 

int multiple(int, int); 

int main() 
{ 
    int i; 
    int x; 
    int y; 
    scanf("%d %d", &x, &y); 
    printf("%d", multiple(x,y)); 
} 

int multiple(int N,int M) 
{ 
    int i; 
    int result; 
    for (i=0;i*M<N;i++) 
    { 
     result=i*M; 
     printf("%d", result); 
    } 
} 

當我把輸入(例如x = 100和y = 7)輸出顯示所有倍數,直到105,直到98應該是。循環超過條件

+1

'main'和'multiple'都返回'int',但你沒有返回任何值。確保您注意編譯器警告。如果你使用GCC,至少應該使用'gcc -Wall -Werror'。 –

+0

PS我犯了一個錯誤,也聲明INT我不使用它 –

回答

1

循環並打印多達98但是,multiple被聲明爲返回一個int,但實際上並沒有一個return聲明,因此,返回值是不確定的(並且在實踐中你會得到從一些任意值以前的計算)。然後你打印這個「垃圾」返回值,並在你的情況下恰好是105.

如果你不想multiple返回一個值,那麼不要聲明它返回一個值,並且不要打印它返回的值。

+0

也許這可能是一個愚蠢的問題,但我如何打印「垃圾」返回? –

+0

@FulvioDenza'printf(「%d」,multiple(x,y));'輸出'multiple(x,y)'的返回值。這裏的「垃圾」只是意味着沒有任何意義的數據。 – immibis

+0

非常感謝@immibis –