北航计算机2017年复试-机试第2题

#include <stdio.h>
#include <string.h>//字符串函数的头文件
//题目,输入两条C语言语句,第一句为正常的C语言变量定义语句,变量间可以有多个空格,包含数组,指针定义等
//第二局为变量运算语句 
//输出:第二条语句中未定义变量

//int x12,y=1,num_stu=89,a[30],*p;
//Sum=num+x12*y;

//判断字符合法函数
int IsLegal(char c){
	if('a'<=c&&c<='z'||'A'<=c&&c<='Z'){
		return 1;
	}
	if('0'<=c&&c<='9'){
		return 1;
	}
	if(c=='*'||c=='_'||c=='['||c==']'){
		return 1;
	}
	return 0;
}
//需要好好学习一下
int GetKeys(char value[][20],char str[]){//二维数组做参数 需指明第二维数组长度
	int i=0,j=0,m=0;
	while(str[i]!='\0'){
		if(IsLegal(str[i])&&(str[i-1]==','||str[i-1]==' ')){
			while(IsLegal(str[i])){
				value[j][m++]=str[i++];
			}
			value[j][m]='\0';
			m=0;
			j++;
		}
		i++;
	}
	value[j][m]='\0';
	return j;
}
int GetKeys2(char value[][20],char str[]){//二维数组做参数 需指明第二维数组长度
	int i=0,j=0,m=0;
	while(str[i]!='\0'){
		if(IsLegal(str[i])){
			while((IsLegal(str[i])&&str[i]!='*')||str[i]=='*'&&!IsLegal(str[i-1])){
				value[j][m++]=str[i++];
			}
			value[j][m]='\0';
			m=0;
			j++;
		}
		i++;
	}
	value[j][m]='\0';
	return j;
}

void main(){
	char str1[100],str2[100];
	char keyWords1[100][20],keyWords2[100][20];
	int wordCount1,wordCount2;
	int i,j;
	int isExit=0;
	printf("输入第一句语句:");
	gets(str1);//如果用scanf获取字符串 可以不用&,但是不可以读取空格 此处只可以用gets
	printf("输入第二句语句:");
	gets(str2);
	wordCount1=GetKeys(keyWords1,str1);
	wordCount2=GetKeys2(keyWords2,str2);
	for(i=0;i<wordCount2;i++){
		isExit=0;
		for(j=0;j<wordCount1;j++){
			if(strcmp(keyWords2[i],keyWords1[j])==0){
				isExit=1;
				break;
			}
		}
		if(!isExit){
			puts(keyWords2[i]);
		}
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值