strcmp的用法
所在头文件:string.h
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1<s2时,返回为负数 注意不是-1
当s1==s2时,返回值= 0
当s1>s2时,返回正数 注意不是1
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
例题:


#include <iostream>
#include<cstdio>
#include <algorithm>
#include <string.h>
using namespace std;
struct person
{
char num[8];
char name[10];
int score;
}a[100005];
bool cmp1(person x,person y)//strcmp字符串比较大小的函数
{
if(strcmp(x.num, y.num)>0)
return 0;
else
return 1;
}
bool cmp2(person x,person y)
{
if(strcmp(x.name, y.name)<0)
return 1;
else if(strcmp(x.name, y.name)==0)
{
if(strcmp(x.num, y.num)>0)
return 0;
else
return 1;
}
else
return 0;
}
bool cmp3(person x,person y)
{
if(x.score<y.score)
return 1;
else if(x.score==y.score)
{
if (strcmp(x.num, y.num)>0)
return 0;
else
return 1;
}
return 0;
}
int main()
{
int n,m,i,k=0;
while (~scanf("%d",&n),n)
{
scanf("%d",&m);
k++;//记录有几组数据
for(i=0;i<n;i++)
{
scanf("%s%s%d",a[i].num,a[i].name,&a[i].score);
}
if (m==1)
{
sort(a,a+n, cmp1);
printf("Case %d:\n",k);
for(i=0;i<n;i++)
printf("%s %s %d\n",a[i].num,a[i].name,a[i].score);
}
if(m==2)
{
sort(a,a+n,cmp2);
printf("Case %d:\n",k);
for(i=0;i<n;i++)
printf("%s %s %d\n",a[i].num,a[i].name,a[i].score);
}
if (m==3)
{
sort(a,a+n,cmp3);
printf("Case %d:\n",k);
for(i=0;i<n;i++)
printf("%s %s %d\n",a[i].num,a[i].name,a[i].score);
}
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
char a[210];
char b[5];
int main()
{
while(gets(a))
{
if(strcmp(a,"ENDOFINPUT")==0)
break;
if(strcmp(a,"START")==0)//输入start不做任何处理
continue;
else
{
gets(b);//获取一个end再输出密码原文
int len=strlen(a);
for(int i=0;i<len;i++)
{
if('A'<=a[i]&&a[i]<='E')//每个字母是这个否则执行下面那一个 每个只执行一次
a[i]+=21;
else if('F'<=a[i]&&a[i]<='Z')
a[i]-=5;
printf("%c",a[i]);
}
printf("\n");
}
}
return 0;
}