【C++函数题目】重载完成Compare函数
题目来源链接:https://www.dotcpp.com/oj/problem2008.html
题目讲解链接:http://6o2.cn/1yjJB2
题目描述
利用函数重载完成三个比较大小的Compare函数,供主函数调用
三个Compare函数分别可以处理两个整数、两个字符、两个字符串的比较。
若两个整数比较:若第一个值大于第二个值,则输出最大的一个
若两个字符比较:输出他们的ASC码差值的绝对值
若两个字符串比较:输出最大的一个字符串
要求这三个函数都叫做Compare函数,利用参数类型不同,用函数重载实现
输入
三行
第一行,两个整数,空格分开
第二行,两个字符,空格分开
第三行,两个字符串,空格分开
输出
三行
第一行最大的一个数
第二行两个字符ASC码差值的绝对值
第三行最大的一个字符串
样例输入
10 20 A a Dotcpp com
样例输出
20 32 com
题目代码
1 #include<iostream> 2 using namespace std;
3 int Compare(int a,int b);//比较整型数据大小的函数
4 int Compare(char a,char b); //比较字符型数据大小的函数
5 string Compare(string a,string b);//比较字符串型数据大小的函数
7 int main() 6 { 7 int m1,n1; 8 cin>>m1>>n1; 9 cout<<Compare(m1,n1)<<endl; 10 11 char m2,n2; 12 cin>>m2>>n2; 13 cout<<Compare(m2,n2)<<endl; 14 15 string m3,n3; 16 cin>>m3>>n3; 17 cout<<Compare(m3,n3)<<endl; 18 19 return 0; 20 }
21 int Compare(int a,int b)//比较整型数据大小的函数 22 { 23 int max1 = a ; 24 if (b > max1) max1=b; 25 return max1; 26 } 27 int Compare(char a,char b)//比较字符型数据大小的函数 28 { 29 int result = int (a) - int(b) ;//强制类型转换得到ASCII码值 30 if(result<0) result = -result;//结果取绝对值 31 return result; 32 } 33 string Compare(string a,string b)//比较字符串型数据大小的函数 34 { 35 if(a<b) return b; 36 else return a; 37 }
注意:
1.strcmp()函数是C风格的字符串函数,只能用于char str[size]; 不适用于string str1;
这里完全可以用C++字符串,直接使用==、>、<判断大小,简洁方便。
2.在C++中获取字符的ASCII码值:
提示:字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到储存单元。
做法:定义字符char,输入后把字符强制转换成整数,就是该字符的ASCII码值,即int(char)。