我刚开始学习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)
或其他内容,代码将会运行并完成。
答案 0 :(得分:3)
它使用gcc
和clang
编译并按预期运行...以使其更清晰(因为其他文本可能会妨碍您查看答案)添加新行输出到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
答案 1 :(得分:0)
您的main函数表示返回类型为“ int ”,但您没有返回任何值。
只需在主函数的最后一个大括号之前添加一个语句return 0。
应该可以正常工作。 这是相同的程序,它工作正常。
#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;
}