用C语言写个具有查字典功能的程序,谁帮我看看哪里出错了

用C语言写个具有查字典功能的程序,谁帮我看看哪里出错了,第1张

fgets(a,1000,fp)是读取文件而你的文件打开方式确是

fp=fopen("E:\\13计册桐侍科外包班\\词典工程\\dict.txt","w")

你是已写的方式打开的

要改成

fp=fopen("E:\\13计科州吵外包班\\词典工程\轮帆\dict.txt","r")

望楼主采纳

//新建一个字典文本文件,命名为:dict.dat,内容格式如下: 或下载一个也可

//abandon v.抛弃,放弃

//abandonment n.放弃

//abbreviation n.缩写

//abeyance n.缓办,中止

//abide v.遵守

//ability n.能力

//able adj.有能力的,能干的

//abnormal adj.反常的,变态的

//aboard 链蚂adv.船(车)上

//abolish v.废除,取消

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

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct NODE

{

char e[20]

char c[50]

struct NODE* pnext

}

struct NODE* pN

struct NODE* pHead=NULL

struct NODE* pNode=NULL

struct NODE* pNext=NULL

struct NODE* pEnd=NULL

FILE* open_dict()

{

FILE *fp

if((fp=fopen("dict.dat","r"))==NULL)

{

printf("open dict error!\n")

return NULL

}

return fp

}

int getdata_from_dict(FILE* fp)

{

int i,j

char buf[50]

while(1)

{

pN=(struct NODE*)malloc(sizeof(struct NODE))

memset(pN->c,'\0',50)

memset(pN->e,'\0',20)

pN->pnext=NULL

if(fgets(buf,50,fp)==NULL)

{

fclose(fp)

break

}

sscanf(buf,"%s %s",pN->e,pN->c)

if(pHead==NULL)

{

pHead=pN

pNode=pN

continue

}

pNode->pnext=pN

pNode=pN

pEnd=pN

}

return 1

}

void write_dict()

{

FILE* fp=NULL

if((fp=fopen("dict.dat","w"))==NULL)

{

printf("open dict error!\n")

return

}

char buf[100]={'此唤宏\0'}

pNode=pHead

while(1)

{

if(pNode==NULL)

{

break

}

fprintf(fp,"%s %s\n",pNode->e,pNode->c)

pNode=pNode->pnext

}

fclose(fp)

}

void del(char* char_del)

{

struct NODE* pDel=pHead

if(strcmp(pDel->e,char_del)==0)

{

pHead=pHead->pnext

write_dict()

return 

}

while(1)

{

if(strcmp(pDel->pnext->e,char_del)==0)

{

if(pDel->pnext->pnext!=NULL)

{

pDel->pnext=pDel->pnext->pnext

}

else

{

pDel->pnext=NULL

}

write_dict()

return 森册

}

else

{

pDel=pDel->pnext

if(pDel==NULL)

{

break

}

}

}

printf("\n未找到该单词!\n")

return

}

void add(char* char_add, char* char_add_chs)

{

pN=(struct NODE*)malloc(sizeof(struct NODE))

memset(pN->c,'\0',50)

memset(pN->e,'\0',20)

pN->pnext=NULL

strcpy(pN->e,char_add)

strcpy(pN->c,char_add_chs)

pEnd->pnext=pN

pEnd=pN

pNode=pN

write_dict()

}

int main(int argc, char *argv[]) 

{

FILE* fp=NULL

fp=open_dict()

if(fp==NULL)

{

printf("读取字典失败! 程序将退出!")

getchar()

return 1

}

getdata_from_dict(fp)

fclose(fp)

char buf[50]={'\0'}

while(1)

{

printf("\n\n{输入quit: 即退出, 输入del: 即删除, 输入add: 即增加}\n请输入英文单词 : ")

fflush(stdin)

scanf("%s",buf)

if(strcmp(buf,"quit:")==0)

{

break

}

else if(strcmp(buf,"del:")==0)

{

char char_del[20]={'\0'}

printf("请输入要删除的单词:")

fflush(stdin)

scanf("%s",char_del)

del(char_del)

continue

}

else if(strcmp(buf,"add:")==0)

{

char char_add[20]={'\0'}

char char_add_chs[100]={'\0'}

printf("\n请输入要增加的单词:")

fflush(stdin)

scanf("%s",char_add)

printf("\n请输入中文意思:")

fflush(stdin)

scanf("%[^\n]",char_add_chs)

add(char_add,char_add_chs)

continue

}

pNode=pHead

int find=0

while(pNode!=NULL)

{

if(strcmp(pNode->e,buf)==0)

{

printf("\n%s",pNode->c)

find=1

break

}

pNode=pNode->pnext

}

if(find==0)

{

printf("\n未找到!")

}

}

return 0

}

哇哈哈~

感觉和POJ1850 CODE一模一样,做过。排列组合问题

对于r组合a1,a2,a3,...,ar(其中a1<坦局李a2<a3<...<ar)来说,它在S的让迟所有r组合中的编号为

C(r, n)-C(r,n-a1)-C(r-1,n-a2)-...-C(1,n-ar)

可惜分太少了,一般百度知道上这种问题应该都悬赏50以上才有人答,碰到我算你幸运

#include <iostream>

using namespace std

__int64 cnk(__int64 n, __int64 k)

{

int i

if(k == 0) return 1

if(k == 1) return n

__int64 r = n

for(i = 2i <= ki++)

r = r*(n-i+1)/i

return r

}

int main()

{

char s[12]

__int64 i, l, ans

while(scanf("%s", s) != EOF)

{

ans = 0

l = strlen(s)

bool flag = true

if(s[0] >= 'a' &&s[0] <= 'z')

{

for(i = 1i <腊返 li++)

{

if(s[i-1] <s[i] &&'a'<=s[i]&&s[i]<='z')

continue

else

{

flag = false

break

}

}

}

else flag = false

if(flag)

{

for(i = 1i <= li++)

ans += cnk(26, i)

for(i = 0i <li++)

ans -= cnk(26-(s[i]-'a'+1), l-i)

}

else ans = 0

printf("%I64d\n", ans)

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12548699.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存