浙大PAT甲级-1061

来源:互联网 发布:网络客服岗位要求 编辑:程序博客网 时间:2024/05/29 04:21

字符串处理

关键是理解题意:

(1)找出前两个字符串中第一个相同的大写字母(注意是逐个比较,即对应的位置相同),范围是‘A’ ~ ‘G’。
(2)找出前两个字符串中第二个相同的大写字母或者数字,范围是’A‘~'N' 或者 '0' ~ '9'。
(3)找出后两个字符串中第一个相同的字母(区不区别大小写好像都行),记录下其出现的位置。

#include <iostream>#include <string>#include <cstdio>using namespace std;int main(){    string a,b,c,d;    int la,lb,lc,ld,i,j,M=0;    cin>>a>>b>>c>>d;    la=a.length();    lb=b.length();    lc=c.length();    ld=d.length();    char D=NULL,H=NULL;    for(i=0;i<la&&i<lb;i++){        if('A'<=a[i]&&a[i]<='G')            if(a[i]==b[i]){                D=a[i];                break;            }        if(D!=NULL)            break;    }    i++;    for(;i<la;i++){        if((a[i]>='0'&&a[i]<='9')||(a[i]>='A'&&a[i]<='N'))           if(a[i]==b[i]){                H=a[i];                break;            }        if(H!=NULL)            break;    }    for(i=0;i<lc&&i<ld;i++)        if(c[i]==d[i]&&((c[i]>='a'&&c[i]<='z')||(c[i]>='A'&&c[i]<='Z')))        {            M=i;            break;        }    switch(D){    case 'A':        cout<<"MON";        break;    case 'B':        cout<<"TUE";;        break;    case 'C':        cout<<"WED";        break;    case 'D':        cout<<"THU";        break;    case 'E':        cout<<"FRI";        break;    case 'F':        cout<<"SAT";        break;    case 'G':        cout<<"SUN";        break;    }    cout<<" ";    int h;    if(H>='A'&&H<='N')        h=H-'A'+10;     else if(H>='0'&&H<='9')        h=H-'0';    printf("%02d:%02d",h,M);    return 0;}