题目的意思的是,读取输入的两个数字,第一个数字表示关键字的数目,第二个数字表示搜索字符串的数字,读取完毕之后将字符串中的每一个单词分开读取到临时字符串中, 并与关键字进行匹配,每匹配到一个计数加一,最后比较用于计数的数组,输出含有关键字最多的字符串,学到scanf()读取完毕后,读取字符串要在读取字符串前面加一个 getchar()将'\n'取走,不然字符串的输出会多一个回车 #include<stdio.h> #include<string.h> #include<ctype.h> int main() { int m,n,i,j,num[20],max,t=1,a,k,len; char one[20][20],two[20][71],temp[71]; while(scanf("%d%d",&m,&n) == 2) { for(i=0; i<m; i++) { scanf("%s",one[i]); getchar(); } for(i=0; i<n; i++) { num[i] = 0; gets(two[i]); len=strlen(two[i]); for(j=0; j<len; j++) { a=0; while(isalpha(two[i][j])) { temp[a++]=tolower(two[i][j]); j++; } if(a>0) { temp[a]='\0'; for(k=0; k<m; k++) if(strcmp(temp,one[k])==0) { num[i]++; break; } } } } max = 0; for(i = 0; i< n; i++) { if(max < num[i]) max = num[i]; } printf("Excuse Set #%d\n",t++); for(i=0; i<n; i++) { if(num[i]==max) printf("%s\n",two[i]); } printf("\n"); } return 0; }
UVA 409
最新推荐文章于 2021-08-04 15:15:41 发布