1

我刚开始学习 C,所以我不知道为什么会这样。

#include <stdio.h>

int square(int x);

int main(int argc, const char * argv[])
{
    printf("Enter a number");
    int userNum;
    scanf("%d", &userNum);
    int result = square(userNum);
    printf("The result is %d", result);

}

int square(int x){
    int result = x*x;
    return result;
}

它会要求一个数字,但在我输入后什么都不会发生。如果我将 scanf 取出并放置square(10)或其他东西,代码将运行并完成。

4

2 回答 2

3

它按预期编译和运行,同时使用gccclang... 使其更清晰(因为其他文本可能妨碍您查看答案)在您输出的内容中添加新行stdout

int main( void ) {
    printf("Enter a number: ");

    int userNum;

    scanf("%d", &userNum);

    int result = square(userNum);

    printf("\nThe result is: %d\n", result);

    return 0;
}

如果您在终端(而不是管道输入)中进行测试,请回想一下scanf(使用%d占位符)将读取一个整数,直到下一个不是数字字符的字符。因此,您需要在键盘上输入 10 并返回(或回车)。否则,将您的程序通过管道输入文件:

10

...使用以下命令:

./a.out < input.txt
于 2013-08-13T01:42:17.663 回答
0

您的 main 函数说返回类型是“ int ”,但您没有返回任何值。

只需在 main 函数的最后一个右大括号之前添加一个语句 return 0 即可。

它应该可以正常工作。这是相同的程序,它工作正常。

http://ideone.com/H3Izqh

#include <stdio.h>

int square(int x);

int main(int argc, const char * argv[])
{
    printf("Enter a number");
    int userNum;
    scanf("%d", &userNum);
    int result = square(userNum);
    printf("\nThe result is %d", result);
    return 0;   //NOTICE THIS STATEMENT
}

int square(int x){
    int result = x*x;
    return result;
}
于 2013-08-13T04:58:42.913 回答