【C++ 字符串题目】 输入三个人名,按字母顺序排序输出
作者:互联网
题目来源:https://acm.ujn.edu.cn
Problem A: 【C++ 字符串】 输入三个人名,按字母顺序排序输出
Time Limit: 1 Sec Memory Limit: 128 MBDescription
输入三个人名,按字母顺序对其进行排序,然后输出。要求使用C++的string类型。
Input
三个人名,可以包含空格
Output
排序后的人名,每个人名占一行
Sample Input
Mike Mary Jim Green
Sample Output
Jim Green Mary Mike
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main() 5 { 6 string string1,string2,string3,temp;//定义 7 8 //从每行输入一个可以包含空格的字符串 9 getline(cin,string1); 10 getline(cin,string2); 11 getline(cin,string3); 12 // 先保证str2小于等于str3 13 if(string2>string3) 14 { 15 temp=string2; 16 string2=string3; 17 string3=temp; 18 } 19 // 如果str1恰好小于str2 按顺序输出即可 20 if(string1<=string2) 21 { 22 cout<<string1<<endl<<string2<<endl<<string3<<endl; 23 } 24 // 其他情况下(str1>str2), 25 // 如果str1小于等于str3,则 str1在2和3中间 26 else if(string1<=string3) 27 { 28 cout<<string2<<endl<<string1<<endl<<string3<<endl; 29 } 30 //其他情况,就剩1>2但1>3,又因为2<3 ,所以按231顺序输出 31 else 32 cout<<string2<<endl<<string3<<endl<<string1<<endl; 33 34 return 0; 35 }
这道题是之前的作业题,重点在于理解题意
要能明白按字母顺序排,其实就是比较ASCII码,就是去比较字符串大小
(好久不做就不会做了,刚开始想偏了,想用at()函数从第一个开始比较,但这种思路就显得很复杂,多层循环嵌套,效率也不好)
(来自杏花疏影的叨叨叨:字符串这函数好多,还是需要时间梳理,慢慢来叭,今天就不做新题了,看了看作业题,感觉都已经不太会写了)
标签:顺序,C++,getline,字符串,排序,string2,string3 来源: https://www.cnblogs.com/sparse-shadow/p/16311504.html