Sphere在线法官(生命,宇宙和一切)[关闭]
Posted
技术标签:
【中文标题】Sphere在线法官(生命,宇宙和一切)[关闭]【英文标题】:Sphere online judge ( Life, the Universe, and Everything ) [closed] 【发布时间】:2020-10-19 16:27:01 【问题描述】:您的程序是使用蛮力方法来找到生命、宇宙和一切的答案。更准确地说……将小数从输入改写到输出。读入数字 42 后停止处理输入。输入处的所有数字都是一位或两位数的整数。
输入:1 2 88 42 99
输出:1 2 88
我试图在 c++ 的帮助下解决这个程序,结果得到了错误的结果。
#include<bits/stdc++.h>
using namespace std;
int main()
int i,n;
for(i=0;i<10;i++)
cin>>n;
if(n == 42)
break;
return 0;
然后在 C 的帮助下我解决了这个问题,结果是这样的:
#include <stdio.h>
int main(void)
int i = 0;
while (scanf("%d\n", &i) && i != 42)
printf("%d\n", i);
return 0;
你能告诉我我在第一个程序中犯了什么错误吗?我是编码的新手。 在此先感谢:)
【问题讨论】:
如果您是“编码新手”,那么如何解决这些简单问题的最佳资源is a good C++ textbook。不幸的是,*** 不能替代 C++ 教科书。无意义的在线测验网站只会导致养成不良的编程习惯,例如bits/stdc++.h 和using namespace std;。 请将您的代码放在
之间,就像 GaryNLOL 在他的回答中所做的那样。
你应该检查scanf()
的返回值是1而不是EOF
。 scanf()
返回 EOF
以防出现错误或文件结束并且 EOF
为真(因为它不是 0
)。
第一个程序将输入限制为 10 个输入。如果42
是第 12 个输入,那将是错误的答案。无论如何,它根本不会输出 任何 答案。
初始化一个新数组。将每个元素放入数组中,直到达到 42 或输入结束。对新数组进行排序并打印。
【参考方案1】:
-
使用
#include <bits/stdc++.h>
是一种不好的做法(更多信息here)。
使用using namespace std;
是一种不好的做法(更多信息here)。
您没有打印任何内容。使用std::cout
。
为了代码的可读性,您应该在for
循环语句中声明i
。
我同意 Sam Varshavchik 的观点。如果您想学习 C++,请搜索一本好的教科书,而不是在线测验网站。
#include <iostream>
int main()
int n;
for(int i = 0; i < 10; i++)
std::cin >> n;
if(n == 42)
break;
std::cout << n;
return 0;
【讨论】:
为了展示最佳实践,我还将int n;
放在for
循环的主体内以上是关于Sphere在线法官(生命,宇宙和一切)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章