CPP2022-16-宏、函数重载与函数模板(下)

简介: CPP2022-16-宏、函数重载与函数模板(下)

6-7 最大值函数重载

分数 10

全屏浏览题目

切换布局

作者 杨军

单位 四川师范大学

编写重载函数myMax可分别求取两个整数,三个整数,两个双精度数的最大值。

函数接口定义:

裁判测试程序样例:

/* 请在这里填写答案 */ int main(){ cout<<myMax(3,4)<<endl; cout<<myMax(3,4,5)<<endl; cout<<myMax(4.3,3.4)<<endl; }

输入样例:

输出样例:

在这里给出相应的输出。例如:

1. 4
2. 5
3. 4.3
1. #include<bits/stdc++.h>
2. using namespace std;
3. int myMax(int x,int y)
4. {
5. return x>y?x:y;
6. }
7. int myMax(int x,int y,int z)
8. {
9. if(x>y)
10.     {
11. if(x>z)
12.         {
13. return x;
14.         }
15. else
16.         {
17. return z;
18.         }
19.     }
20. else
21.     {
22. if(y>z)
23.         {
24. return y;
25.         }
26. else
27.         {
28. return z;
29.         }
30.     }
31. }
32. double myMax(double x,double y)
33. {
34. return x>y?x:y;
35. }

6-8 函数重载实现两数相加

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

输入样例:

1. 3 5
2. 3.3333 5.555555
3. hello world

输出样例:

1. 8
2. 8.89
3. helloworld
1. int add(int a,int b)
2. {
3. return a+b;
4. }
5. double add(double a,double b)
6. {
7. return a+b;
8. }
9. string add(string a,string b)
10. {
11. return a+b;
12. }

6-9 最大值(模板)*

分数 10

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

请设计求两个对象最大值的函数模板。

1. #include <iostream>
2. using namespace std;
3. 
4. /* 你提交的代码将被嵌在这里 */
5. 
6. int main()
7. {
8.     int a, b, c;
9.     cin >> a >> b;
10.     c = Max(a, b);
11.     cout << c << endl;
12. return 0;
13. }

输入样例

37 29

输出样例

37
1. template<typename T, typename U>
2. inline auto Max(T const& x, U const& y) -> decltype(x > y ? x : y)
3. {
4.  return x > y ? x : y;
5. }

6-10 绝对值函数模板*

分数 10

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

请设计求对象绝对值的函数模板。

1. #include <iostream>
2. using namespace std;
3. 
4. /* 你提交的代码将被嵌在这里 */
5. 
6. int main()
7. {
8.     int a, b;
9.     cin >> a;
10.     b = Abs(a);
11.     cout << b << endl;
12. return 0;
13. }

输入样例1

37

输出样例1

37

输入样例2

-37

输出样例2

37
1. template<class T>
2. T Abs(T &x)
3. {
4. return x<0?-x:x;
5. }

6-11 求最大值函数模板

分数 10

全屏浏览题目

切换布局

作者 董卫萍

单位 绍兴文理学院元培学院

函数重载实现了让同名函数处理不同类型的数据,但最好的解决方法是类型参数化,这样就得到了函数模板。使用模板的目的就是能够让程序员编写与类型无关的代码。要求设计求两个或三个不同类型变量之最大值的函数模板,并在主函数中进行测试。

函数接口定义:

template<class T> T myMax(T a,T b); template<class T> T myMax(T a,T b,T c); T是抽象类型,可以由int,double,char,string类型实例化,两个函数模板也可以进行重载。

裁判测试程序样例:

#include <iostream> #include <string> using namespace std; /* 你提交的代码将被嵌在这里 */ int main() { int a, b, c; double s,t; string x,y; cin>>x>>y; cout << myMax(x,y) << endl; cin>>a>>b>>c; cout << myMax(a,b,c) << endl; cin>>s>> t; cout << myMax(s,t) << endl; cin>> a >> b; cout << myMax(a,b) << endl; return 0; }

输入样例:

在这里给出一组输入。例如:

1. hello world!
2. 12 3 45
3. 3.14 5.67
4. 120 -100

输出样例:

在这里给出相应的输出。例如:

1. world!
2. 45
3. 5.67
4. 120
1. template<class T> T myMax(T x,T y)
2. {
3. return x>y?x:y;
4. }
5. template<class T> T myMax(T x,T y,T z)
6. {
7. if(x>y)
8.     {
9. if(x>z)
10.         {
11. return x;
12.         }
13. else
14.         {
15. return z;
16.         }
17.     }
18. else
19.     {
20. if(y>z)
21.         {
22. return y;
23.         }
24. else
25.         {
26. return z;
27.         }
28.     }
29. }

6-12 myMax模板函数 - C/C++ 函数与抽象

分数 10

全屏浏览题目

切换布局

作者 海洋饼干叔叔

单位 重庆大学

请设计合适的模板函数myMax(),使得下述程序可以正确运行。myMax()函数比较并返回两个同类型形参对象中的较大者。

裁判测试程序样例:

#include <iostream> using namespace std; //在此处定义myMax模板函数 int main(){ cout << myMax(3,2) << endl; cout << myMax(string("hello"),string("howdy")) << endl; cout << myMax(3.2,0.5) << endl; cout << myMax(true,false) << endl; return 0; }

输入样例:


         

输出样例:

1. 3
2. howdy
3. 3.2
4. 1

请注意:函数题只需要提交相关函数的定义代码,不要提交完整程序。

1. template<class T>
2.     T myMax(T a,T b)
3. {
4. return a>b?a:b;
5. }
目录
打赏
0
0
0
0
2
分享
相关文章
c/c++宏定义(函数)
c/c++宏定义(函数)
|
9月前
|
函数声明
函数声明。
149 1
|
9月前
|
CPP的函数重载
CPP的函数重载
78 0
|
9月前
|
详解C语言可变参数列表(stdarg头文件及其定义的宏)
详解C语言可变参数列表(stdarg头文件及其定义的宏)
122 0
能“提升”的不只是变量,函数声明也可以,那谁更“吊”?
能“提升”的不只是变量,函数声明也可以,那谁更“吊”?
90 0
能“提升”的不只是变量,函数声明也可以,那谁更“吊”?
关于C++编译链接和模板函数
一,关于编译链接编译指的的把编译单元生成目标文件的过程链接是把目标文件链接到一起的过程编译单元:可以认为是一个.c或者.cpp文件。每个编译单元经过预处理会得到一个临时的编译单元。预处理会间接包含其他文件还会展开宏调用。
1346 0

热门文章

最新文章