当前位置: 代码迷 >> 综合 >> 2017-2
  详细解决方案

2017-2

热度:36   发布时间:2023-10-14 06:27:14.0
/* 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++;}elsebreak;}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;
}