已知一个包含若干英文单词的词典(1≤n≤100),对任意输入的某一个单词word,进行如下查询操作:(字典中的单词和给定单词长度上限为255);(1)word在词典中的位置;(2)词典中仅有一个字符与word不匹配的单词序号;(3)词典中,比word多(或少)一个字符(除此字符外其余字符均匹配)的单词位置。(4)上述查找时,如有多个单词符合条件,仅输出其第一个单词的位置即可。【功能要求】(1)词典以TXT文件格式存放,每行一个单词。(2)查找后,输出找到的单词在词典中的位置,以及该单词。如未找到相关单词,应给出提示信息。
2条回答 默认 最新
- CSDN专家-天际的海浪 2022-01-01 00:21关注
你题目的解答代码如下:
#include <stdio.h> #include <string.h> int main() { FILE * fp = fopen ("dict.txt", "r"); int i,j,n=0,m=-1,t=0,k; char dic[1000][256], s[256]; while (fscanf(fp,"%s",dic[n])>0 ) n++; printf("输入的某一个单词:"); scanf("%s", s); int l = strlen(s); for (i = 0; i < n; i++) { if (strcmp(s,dic[i])==0) { m = i; break; } } if (m!=-1) printf("%s在词典中的位置是%d\n",s,m+1); else printf("%s在词典中没有找到\n",s); m = -1; for (i = 0; i < n; i++) { if (strlen(dic[i])!=l) continue; t = 0; for (j = 0; j < l; j++) { if (dic[i][j]==s[j]) t++; } if (l-t==1) { m = i; break; } } if (m!=-1) printf("词典中仅有一个字符与%s不匹配的单词是%s,序号%d\n",s,dic[m],m+1); else printf("没有找到词典中仅有一个字符与%s不匹配的单词\n",s); m = -1; for (i = 0; i < n; i++) { int f = strlen(dic[i])-l; if (f!=1 && f!=-1) continue; k = 0; for (j = 0; j < l; j++) { if (dic[i][j+k]!=s[j]) { if (k==0) k = f; else break; } } if (j==l) { m = i; break; } } if (m!=-1) printf("比%s多(或少)一个字符的单词是%s,序号%d\n",s,dic[m],m+1); else printf("没有找到比%s多(或少)一个字符的单词\n",s); return 0; }
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 3无用
悬赏问题
- ¥15 求螺旋焊缝的图像处理
- ¥15 blast算法(相关搜索:数据库)
- ¥15 请问有人会紧聚焦相关的matlab知识嘛?
- ¥15 网络通信安全解决方案
- ¥50 yalmip+Gurobi
- ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
- ¥15 itunes恢复数据最后一步发生错误
- ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
- ¥100 H5网页如何调用微信扫一扫功能?
- ¥15 讲解电路图,付费求解