程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 設計-關於一個單詞匹配的題目,得不到想要的結果,貼出源程序,求大神幫忙~~~

設計-關於一個單詞匹配的題目,得不到想要的結果,貼出源程序,求大神幫忙~~~

編輯:編程綜合問答
關於一個單詞匹配的題目,得不到想要的結果,貼出源程序,求大神幫忙~~~

#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();

}

最佳回答:


首先,
struct letters next;
應該是
struct letters* next;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved