1-1函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
(1分)作者何振峰单位福州大学1-1答案正确(1 分)
1-2重载函数可以带有默认值参数,但是要注意二义性。
(1分)作者何振峰单位福州大学1-2答案正确(1 分)
1-3函数的形参与实参结合的两种方式(传值、传址),其本质区别在于形参与实参结合时,是否在内存空间临时的创建新的内存区域并进行赋值操作。由此,也引发出了两种参数结合方式各自的优缺点,例如传值方式,效率较低,但安全性高;传址方式,效率高,但形参可影响实参的值,故安全性欠佳。
(2分)作者李志明单位燕山大学1-3答案正确(2 分)
编程实现冒泡排序函数int* bubble_sort(int n);。其中n为数组长度(1≤n≤1000)。 ###函数接口定义如下:
int* bubble_sort(int n);/* 对长度为n的数组arr执行冒泡排序 */
请实现bubble_sort函数,使排序后的数据从小到大排列。要求在bubble_sort函数内使用动态内存分配方式分配一个大小为n的数组,再读入待排序数据,排序完成后返回数组。
###裁判测试程序样例:
#include <iostream>using namespace std;int* bubble_sort(int n);/* 对长度为n的数组执行冒泡排序 */int main(){ int n; cin >> n; int* a = bubble_sort(n); for (int i = 0; i < n; i++) { cout << a[i]; if (i < n - 1)cout << " ";
} cout << endl; return 0;
}/* 你的代码将嵌在这里 */
###输入样例:
10
15168 28139 13714 27801 22208 32524 21653 8353 28341 25922
###输出样例:
8353 13714 15168 21653 22208 25922 27801 28139 28341 32524
作者李廷元单位民用航空飞行学院代码长度限制16 KB时间限制400 ms内存限制int* bubble_sort(int n){
int *a=new int[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
int b=a[j+1];
a[j+1]=a[j];
a[j]=b;
}
}
}
return a;
delete []a;
}
实现一个面积计算器,它能够计算矩形或长方体的面积。
函数接口定义:
int area(int x, int y);int area(int x, int y, int z);
第一个函数计算长方形的面积,其中x和y是长和宽。第二个函数计算长方体的表面积,x,y和z是长,宽和高。
裁判测试程序样例:
#include<iostream>#include<string>using namespace std;int area(int,int);int area(int,int,int);int main(){ int i, repeat, c, x, y, z; cin>>repeat; for(i=0;i<repeat;i++){ cin>>c; if(c==2){ cin>>x>>y; cout<<area(x,y)<<endl;
} if(c==3){ cin>>x>>y>>z; cout<<area(x,y,z)<<endl;
}
} return 0;
}/* 请在这里填写答案 */
输入样例:
2
2 1 2
3 2 3 4
输出样例:
2
52
作者何振峰单位福州大学代码长度限制16 KB时间限制400 ms内存限制64 MBint area(int a,int b)
{
return a*b;
}
int area(int a,int b,int c)
{
return a*b*2+a*c*2+b*c*2;
}
设计一个重载函数add,该函数有两个参数,可以实现两个类型相同的参数相加的操作,函数返回相加的结果。两个参数可以是整数、实数和字符串,但必须保证两个参数类型相同。
裁判测试程序样例:
#include <iostream>#include <string>#include <iomanip>using namespace std;/* 请在这里填写答案 */int main(){ int a, b; double c, d; string s1, s2; cin >> a >> b; cin >> c >> d; cin >> s1 >> s2; cout << add(a, b) << endl; cout << fixed << setprecision(2) << add(c, d) << endl; cout << add(s1, s2) << endl; return 0;
}
输入样例:
3 5
3.3333 5.555555
hello world
输出样例:
8
8.89
helloworld
作者李廷元单位民用航空飞行学院代码长度限制16 KB时间限制400 ms内存限制64 MBint add(int a,int b){
return a+b;
}
double add(double a,double b){
return a+b;
}
string add(string a,string b){
return a+b;
}
本题要求实现一个函数swap,实现两个整数的交换。
函数接口定义:
void swap ( int &a, int &b );
### 裁判测试程序样例:#include <iostream>using namespace std;void swap ( int &a, int &b );int main(){ int x, y; cin>>x>>y;
swap(x, y); cout<<x<<' '<<y<<endl; return 0;
}/* 请在这里填写答案 */
输入样例:
3 5
输出样例:
5 3
作者王秀单位福州大学代码长度限制16 KB时间限制400 ms内存限制64 MBvoid swap ( int &a, int &b ){
int c=b;
b=a;
a=c;
}
1-1
函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
(1分)
作者
何振峰
单位
福州大学
1-1
答案正确
(1 分)
1-2
重载函数可以带有默认值参数,但是要注意二义性。
(1分)
作者
何振峰
单位
福州大学
1-2
答案正确
(1 分)
1-3
函数的形参与实参结合的两种方式(传值、传址),其本质区别在于形参与实参结合时,是否在内存空间临时的创建新的内存区域并进行赋值操作。由此,也引发出了两种参数结合方式各自的优缺点,例如传值方式,效率较低,但安全性高;传址方式,效率高,但形参可影响实参的值,故安全性欠佳。
(2分)
作者
李志明
单位
燕山大学
1-3
答案正确
(2 分)
编程实现冒泡排序函数int* bubble_sort(int n);。其中n为数组长度(1≤n≤1000)。 ###函数接口定义如下:
int* bubble_sort(int n);/* 对长度为n的数组arr执行冒泡排序 */
请实现bubble_sort函数,使排序后的数据从小到大排列。要求在bubble_sort函数内使用动态内存分配方式分配一个大小为n的数组,再读入待排序数据,排序完成后返回数组。
###裁判测试程序样例:
#include <iostream>using namespace std;int* bubble_sort(int n);/* 对长度为n的数组执行冒泡排序 */int main(){ int n; cin >> n; int* a = bubble_sort(n); for (int i = 0; i < n; i++) { cout << a[i]; if (i < n - 1)cout << " "; } cout << endl; return 0; }/* 你的代码将嵌在这里 */
###输入样例:
10 15168 28139 13714 27801 22208 32524 21653 8353 28341 25922
###输出样例:
8353 13714 15168 21653 22208 25922 27801 28139 28341 32524
作者
李廷元
单位
民用航空飞行学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
int* bubble_sort(int n){ int *a=new int[n]; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n;i++){ for(int j=0;j<n-1-i;j++){ if(a[j]>a[j+1]){ int b=a[j+1]; a[j+1]=a[j]; a[j]=b; } } } return a; delete []a; }
实现一个面积计算器,它能够计算矩形或长方体的面积。
函数接口定义:
int area(int x, int y);int area(int x, int y, int z);
第一个函数计算长方形的面积,其中x和y是长和宽。第二个函数计算长方体的表面积,x,y和z是长,宽和高。
裁判测试程序样例:
#include<iostream>#include<string>using namespace std;int area(int,int);int area(int,int,int);int main(){ int i, repeat, c, x, y, z; cin>>repeat; for(i=0;i<repeat;i++){ cin>>c; if(c==2){ cin>>x>>y; cout<<area(x,y)<<endl; } if(c==3){ cin>>x>>y>>z; cout<<area(x,y,z)<<endl; } } return 0; }/* 请在这里填写答案 */
输入样例:
2 2 1 2 3 2 3 4
输出样例:
2 52
作者
何振峰
单位
福州大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
int area(int a,int b) { return a*b; } int area(int a,int b,int c) { return a*b*2+a*c*2+b*c*2; }
设计一个重载函数add,该函数有两个参数,可以实现两个类型相同的参数相加的操作,函数返回相加的结果。两个参数可以是整数、实数和字符串,但必须保证两个参数类型相同。
裁判测试程序样例:
#include <iostream>#include <string>#include <iomanip>using namespace std;/* 请在这里填写答案 */int main(){ int a, b; double c, d; string s1, s2; cin >> a >> b; cin >> c >> d; cin >> s1 >> s2; cout << add(a, b) << endl; cout << fixed << setprecision(2) << add(c, d) << endl; cout << add(s1, s2) << endl; return 0; }
输入样例:
3 5 3.3333 5.555555 hello world
输出样例:
8 8.89 helloworld
作者
李廷元
单位
民用航空飞行学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
int add(int a,int b){ return a+b; } double add(double a,double b){ return a+b; } string add(string a,string b){ return a+b; }
本题要求实现一个函数swap,实现两个整数的交换。
函数接口定义:
void swap ( int &a, int &b );
### 裁判测试程序样例:#include <iostream>using namespace std;void swap ( int &a, int &b );int main(){ int x, y; cin>>x>>y; swap(x, y); cout<<x<<' '<<y<<endl; return 0; }/* 请在这里填写答案 */
输入样例:
3 5
输出样例:
5 3
作者
王秀
单位
福州大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
void swap ( int &a, int &b ){ int c=b; b=a; a=c; }