蓝桥杯练习场上碰到两个此类题了:
算法提高 11-1实现strcmp函数
时间限制:1.0s 内存限制:256.0MB
问题描述
自己实现一个比较字符串大小的函数,也即实现strcmp函数。函数:int myStrcmp(char *s1,char *s2) 按照ASCII顺序比较字符串s1与s2。若s1与s2相等返回0,s1>s2返回1,s1<s2返回-1。具体来说,两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止(注意'\0'值为0,小于任意ASCII字符)。如: "A"<"B" "a">"A" "computer">"compare" "hello"<"helloworld"
样例输出
数据规模和约定
字符串长度<100。
算法提高 字符串比较
时间限制:1.0s 内存限制:512.0MB
独立实现标准字符串库的strcmp函数,即字符串比较函数,从键盘输入两个字符串,按字典序比较大小,前者大于后者输出1,前者小于后者输出-1,两者相等输出0。
样例输入: apple one 样例输出: -1 样例输入: hello he
样例输出: 1 样例输入: hello hello 样例输出: 0
作者注释:两题代码完全一样。
1 #include2 #include 3 #include 4 #include 5 #include 6 /*定义一个结构体*/ 7 typedef struct Stu{ 8 char str[100]; 9 }stu;10 int cmp(const void *a,const void *b){11 stu c = *(stu*)a;12 stu d = *(stu*)b;13 //按姓名字符进行字典排序 14 if(strcmp(c.str,d.str)>0){15 printf("-1");16 return strcmp(c.str,d.str);17 }else if(strcmp(c.str,d.str)<0){18 printf("1");19 return strcmp(c.str,d.str);20 }else if(strcmp(c.str,d.str)==0){21 printf("0");22 return strcmp(c.str,d.str);23 }24 }25 main(){26 stu st[100];27 for(int i=0;i<2;i++){28 scanf("%s",&st[i]);29 }30 qsort(st,2,sizeof(st[0]),cmp);31 return 0;32 }