1、规则
1.如果 字符串1的第n位的ASCII码值 等于 字符串2的第n位的ASCII码值 则 继续比较下一位
2.如果 字符串1的第n位的ASCII码值 大于 字符串2的第n位的ASCII码值 则 输出结果:1,表示字符串1 > 字符串2;
3.如果 字符串1的第n位的ASCII码值 小于 字符串2的第n位的ASCII码值 则 输出结果:-1 表示字符串1 < 字符串2;
4.如果 每一位的ASCII码值都相等,而且长度相同, 则 输出结果:0 表示字符串1 == 字符串2;
5.如果 字符串1是字符串2的前m位,例如 abcd 与abcdef 比较, 则 字符串1<字符串2. 原因是,到第5位时,字符串1的ASCII值是0,而字符串2的ASCII值为'e',即十进制的101,当然是字符串2大了. 具体到 cds和lesoqd 从第一位开始,'c'和'l'比较,当然是'c' < 'l'了,所以,"cds" < "lesoqd
原文链接
2、c语言
strcmp(str1, str2)
注:c语言中有头文件string.h,但是没有string字符串类型。
#include<stdio.h>
#include<string.h>
int main(){
char str1[10], str2[10];
strcpy(str1, "dafasf");
strcpy(str2, "sdfhtr");
int k = strcmp(str1, str2);
if(k > 0)
printf("str1 > str2\n");
else if(k == 0)
printf("str1 = str2\n");
else
printf("str1 < str2\n");
return 0;
}
3、c++
注:c++中有头文件#include<cstring>,比较string大小时直接用<,=,>。
另:给一连串string排序时,首先用vector函数存储,再用冒泡排序或者使用函数sort对其排序。
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
vector<string> vec;
vector<string>::iterator it;
int n;
cin >> n;
string m;
for(int i = 0; i < n; i++){
cin >> m;
vec.push_back(m);
}
/* for(int i = 0; i < n -1; i++)
for(int j = 0; j < n - i - 1; j++)
if(vec[j] > vec[j + 1]){
string mid = vec[j];
vec[j] = vec[j + 1];
vec[j + 1] = mid;
}*/
sort(vec.begin(), vec.end());
for(it = vec.begin(); it != vec.end(); it++){
cout << *it << endl;
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)