//2.两个c程序语句,第一句定义变量,第二句变量做运算,找出第二句中所使用地未定义变量,其中数组和指针仅输出变量符号
//样例 int x,y, _x1,_y1;
// result =x +y+t+_x1;
//则输出 result t
//输出每个变量之间间隔一个空格
//注意,样例和正常的C语言定义一样,中间可以有多个空格,并且要考虑数组和指针
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
//2.两个c程序语句,第一句定义变量,第二句变量做运算,找出第二句中所使用地未定义变量,其中数组和指针仅输出变量符号
//样例 int x,y, _x1,_y1;
// result =x +y+t+_x1;
//则输出 result t
//输出每个变量之间间隔一个空格
//注意,样例和正常的C语言定义一样,中间可以有多个空格,并且要考虑数组和指针
bool IsValidWord(char c){
if(c >= 'a' && c <= 'z')
return true;
if(c >= 'A' && c <= 'Z')
return true;
if(c >= '0' && c <= '9')
return true;
if(c == '[' || c== ']' || c == '_')
return true;
return false;
}
bool IsExist(int wordSize,char keyword[wordSize][20],char word[]){
int wordIndex1=1;
bool isTrue=0;
for(wordIndex1=1;wordIndex1<wordSize;wordIndex1++){
if(keyword[wordIndex1]!='\0'){
if(strcmp(keyword[wordIndex1],word)==0){
isTrue=1;
}
else
continue;
}
}
return isTrue;
}
int Analysis(char sentence[],int len,char keyWord[len][20]){
int i=0,wordIndex=0,word=0;
while(sentence[i]!='\0'){ //从头开始读取字符串, 不是终止符 就一直读
if(IsValidWord(sentence[i])){//读到第一个符合格式的字符串
while(IsValidWord(sentence[i])){
// printf("%c",sentence[i]);
keyWord[wordIndex][word++]=sentence[i++];
}
keyWord[wordIndex][word]='\0';
wordIndex++;
word=0;
}
else{
i++;
}
}
return wordIndex;
}
void main(){
char firstSentence[100];
char secondSentence[100];
int x, y , _x1 , _y1;
int len1 = 0, len2 = 0,wordSize1=0,wordSize2=0;
int i=0,j=0;
char ch;
while((ch = getchar())!= '\n'){
firstSentence[len1++] = ch;
}
while((ch = getchar())!= '\n'){
secondSentence[len2++] = ch;
}
char keyWord1[len1][20];
char keyWord2[len2][20];
wordSize1=Analysis(firstSentence,len1,keyWord1);
wordSize2=Analysis(secondSentence,len2,keyWord2);
//puts(keyWord2[wordSize2-2]);
// for(i=0;i<wordSize2;i++){
// puts(keyWord2[i]);
// }
printf("\n----------------------------------------\n");
for(i=0;i<wordSize2;i++){
if(!IsExist(wordSize1,keyWord1,keyWord2[i])){
j=0;
while(keyWord2[i][j]!='\0'){
printf("%c",keyWord2[i][j]);
j++;
}
printf(" ");
}
}
}