DarknessMyOldFriend 2015-01-07 14:11 采纳率: 50%
浏览 1663
已采纳

关于一个单词匹配的题目,得不到想要的结果,贴出源程序,求大神帮忙~~~

#include
#include
#include
#include
#include
int IsOneCharDifferent(char array[255]);
int IsIt(char array[255]);
int IsMoreOrLessOneChar(char array[255]);
//*************************************************************************************
//创建结构体链表保存每个单词的序号、长度、以及链表所需的指针。即字典表的单词数目无限。
//*************************************************************************************

typedef struct letters
{
char letter[255];
int num;
int lenth;
struct letters next;
}NODE;
NODE *head;
NODE *p;
//
*********************************************************************************************
//load函数读取系统文件
//**********************************************************************************************

void load()
{
FILE * fp;
fp=fopen("c:\Big Scary\课程设计\2_单词匹配\letters.txt","r");
if((fp=fopen("c:\Big Scary\课程设计\2_单词匹配\output.txt","r"))==NULL)
{
printf("不能打开文件\n");
return;
}
NODE *head;
head=(NODE *)malloc(sizeof(NODE));
NODE *p;
head->next=NULL;
while(!feof(fp))
{
p=(NODE *)malloc(sizeof(NODE));
fscanf(fp,"%s",&p->letter);
fscanf(fp,"%d",&p->num);
fscanf(fp,"%d",&p->lenth);
if(feof(fp))
{
free(p);
break;
}
p->next=head->next;
head->next=p;
}
fclose(fp);
}

//**********************************************************************************************
//int IsOneCharDifferent(char array[255])函数找出与输入单词相差一个字母的单词序号。并赋值给Ei。
//**********************************************************************************************

int IsOneCharDifferent(char array[255])
{
load();
int num=0;
int len=strlen(array);
NODE ps=p;
for(;ps->next!=0;ps=ps->next)
{
if(p->lenth!=len)
{
return 0;
}
for(int c=0;clenth;c++)
if(p->letter!=array)
{
num++;
if(num>1)
return 0;
else
return p->num;
}
}
return 0;

}
//
************************************************************************************************
//int IsMoreOrLessOneChar(char array[255])函数找出与输入单词多或者少一个字母的单词序号。并赋值给Fi。
//*************************************************************************************************
int IsMoreOrLessOneChar(char array[255])
{
load();
int len=strlen(array);
NODE *ps=p;
for(;ps->next!=0;ps=ps->next)
{
if(p->lenth!=len)
{
return 0;
}
else if(p->lenth-len==1||len-p->lenth==1)
{
return(p->num);
}
else
return 0;
}
return 0;
}

//**********************************************************************************************
//int IsIt(char array[255])函数找出与输入单词完全相同的单词序号。并赋值给i。
//**********************************************************************************************

int IsIt(char array[255])
{
load();
int len=strlen(array);
NODE *ps=p;
for(;ps->next!=0;ps=ps->next)
{
if(p->lenth!=len)
{
return 0;
}
if(strcmp(array,p->letter)==0)
{
return(p->num);
}
else
return 0;
}
return 0;
}

//*******************************************************************
//CharPiPei()函数进行单词匹配操作。
//*******************************************************************

void CharPiPeiSave()
{

char array[255];
printf("请随意输入一个单词:\n");
fflush(stdin);
gets(array);
IsIt(array);
IsOneCharDifferent(array);
IsMoreOrLessOneChar(array);
FILE * fp;
fp=fopen("c:\\Big Scary\\课程设计\\2_单词匹配\\output.txt","w");
NODE *p=head->next;
int i=0,Ei=0,Fi=0;
i=IsIt(array);
Ei=IsOneCharDifferent(array);
Fi=IsMoreOrLessOneChar(array);
while(p!=0)
{
    fprintf(fp,"i %d",i);
    fprintf(fp,"Ei %d",Ei);
    fprintf(fp,"Fi %d",Fi);
    p=p->next;
}
fclose(fp);

}

//*******************************************************************************************
//menu函数提供三种操作,添加新单词;单词匹配;退出。用switch语句分别选择调用3个函数进行操作
//*******************************************************************************************

void menu()
{
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 欢迎使用字典表匹配单词 ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ 1. 添加新单词 ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ 2. 单词匹配 ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ 3. 退出程序 ┃ \n");
printf(" ┃ ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("\n");
printf("请选择所要进行的项目:\n");
int select;
scanf("%d",&select);
switch(select)
{
case 1: ;
case 2: CharPiPeiSave();
case 3: ;
;}

}

//******************************************************
//调背景色彩

//******************************************************

void system()
{
system("color f5");
}

//******************************************************
//用main函数调用所需所有函数

//******************************************************

void main()
{
system();
menu();

}

  • 写回答

2条回答 默认 最新

  • llflw_ukey 2015-01-07 14:35
    关注

    首先,
    struct letters next;
    应该是
    struct letters* next;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办