OJ的输入输出问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuelabizp/article/details/50788034

OJ的输入输出问题

标签: 博客 工具


1.引言

以前接触的OJ都是直接编写一个成员函数,不需要考虑读入数据的问题。今天做了某公司2016年研发工程师的编程题,题倒是不难,但是需要考虑读入数据的问题,然后就跪在了这里……好久没接触数据的输入问题,查阅了一些资料,总结一下,以免以后再跪在这里,太委屈了。主要说一下C和C++的输入输出处理,其他语言对于输入输出的处理方法都是相通的。

2.常见输入问题

均以求两个输入数据的和为例子讲解。

2.1只有一组数据

解决方法:直接处理
C

int a,b;
scanf("%d%d", &a,&b);
printf("%d\n", a+b);

C++

int a,b;
cin>>a>>b;
cout<<a+b<<endl;

2.2有多组数据,但是告诉了数据个数

解决方法:先读入数据个数,然后根据数据个数读入数据
C

int a,b,n;
scanf("%d", &n);
for (int i=0; i<n; i++)
{
    scanf("%d%d", &a,&b);
    printf("%d\n", a+b);
}

C++

int a,b,n;
cin>>n;
for (int i=0; i<n; i++)
{
    cin>>a>>b;
    cout<<a+b<<endl;
}

2.3有多组数据,且不知道数据数量

解决方法:不断循环读入数据,直到结尾
C

int a,b;
while (scanf("%d%d", &a,&b)!=EOF)
    printf("%d\n", a+b);

C++

int a,b;
while (cin>>a>>b)
    cout<<a+b<<endl;

2.常见输出问题

输出问题主要是输出格式上的问题,最常见的就是只要求输入一个计算结果,且单独成行。具体按照什么样的格式输出,题目都会有要求或者示例,其它常见的输出要求有加逗号,换行两次,加特定字符(注意大小写)等等。输出之所以这么严格的要求格式,是因为判题的结果是我们计算的结果和标准结果相比较产生的,只要不一样就是错。

3.其它OJ补充

  • 不需要保存输入的数据,读一组,算一组,输出一组
  • 所有的输入输出都是标准输入输出,不需要对文件进行操作
  • 当运行时间过长时,可以用scanfgets代替cinprintf代替cout,快
  • main函数为int型,返回值必须为0
  • 使用指针之前先检测是不是为NULL,否则会出现段错误
  • 递归函数没有终止条件的话也会出现段错误

猜你喜欢

转载自blog.csdn.net/xuelabizp/article/details/50788034