文章

8

粉丝

139

获赞

19

访问

22.0k

头像
关于Strcmp的应用和结构体的定义小细节
P1217 同济大学机试题
发布于2023年3月14日 21:25
阅读数 3.3k

这边总结一下,有关于字符排序后输出的一点关于本题的小心得:

知识点1:当我们遇到有关字符串比较的题目时,采用头文件#include<string.h>,然后使用strcmp比较会显得得心应手,这边说明一下,strcmp(char a,char b);首先输入的是char类型的数组或者字符,而不是输入string字符串,因为函数内部无法再将string字符串进行位置赋值后再进行比较,而字符数组char a【105】可以做到,字符比较更不用说,其次输出的是前后ASCII码的差值,这里代表的就是如果返回的是负数,那么就代表前小后大;

知识点2:结构体的定义,一般struct之后带的是结构体整体的名字,一般用作于标识,而结构体外最后的大括号外的则是定义这个数群,每一个的符号命名,是作为单一个体存在的,那么代码段中存放的就是个体的属性,可以有很多的定义,例如string、char、int等等;

知识点3:那么无论再输入个体的值也好、名称也好,在相对应的s【i】后面都要带上.属性了,并不能只单纯的s[i],不然不知道输出或输入进去的是s个体的哪个属性。

#include<bits/stdc++.h>
using namespace std;
 
 struct guoming{//结构整体的名字 
 	char name[105];//这里要char,不然strcmp的比较变量无法通过; 
 }s[105];//定义一个结构体 ,后面不写,那么就要在main函数里面定义出来 ,后面算个体的数据,而中间代码段表示的是个体的属性 
 
 bool cmp(guoming a,guoming b){
     return strcmp(a.name,b.name)<0;//少了分号 

 }
 int main(){
 	int n;
 	cin>>n;
 	for(int i=0;i<n;i++){	
 	cin>>s[i].name;
 	}
  	sort(s,s+n,cmp);
  	
      for(int i=0;i<n;i++){
 	     cout <<s[i].name<<endl;//这里要添...
登录查看完整内容


登录后发布评论

1 条评论
月溅星河
2023年4月8日 21:41

yes

赞(0)