问题:你的程序是使用蛮力方法来找到生命,宇宙和万物的答案。更确切地说......从输入到输出重写小数字。读取数字42后停止处理输入。输入的所有数字都是一位或两位数的整数。 实施例
Input:
1
2
88
42
99
Output:
1
2
88
我的尝试:
#include <stdio.h>
void main ()
{
int number;
do
{
scanf("%d",&number);
if (number != 42)
{
printf("%d\n",number);
}
}while (number != 42);
}
答案 0 :(得分:2)
我运行了您的代码并出现错误:
警告:'main'的返回类型不是'int'[-Wmain-return-type] void main()
然而它是gcc版本4.2.1
我通过将void的类型声明更改为int并添加返回0来修复它。
#include <stdio.h>
int main ()
{
int number;
do
{
scanf("%d",&number);
if (number != 42)
{
printf("%d\n",number);
}
}while (number != 42);
return 0;
}
答案 1 :(得分:2)
NZEC
代表non-zero exit code
,这意味着您的main
函数不会返回零。
如果您在codechef上运行代码,main
函数必须返回零,否则codechef会认为您的程序没有成功退出。
总是提醒自己:
int main()
{
// some code
return 0;
}
或
int main(int argc, char *argv[])
{
// some code
return 0;
}
void main
是C编程语言中的非标准扩展名,在C ++编程语言中是禁止。
P.S。
ISO C 90/99/11标准,第5.1.2.2.1节,程序启动:
程序启动时调用的函数名为 main 。该 实现声明此函数没有原型。它应该 使用返回类型 int 定义并且没有参数:
int main(void) { /* ... */ }
或有两个参数(此处称为 argc 和 argv ,但任何参数 可以使用名称,因为它们是它们所在的函数的本地名称 声明):
int main(int argc, char *argv[]) { /* ... */ }
或同等的;或者以其他一些实现定义的方式。
ISO C ++ 98/03/11标准,第3.6.1节,主要功能:
实现不得预定义 main 函数。这个功能 不得超载。它的返回类型应为 int ,但是 否则其类型是实现定义的。所有实施 应允许 main 的以下定义:
int main() { /* ... */ }
和
int main(int argc, char* argv[]) { /* ... */ }