Blackshot
DarknessMyOldFriend
采纳率50%
2015-01-07 14:11

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

已采纳

#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 llflw_ukey 6年前

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

    点赞 评论 复制链接分享
  • Blackshot DarknessMyOldFriend 6年前

    对的。看我马虎得。那个全局变量NODE*head和NODE *p可以像上述那么用吗?还有函数调用我觉得我弄错了,CharPiPeisave我输入一个字符串给其余三个函数让他们匹配出相应单词然后返回,但是结构体又是一个参数,用int IsIt(char array[255,NODE *head])又不对。 还有就是能帮我看下load函数有问题吗

    点赞 评论 复制链接分享

相关推荐