2017-2

/*
2020/4/17
第二遍
*/
#include<stdio.h>
#include<string.h>
#include<ctype.h>

const int MAXVAR = 20;
char str1[100];
char str2[100];
char var1[100][20];
char var2[100][20];
int n1 = 0,n2 = 0;
int i,j;

/*
这个函数非常有用,统计变量名
*/
char getVar(char var[],int lim,char str[],int &k)//此处的char str[],int &k,相当于从流中输入数据
{
    char *v = var;

    while(isspace(str[k]))
    {
        k++;
    }
    if(str[k]!=';')
        *v++ = str[k];
    if(!isalpha(str[k]))
    {
        *v = '\0';
        return str[k];
    }

    k++;
    for(;--lim;v++)
    {
        if(isalnum(str[k]) || str[k] == '_')
        {
            *v = str[k];
            k++;
        }
        else
            break;
    }
    k--;
    *v = '\0';
    return v[0];
    //k的控制从外部k++
}

int main()
{
    gets(str1);
    gets(str2);

    char ch;
    char var[20];

    i = 0;//就算从i = 0开始将int作为变量,str2中也不可能存在着变量名为int的变量//i = 3;
    while( (ch = getVar(var,MAXVAR,str1,i)) != ';')
    {
        if(isalpha(var[0]))
        {
            strcpy(var1[n1++],var);
        }
        i++;
    }

    j = 0;
    while( (ch = getVar(var,MAXVAR,str2,j)) != ';')
    {
        if(isalpha(var[0]))
        {
            strcpy(var2[n2++],var);
        }
        j++;
    }

    int u,v;
    for(u = 0;u<n2;u++)
    {
        for(v = 0;v < n1;v++)
        {
            if(strcmp(var2[u],var1[v]) == 0)
                break;
        }
        if(v == n1) printf("%s\n",var2[u]);
    }

    return 0;
}

发布了117 篇原创文章 · 获赞 71 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_34686440/article/details/105582643