-->
当前位置:首页 > 题库 > 正文内容

Luz4年前 (2021-03-08)题库3722
1-1

函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。

(1分)
作者
何振峰
单位
福州大学
1-1
答案正确
(1 分)

1-2

重载函数可以带有默认值参数,但是要注意二义性。

(1分)
作者
何振峰
单位
福州大学
1-2
答案正确
(1 分)

1-3

函数的形参与实参结合的两种方式(传值、传址),其本质区别在于形参与实参结合时,是否在内存空间临时的创建新的内存区域并进行赋值操作。由此,也引发出了两种参数结合方式各自的优缺点,例如传值方式,效率较低,但安全性高;传址方式,效率高,但形参可影响实参的值,故安全性欠佳。

(2分)
作者
李志明
单位
燕山大学
1-3
答案正确

(2 分)

6-1 使用动态内存分配的冒泡排序 (20 分)

编程实现冒泡排序函数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;
}



6-2 面积计算(10 分)

实现一个面积计算器,它能够计算矩形或长方体的面积。

函数接口定义:

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;
}



6-3 函数重载实现两数相加 (15 分)

设计一个重载函数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;
}



6-4 两个整数的交换 (15 分)

本题要求实现一个函数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;
}


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。