北航2016年机试第二题(c编写)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100

void recognize(char input[])
{
    int i,k=0;
    int number=0;//enum的默认计数起点
    char temp[MAX];//主串
    char cut[MAX]={0};//子串
    strcpy(temp,input);//用副本检测
    for(i=0;i<MAX;i++)
    {
        if(temp[i]=='{')
        {
            k=i+1;
            break;
        }
    }
    for(i=0;i<MAX&&temp[k]!='}';i++)
    {
        cut[i]=temp[k];
        k++;
    }
    //printf("%s\n",cut);
    //printf("%d\n",strlen(cut));
    char* final=strtok(cut,",");
    char output[30]={0};
    char*temp0=NULL;
    bool find_equal=false;
    char middle1[20]={0};
    char middle2[20]={0};
//    char test[MAX]={0};
    while(final)
    {
        
        strcpy(output,final);
        final=strtok(NULL,",");

        //如果存在赋值的成员,则修改number    
        for(i=0;i<strlen(output);i++)
        {
            if(output[i]=='=')
            {
                find_equal=true;
                break;
            }
        }        
        if(find_equal)
        {
            int k=0;
            int j=0;
            //printf("找到了等号\n");
            for(k=0;k<i;k++)
                middle1[k]=output[k];
            for(k=i+1;k<strlen(output);k++)
            {
                middle2[j]=output[k];
                j++;
            }
            strcpy(output,middle1);
            number=atoi(middle2);
            find_equal=false;
            //改变number值,改变output值
        }
        //如果存在赋值的成员,则修改number
            printf("%s %d\n",output,number);
            number++;
        
    }

}
void main()
{
    char input[MAX];
    gets(input);
    //printf("%s\n",input);
    if(input[0]=='e'&&input[1]=='n'&&input[2]=='u'&&input[3]=='m')
    {
        recognize(input);
    }
    else
        printf("错误");
}
 

猜你喜欢

转载自blog.csdn.net/Sunnyreal0000/article/details/88075783