赛码网常见接受参数的方法
2016-11-18 17:22
330 查看
前段时间在赛码网上在线笔试,被其编译器各种坑,明明在本地上可以测出数据,但一放上去就是0%,如果本地测得数据是可以的话,说明逻辑基本没问题,那很明显就是在接收参数时出现问题了,经过对赛码网上的编程题的各种常见的传参形式,总结了以下一些基本的接受参数的方法,希望能帮助各位在再笔试时不会被坑:
一行的参数就不多说了,用cin或scanf;主要是多行参数的接收和数组的接收;
关于数组接收有时候会说用空格或,隔开什么的,基本上就这两种方式,其实你只要按正常方式接收就好,如:
12345
1,2,3,4,5,
1 2 3 4 5
统一用C接收:
for(i=0;i<n;++i)
{
scanf("%d",&arr[i]);
}
用C++接收:
for(i=0;i<n;++i)
{
cin>>arr[i];
}
(这里只是说的数组,如果人家给了你固定格式,像日期之类的1994-2-9,那你就乖乖地按scanf("%d-%d-%d",a,b,c)来)
但一般它会让你接收数组大小,如:
5
12345
之类的多行数据接收。
其实关于多行数据我建议就用STL中的容器接收,一次性接收完毕,然后稍加处理就好,如上面的例子可如下接收:
vector<int> arr;
int n,size;
while(cin>>n)
{
arr.push_back(n);
}
size=arr[0];
arr.erase(arr.begin());
这样你的数组大小在size中,数组就在arr里,而且容器用起来很方便还很快,如果是二维的话也可以这样接收,只是你在用的时候注意下取值方式就好了,当然主要还是根据题来选择的,如果是C的话,赛码网的编译器也是在支持这样写的:
int n;
scanf("%d",&n);
int a
;
for(i=0;i<n;++i)
{
scanf("%d",&arr[i]);
}
可是严格来说是不行的,所以建议尽量用C++来接收参数;
对于字符串和字符数组的接收除了scanf外,还有String类,char* fgets(char*string,int
size,FILE*stream) ,cin中的getline函数(用法:istream& getline (char* s, streamsize n );
)都可以在赛码网上进行接收。
还有一种就是它说给n组测试数据,求输出结果,意思就是让你在n次循环下,每接收一组数据,处理一次,如:
输入:
3
1
2
3
4
5
6
输出:
1
2
3
4
5
6
大体如下:
int
n,a,b;
cin>>n;
while(n--)
{
cin>>a>>b;
cout<<a<<b<<endl;
}
以上就是个人总结出来的大部分参数接收方法,根据题意配合着使用应该可以应付大部分编程题,个人建议:尽量使用C++,尽量用STL容器。希望能帮助大家,如果还有其他建议和方法,欢迎留言
一行的参数就不多说了,用cin或scanf;主要是多行参数的接收和数组的接收;
关于数组接收有时候会说用空格或,隔开什么的,基本上就这两种方式,其实你只要按正常方式接收就好,如:
12345
1,2,3,4,5,
1 2 3 4 5
统一用C接收:
for(i=0;i<n;++i)
{
scanf("%d",&arr[i]);
}
用C++接收:
for(i=0;i<n;++i)
{
cin>>arr[i];
}
(这里只是说的数组,如果人家给了你固定格式,像日期之类的1994-2-9,那你就乖乖地按scanf("%d-%d-%d",a,b,c)来)
但一般它会让你接收数组大小,如:
5
12345
之类的多行数据接收。
其实关于多行数据我建议就用STL中的容器接收,一次性接收完毕,然后稍加处理就好,如上面的例子可如下接收:
vector<int> arr;
int n,size;
while(cin>>n)
{
arr.push_back(n);
}
size=arr[0];
arr.erase(arr.begin());
这样你的数组大小在size中,数组就在arr里,而且容器用起来很方便还很快,如果是二维的话也可以这样接收,只是你在用的时候注意下取值方式就好了,当然主要还是根据题来选择的,如果是C的话,赛码网的编译器也是在支持这样写的:
int n;
scanf("%d",&n);
int a
;
for(i=0;i<n;++i)
{
scanf("%d",&arr[i]);
}
可是严格来说是不行的,所以建议尽量用C++来接收参数;
对于字符串和字符数组的接收除了scanf外,还有String类,char* fgets(char*string,int
size,FILE*stream) ,cin中的getline函数(用法:istream& getline (char* s, streamsize n );
)都可以在赛码网上进行接收。
还有一种就是它说给n组测试数据,求输出结果,意思就是让你在n次循环下,每接收一组数据,处理一次,如:
输入:
3
1
2
3
4
5
6
输出:
1
2
3
4
5
6
大体如下:
int
n,a,b;
cin>>n;
while(n--)
{
cin>>a>>b;
cout<<a<<b<<endl;
}
以上就是个人总结出来的大部分参数接收方法,根据题意配合着使用应该可以应付大部分编程题,个人建议:尽量使用C++,尽量用STL容器。希望能帮助大家,如果还有其他建议和方法,欢迎留言
相关文章推荐
- 赛码网常见接受参数的方法
- 关于SQL Server 2005内置加密方法接受输入参数的最大长度
- jsp URI传递参数,对方接受是乱码解决方法
- Struts2中action接受参数方法
- operator new 函数不接受 3 个参数(错误及修正方法)
- struts2的常量、动态方法调用、接受请求参数处理、类型转换
- javascript在静态页面上接受参数的方法
- struts2的常量、动态方法调用、接受请求参数处理、类型转换 .
- 黑马程序员---集合框架工具类Collections,数组工具类Arrays常见方法以及1.5版本新特性(高级for,可变参数和静态导入)
- action接受参数三种方法
- Java常见笔试面试题目深度剖析系列之:Java方法参数传递详解
- gdiplus gdiplusbase operator new 函数不接受 3 个参数(错误及修正方法)
- 关于页面不包含"事件_Click"的定义 并且找不到可接受页面类型的第一个参数的扩展方法"事件_Click" 的解决方案
- Servlet通过get方式接受参数乱码解决方法
- Struts2 接受参数方法
- Java常见笔试面试题目深度剖析系列之:Java方法参数传递详解
- 让方法接受匿名参数
- MyBatis接受参数的两种方法
- ObjectDataSource“odbList”未能找到接受“MyBookShop.Model.Admin”类型的参数的非泛型方法“DeleteAdmin”。
- 创建接受可变数目参数的方法