2016-11-11 5 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 iを宣言し、それを使わない間違いをしました –

答えて

1

ループは、最大しかし98に印刷しない、multipleintを返すように宣言されているが、実際にreturn声明を持っていないので、戻り値は指定されていない(実際には、あなたはからいくつかの任意の値を取得します前回の計算)。あなたはこの "ガベージ"戻り値を出力し、あなたの場合は105になります。multipleに値を返すことを望まない場合は、値を返すように宣言しないでください。戻り値

+0

たぶんそれはばかげた質問かもしれませんが、どうやって "ゴミ"リターンを出すのですか? –

+0

@FulvioDenza 'printf("%d "、multiple(x、y));' multiple(x、y) 'の戻り値を出力します。ここで「ゴミ」とは、何も意味しないデータを意味します。 – immibis

+0

ありがとうございます@immibis –