北航2017上机题—(二)字符串处理

//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(" ");
		}
	}
}  

猜你喜欢

转载自blog.csdn.net/li951527983/article/details/88292043
今日推荐