代码改错#include<iostream> #include<string.h> using namespace std; template<class T> T Min(T q,T j) { if(q<j) { return q; } else if(j<q) { return j; } else { return 0; } } bool operator <(string &c8,string &c9) { bool b = true; for(int i=0;i<20;i++) { if(c8[i]>c9[i]) { b = false; break; } } return b; } bool operator >(string &c8,string &c9) { bool b = true; for(int i=0;i<20;i++) { if(c8[i]<c9[i]) { b = false; break; } } return b; } int main() { int x,y; double a,b; char c1[20],c2[20],c3[20],c4[20]; cin>>x>>y; cout<<Min(x,y)<<endl; cin>>a>>b; cout<<Min(a,b)<<endl; cin>>c1>>c2; cout<<Min(c1,c2)<<endl; cin>>c3>>c4; string s1(c3),s2(c4); cout<<Min(s1,s2)<<endl; return 0; }
时间: 2024-03-21 07:42:36 浏览: 72
#include_iostream.h_
4星 · 用户满意度95%
在代码中,string类的小于号和大于号的重载函数应该加上const关键字,以避免修改参数的值。同时,在比较字符串大小的时候,应该在循环内加上判断该位字符是否为'\0'的条件,因为字符串可能不足20位。以下是修改后的代码:
```
#include<iostream>
#include<string.h>
using namespace std;
template<class T>
T Min(T q,T j) {
if(q<j)
{
return q;
}
else if(j<q)
{
return j;
}
else
{
return 0;
}
}
bool operator <(const string &c8,const string &c9) {
bool b = true;
for(int i=0;i<20 && c8[i]!='\0' && c9[i]!='\0';i++)
{
if(c8[i]>c9[i])
{
b = false;
break;
}
}
return b;
}
bool operator >(const string &c8,const string &c9) {
bool b = true;
for(int i=0;i<20 && c8[i]!='\0' && c9[i]!='\0';i++)
{
if(c8[i]<c9[i])
{
b = false;
break;
}
}
return b;
}
int main()
{
int x,y;
double a,b;
char c1[20],c2[20],c3[20],c4[20];
cin>>x>>y;
cout<<Min(x,y)<<endl;
cin>>a>>b;
cout<<Min(a,b)<<endl;
cin>>c1>>c2;
cout<<Min(c1,c2)<<endl;
cin>>c3>>c4;
string s1(c3),s2(c4);
cout<<Min(s1,s2)<<endl;
return 0;
}
```
阅读全文