strcmp( )函数

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;
}


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值