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而不是EOFscanf() 返回 EOF 以防出现错误或文件结束并且 EOF 为真(因为它不是 0)。 第一个程序将输入限制为 10 个输入。如果42 是第 12 个输入,那将是错误的答案。无论如何,它根本不会输出 任何 答案。 初始化一个新数组。将每个元素放入数组中,直到达到 42 或输入结束。对新数组进行排序并打印。 【参考方案1】:
    使用#include &lt;bits/stdc++.h&gt; 是一种不好的做法(更多信息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在线法官(生命,宇宙和一切)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在线判断退出代码为 6 的运行时错误 [关闭]

道格拉斯·亚当斯的“银河系漫游”五部曲的顺序是啥?

硅基生命之漫谈-2:宇宙之基本法则:聚合与分解?

元宇宙虚拟房产到底是什么?为什么这么火?会和比特币一样吗?

1013: [JSOI2008]球形空间产生器sphere

1013: [JSOI2008]球形空间产生器sphere