有关SPOJ TEST的查询

时间:2014-11-14 13:06:20

标签: 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.好的解决方案如何处理剩余的输入?我得到一些暗示它与缓冲有些关联和所有。请向我提供一些解释或链接或学习材料或至少一些关键词谷歌等,以明确这一点。

1 个答案:

答案 0 :(得分:0)

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

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

对象

<强> std::cin

extern istream cin;

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

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

对象 的 stdin FILE * stdin;

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

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