2016-11-11 114 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 –