C语言 初学C语言,有道题不知道为什么无法运行,有大佬能帮忙看一下吗?多谢了!
2020-02-07
你的代码并非无法运行,而是运行结束了,返回值为100,用时0.179s。这一点通过你控制台的截图可以证明。
我在我的代码环境中将你的代码敲了一遍,似乎也能正常输出。但是你的代码似乎没有正常输出。这可能是你代码不够规范造成的。
通常,C语言程序的主函数应该返回0表示正常退出(也有人说不是必须的),但是你的程序返回100,这显然是不正常的。这可能是你的主函数写法不是特别规范(理论上来说void mian这种写法也是应该被编译器支持的);也有可能是你未编译新代码,直接运行之前未写好的旧代码编译的可执行程序致的造成的(我觉得这种可能性更大些)。
即便如此,与你同样的代码在我的环境下(mingw-w64 GCC 8.1.0)也能正常运行并输出(使用Clang编译器会因主函数没有返回值报错)。这也是为什么我觉得第二种错误的可能性更大。
ISO C11标准对主函数的写法作了如下限制:
5.1.2.2.1 Program startup
The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent; 10) or in some other implementation-defined manner.
关于主函数到底应该怎么写,可以参考知乎的这篇帖子。
建议将你的代码修改如下,然后重新编译,再运行:
#include <stdio.h>
int main(void)
{
int a, w, p;
for (w = 1; w <= 25; w++)
{
for (a = 1; a <= 90; a++)
{
p = 100 - w - a;
if (4 * w + 0.4 * a + 0.2 * p == 40)
printf("%d,%d,%d\n", a, w, p);
}
}
return 0;
}
理论上来说就能看到结果了。