题目
源代码
一、错误示范
1 //去比较最高位数字的大小,大的在前面(ASCII比较) 2 //使用字符串存储多个数字 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 struct stu 7 { 8 string s; 9 }student[25]; 10 bool cmp(stu a,stu b) 11 { 12 return a.s>b.s; //不能直接这么写,有些数据会出错 13 //return a.s+b.s>b.s+a.s; 14 } 15 int main() 16 { 17 int n; 18 cin>>n; 19 for(int i=1;i<=n;i++) 20 { 21 cin>>student[i].s; 22 } 23 sort(student+1,student+1+n,cmp); 24 for(int i=1;i<=n;i++) 25 { 26 cout<<student[i].s; 27 } 28 return 0; 29 }
得分情况:
二、正确答案
1 //去比较最高位数字的大小,大的在前面(ASCII比较) 2 //使用字符串存储多个数字 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 struct stu 7 { 8 string s; 9 }student[25]; 10 bool cmp(stu a,stu b) 11 { 12 //return a.s>b.s; //不能直接这么写,有些数据会出错 13 return a.s+b.s>b.s+a.s; 14 } 15 int main() 16 { 17 int n; 18 cin>>n; 19 for(int i=1;i<=n;i++) 20 { 21 cin>>student[i].s; 22 } 23 sort(student+1,student+1+n,cmp); 24 for(int i=1;i<=n;i++) 25 { 26 cout<<student[i].s; 27 } 28 return 0; 29 }