c++ - 关于 SPOJ 测试的查询

标签 c++

我在这个论坛上问 SPOJ 问题可能是错误的,但我想了解一种我想从这里丰富的社区中了解的机制。

你的程序是使用蛮力方法来找到生命、宇宙和一切的答案。更准确地说......从输入到输出重写小数字。读入数字42后停止处理输入。输入的所有数字都是一位或两位数的整数。

例子

输入: 1个 2个 88 42 99

输出: 1个 2个 88

我的解决方案:

#include <iostream>
using namespace std;

int main()
{
   int n,i=0;
   int a[100] = {0};
   while((cin>>n))
   {
      a[i] = n;
      i++;
      continue;
   }

   for(int j = 0;a[j]!=42;j++)
      cout<<a[j]<<endl;
   return 0;
}

好的解决方案:

#include <iostream>
using namespace std;

int main()
{
   int n;
   while(true)
   {
      cin>>n;
      if(n == 42)
         break;
      cout<<n<<endl;
   }
   return 0;
}

我的问题是好的解决方案中的输入会发生什么?我们只会运行循环直到数字不是 42。好的解决方案如何处理剩余的输入?我得到一些提示,它与缓冲有些相关和所有。请向我提供一些解释或链接或学习 Material 或至少一些关键字到谷歌等以获得清晰度。

最佳答案

好的解决方案中剩余的输入将被“好的解决方案”忽略。

如果您需要更多信息,请阅读:

对象

std::cin

extern istream cin;

标准输入流 istream 类的对象,表示面向窄字符(char 类型)的标准输入流。它对应于 C 流标准输入。

标准输入流是由环境决定的字符来源。通常假设是从外部源输入,例如键盘或文件。

对象 <强> stdin 文件 * 标准输入;

标准输入流 标准输入流是应用程序的默认数据源。在大多数系统中,它通常默认定向到键盘。

stdin 可以用作任何需要输入流 (FILE*) 作为其参数之一的函数的参数,例如 fgets 或 fscanf。

关于c++ - 关于 SPOJ 测试的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26930699/

相关文章:

c++ - 如何在//评论中转义反斜杠

c++ - 如何从 C++ 元组中获取 Args...

c++ - 宏参数上的 Foreach 宏

c++ - 为什么多重继承具有不同签名的方法不明确?

c++ - 带有 boost 库 C++ 的 vector 字符串给出错误

c++ - 是否有一种 STL 方法可以对指针 vector 进行深度复制?

c++ - OpenCV 从网络摄像头流中分离剪影

c++ - 在带有 XCode 4.1 的 Mac OS X Lion 上找不到 OpenAL 的 AL/al.h

c++ - 为什么我在 Visual Studio 的 OpenCV 项目中使用/MT 时仍然需要 dll?

c++ - 使用 NAN 在 Node.js 的 C++ 模块中未调用 SetAccessor 函数