<mark>题目描述</mark>

输入6个字符串(每个字符串不超过80个字符,可能含有空格),按照字典顺序(如果包含其他字符,按照ASCII排序)对6个字符串进行排序。输出排序后的6个字符串。
输入

6个符合题目要求的字符串
输出
输出排序后的结果
样例输入 Copy
Shandong
Yantai
university
Technology
Business
Gongshang
样例输出 Copy
Business
Gongshang
Shandong
Technology
Yantai
university

题目分析

题很简单就是对带空格的字符串排序,看到题第一想法, sort排序 gets()输入;定义字符串a[][]; 不行;<mark>现在想起来了。可以用char而且char更容易理解,建议大家用char即(strcmp)具体详情看最下面补的</mark>。
<mark>因为c++sort字符串排序用string</mark>。
知道这个就简单多了。还有一点就是排序。
这一个是对字符串排序,而不能用return a < b;
因为a+b就是字符串的连接,******数字字符串是可以直接比较大小的

<mark>ac码</mark>

#include <bits/stdc++.h>
using namespace std; 
typedef long long LL;
string a[21];
bool cmp(string a,string b){
	return a+b < b+a;//a+b就是字符串的连接,******数字字符串是可以直接比较大小的 
}
int main(){
	int n,i,m,j;
	for(i=0;i<6;i++)
	getline(cin,a[i],'\n');//对有空格string类型的字符串输入法,遇到'\n'停止输入; 
	sort(a,a+6,cmp);//c++中对字符串排序需要用string类型的字符串; 
	for(i=0;i<6;i++)
	cout<<a[i]<<endl;
	return 0;
}

对于做这个题的价值在于明白字符串排序用string跟字符串排序用return a+b < b+a;

<mark>说明一下</mark>

除了这种比较字符串的方法,还有一种,忘写了,临时想起来了。
就是利用strcmp()。
具体是这样的strcmp是比较char字符串的大小用的,比如现在有a[100]和b[100]两个字符串,(也就是char a[100],b[100];)再写bool比较函数之前先要理解strcmp函数的意义。strcmp(a,b);就是a,b,这两个字符串比较大小,1,<mark>如果a>b则返回值为正数即大于零的一个数</mark>,2,<mark>如果a<b则返回值为负数即小于零的一个数</mark>,3,<mark>当然如果a= =b即两个字符串一致返回值则为零,(通常用这个来判断字符串是否一致)</mark>。知道这些就可以写bool比较函数了。
:就是类似这种的;

struct node{
	char a[100];
}l[100];
bool  cmp(node a,node b){//我试了下int cmp(node a,node b)也行
	return strcmp(a.a ,b.a) < 0;
}

这样比较排序下来会好理解很多。
附上一个随便写的证明这个排序的代码吧。

#include<bits/stdc++.h>
using namespace std;
struct node{
	char a[100];
}l[100];
bool  cmp(node a,node b){
	return strcmp(a.a ,b.a) < 0;//当然从大到小是大于零。
}
int main(){
	for(int i=0;i<10;i++)
	scanf("%s",l[i].a);
	sort(l,l+10,cmp);
	for(int i=0;i<10;i++)
	cout<<l[i].a<<endl;
	return 0;
}