精华内容
下载资源
问答
  • 问题:给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词,例如单词abbsd和dabbs互为兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这...例如,将单词按...

    问题:给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词,例如单词abbsd和dabbs互为兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有哪些兄弟单词?要求时间和空间效率尽可能的高。

    解法一:

    使用hash_map和链表。 

    首先定义一个key,使得兄弟单词有相同的key,不是兄弟的单词有不同的key。例如,将单词按字母从小到大重新排序后作为其key,比如bad的key为abd,good的key为dgoo。 

    使用链表将所有兄弟单词串在一起,hash_map的key为单词的key,value为链表的起始地址。 

    开始时,先遍历字典,将每个单词都按照key加入到对应的链表当中。当需要找兄弟单词时,只需求取这个单词的key,然后到hash_map中找到对应的链表即可。 

    这样创建hash_map时时间复杂度为O(n),查找兄弟单词时时间复杂度是O(1)。

     

    解法二:

    同样使用hash_map和链表。

    将每一个字母对应一个质数,然后让对应的质数相乘,将得到的值进行hash,这样兄弟单词的值就是一样的了,并且不同单词的质数相乘积肯定不同。

    使用链表将所有兄弟单词串在一起,hash_map的key为单词的质数相乘积,value为链表的起始地址。

    对于用户输入的单词进行计算,然后查找hash,将链表遍历输出就得到所有兄弟单词。

    这样创建hash_map时时间复杂度为O(n),查找兄弟单词时时间复杂度是O(1)。

    转载于:https://www.cnblogs.com/wyf-love-dch/p/11535955.html

    展开全文
  • 它使用 Bigram 模型,其中根据单词的训练数据中存在的标签以及输入句子中相关单词之前的单词的标签计算单词最可能的标签。 例如,正如我们所知,名词前面通常是冠词,因此如果给定一个新名词(不在训练数据中),...
  • ,自动链接添加到与现有页面标题匹配的单词上。 最低要求:MediaWiki 1.28。 可以在找到源代码文档。 目录 概述 LinkTitles扩展自动链接添加到给定页面上出现的现有页面标题。 这自动为您交叉引用您的Wiki。 ...
  • 根据如下说明统计不同单词出现的次数(频度)。统计结果按出现频度从高到低排序, 并出现频度大于5的单词及其频度输出到文件output.txt中。文件格式如下所示: to, 10 our, 8 home, 5 yes, 5 说明: (1) 多...

    题目描述:

    文本文件input.txt由若干英文单词和分隔符(空格,回车,换行)构成
    

    要求:
    根据如下说明统计不同单词出现的次数(频度)。将统计结果按出现频度从高到低排序,
    并将出现频度大于5的单词及其频度输出到文件output.txt中。文件格式如下所示:

        to, 10
        our, 8
        home, 5
        yes, 5
    

    说明:
    (1) 多个连续的分隔符被视为一个分隔符。
    (2) 单词大小写敏感。
    (3) 每个单词的长度不超过20个字符。
    (4) 单词的数量未知。如使用定义静态大数组的方式来统计,将被扣除5分

    题目分析:

    1.从文件中读出单词
    (2.建立单词+词频的链表),故要用到统计词频并建立word-num链表的函数construct
    [1] 从文件依次读入字符,把它放到这个单词的数组里,数组下标+1,当这个字符既不属于大写字母又不属于小写字母时,
    说明这个单词已结束,以上那个数组里的字符就是这个单词的全部内容,并给这个单词的字符串数组里添加
    ‘\0’标志此单词的结束
    [2] 然后把这个单词的字符串数组送入统计词频的函数(加入到dicword链表里),
    使得tempword[i]数组里的i重新归0,重新统计下一个字符
    [3] 当上一个单词已经结束,读下一个新字符时发现是间隔符(空格,\n,\r时),它也不属于大写字母不属于小写字母,
    此时直接把’\0’赋值给过渡作用的字符串数组tempword[0],此时i=0,这说明现在这个肯定不是单词,
    所以直接跳出本轮循环,重新读入下一个字符
    [4] 直到读到文件里的字符串结束符EOF,文件才读完了
    [5] 关闭文件
    2.建立单词+词频dicword的链表
    [1] 传入某个单词的字符串数组(单词内容)
    [2] 传出更新后(更新了词频或词频+单词内容)的dicword链表
    [3] 一开始,dicword链表头指针指向空,开辟一个新的链表结点,把传入的这个wordtemp字符串数组内容复制
    给这个新链表结点的word域,更新其count域为1,next域指向空.
    将更新后的链表传出到(从文件中读单词函数),告诉他可以读下一个字符,即进行1中的[3]步骤
    [4] 当dicword链表头指针不再指向空时,说明此链表已经有单词元素了.把传入的这个wordtemp字符串数组从链表
    开始结点依次比较:
    【如果这个wordtemp的内容和这个结点的word域完全相同,就停下来,不用比较了,而是更新这个结点的count域(+1)】;
    【如果不同,就和链表下一个结点的word域比较,直到和链表全部元素比过之后,发现链表里没有和它相同的,就为
    这个新单词建立新结点,更新其count为1,使其next为空,把这个新结点加入到刚才链表dicword的尾部】
    将更新后的链表传出到(从文件中读单词函数),告诉他可以读下一个字符,即进行1中的[3]步骤

    代码下载:

    从文本文件中读入若干个单词将频率高的输出到另一个文件中C语言实现源代码下载

    展开全文
  • 单词小助手

    2019-04-22 15:49:54
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能)...

    一.题目要求
    单词小助手,要求完成以下任务:
    1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。
    3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词)
    提高要求:
    可将程序中的不足(如数据验证,排名功能)等根据自己的能力与理解完成。
    实验目的:
    明确结构化程序设计的基本结构,通过对问题的分析,设计合理地结构化解决问题。

    二.问题分析
    2.1题目分析
    本次上机实验通过对老师已经给出的代码进行修改完善,增添部分功能,并用结构化程序设计思想来解决问题。
    该单词小助手主要功能有词库维护、单词预览、中英和英中单词背诵、查询成绩、帮助退出功能,在此基础上,我需要添加错词表的功能。将用户背错的单词记录在一个wrongword.txt文档文件中,可输出打印错词表里的单词,供用户反复记忆和背诵,并且可以进行记错单词的删除修改操作。
    (1)词库维护: 词库维护中包括增加单词、修改单词、删除单词、查询单词和退出本菜单的操作,可以通过自定义输入对应的序号来分别调用不同的函数来实现相应的操作。输入1可进行增加单词的操作,可以在键盘上输入单词的英文形式和中文形式,将其保存在词库即data.txt文件中,实现了词库的扩展。输入2可进行修改单词,系统提示先输入要修改的单词,随后即可输入正确的单词形式和中文翻译。输入3可进行删除单词操作,通过输入单词的英文形式直接删除存储在data.txt文件中的单词实现删除的操作。输入4可进行查询单词的操作,可查询英文形式或中文形式。输入5则退出单词维护菜单,返回至主菜单进行另外的操作。
    (2)单词预览:可以利用for循环来对data.txt文件中的全部单词进行遍历输出,以向用户展示单词表里的全部单词。
    (3)中英单词背诵:随机打印出单词的中文翻译,用户需要输入英文形式进行测试,输入错误则提示出正确的单词形式并将错误单词存在wrongword.txt中,输入正确则加十分。用户可选择退出测试或者继续进行测试。
    (4)英中单词背诵:随机打印出单词的英文形式,用户需要输入中文翻译进行测试,输入错误则提示出正确的单词形式并将错误单词存在wrongword.txt中,输入正确则加十分。用户可选择退出测试或者继续进行测试。
    (5)帮助:给出系统帮助,显示单词助手的功能。
    (6)错词表:将用户输入错误的单词存储在wrongword.txt 中,并可以将错误单词打印出来。
    (7)查询成绩:用户可以查询自己的成绩。
    (8)退出系统:退出单词小助手。
    2.2算法思路
    此实验需要文件的读取,存储等操作,需要熟悉文件操作的有关知识块。所以我先学习了有关文件读取存储的有关知识,然后通过系统化的分析和模块化的设计最终完成了此实验。具体设计思路如下:
    ①定义单词、错误单词和用户的结构体数组。
    ②定义从单词库里读取信息的函数。
    ③定义从文件中读取单词的函数void readfile()。
    ④定义向文件写入单词的函数void writefile()。
    ⑤读取错题库文件void readwrongfile()。
    ⑥按字典排序函数sort(),将所有单词按字典顺序排序。
    ⑦向文件中添加单词信息的函数void add()。
    ⑧删除单词信息的函数void del()。
    ⑨修改单词库信息函数void modify()。
    ⑩单词预览函数void show()
    ⑪遍历错题库中单词并打印的函数void showwrong()
    ⑫查询单词函数void search()
    ⑬中译英测试函数void zytest()
    ⑭英译中测试函数void yztest()
    ⑮查看您的成绩函数void list()
    ⑯词典维护函数void maintain()
    ⑰用户界面,主要界面菜单void menu()
    ⑱主函数 int main()
    三.模块设计及流程图
    (1)整体流程图如下:
    在这里插入图片描述(2)词库维护模块流程图:
    在这里插入图片描述(3)单词测试N-S图:
    在这里插入图片描述

    四.代码

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define MAX_CHAR  20  // 最大字符
    #define MAX_NUM  200  // 单词的最大个数
    struct word//单词的结构体
    {
     char  en[MAX_CHAR]; // 英文形式
     char  ch[MAX_CHAR];   //中文形式
    } s[MAX_NUM]; //单词数组
    struct sco//用户的结构体
    {
     char  id[MAX_CHAR]; // 用户id
     int  sc;   //成绩
    } user[MAX_CHAR]; 
    struct word w[MAX_NUM];//定义一个错误单词的结构体数组
    int m;
    int num;     //单词个数
    int sum;    //记录错误单词的总数
    int total;    //记录用户的个数
    int select=1;//select 为是否退出系统的标记
    int d=0,c=0;//声明全局变量,记录用户答对以及回答错误的单词个数,以便计算分数
    //帮助查询函数
    void help()
    {
        printf("\n本系统主要实现英语单词学习的功能。用户可对词典文件中的单词进行预览,增删改查。");
     printf("\n同时还可进行中英、英中测试。本系统还提供了测试成绩的显示功能。");
    }
    //从单词库文件中读取单词的信息
    void  readfile()
    {
     FILE *fp;//声明文件
     int i=0;//定义变量
     fp=fopen("data.txt","r");//打开存放单词的文件库
     if(!fp)//如果文件不存在
     {
      printf("\n打开文件data.txt失败!");
      
     }
     while(fscanf(fp,"%s %s ",s[i].en,s[i].ch)==2)//读取下一个单词
     {
      i++;//计数器+1
     }
     num=i;//记录单词总数
     if(i==0)
      printf("\n文件为空,请选择词典维护增加词条!");
     else
      printf("\n");
     fclose(fp);//关闭文件
    }
    //向文件写入单词的函数
    void  writefile()
    {
     FILE *fp;//声明文件
     int i=0;//定义变量
     fp=fopen("data.txt","w");//打开文件
     if(!fp)//如果文件不存在
     {
      printf("\n打开文件data.txt失败!");
     }
     for(i=0;i<num;i++)//循环遍历写入单词
     {
      fprintf(fp,"\n%s %s ",s[i].en,s[i].ch);
     }
     printf("\n");
     fclose(fp);//关闭文件
    }
    //将用户文件写入用户信息的函数
    void writeuserfile()
    {
     FILE *fp;//声明文件
     fp=fopen("rank.txt","user");//打开文件
     if(fp)//如果文件不存在
     {
      fprintf(fp,"\n%s %d ",user[total].id,user[total].sc);
      printf("\n");
      fclose(fp);//关闭文件
     }
        printf("\n打开文件data.txt失败!");
    }
    //读取错题库文件
    void  readwrongfile()
    {
     FILE *fp;//声明文件
     int i=0;//定义变量
     fp=fopen("wrongword.txt","r");//打开存放记错单词文件库
     if(!fp)//如果文件不存在
     {
      printf("\n打开文件wrongword.txt失败!");
     }
     while(fscanf(fp,"%s %s ",w[i].en,w[i].ch)==2)
     {
      i++;//计数器+1
     }
     sum=i;//记录单词总数
     if(0==i)
      printf("\n");
     else
      printf("\n");
     fclose(fp);//关闭文件
    }
    /*按字典排序*/
    void sort()
    {
        int i,j;
        char temp[MAX_CHAR];
        for(i=0;i<num-1;i++)
        {
            for(j=num-1;j>i;j--)
                if(strcmp(s[j-1].en,s[j].en)>0)
                {
                    strcpy(temp,s[j-1].en);
                    strcpy(s[j-1].en,s[j].en);
                    strcpy(s[j].en,temp);
                    strcpy(temp,s[j-1].ch);
                    strcpy(s[j-1].ch,s[j].ch);
                    strcpy(s[j].ch,temp);
       }
     }
    } 
    //添加单词信息函数
    void add()
    {
        int i=num,j,flag=1;//定义变量num记录单词数,flag为标识符
     while(flag)
        {
            flag=0;
            printf("\n请输入单词的英文形式:");
      
      scanf("%s",s[i].en);//接收用户输入的英文的单词
            for(j=0;j<i;j++)//循环遍历
                if(strcmp(s[i].en,s[j].en)==0)//判断是否相等
                {
                    printf("已有该单词,请检查后重新录入!\n");
                    flag=1;
                    break; /*如有重复立即退出该层循环,提高判断速度*/
                }
     }
     printf("\n请输入单词的中文形式:");
     scanf("%s",s[i].ch);//接收用户输入的中文含义
     num++;//单词数增加
     printf("\n您输入的信息为: 英文: %s 中文: %s  ",s[i].en,s[i].ch);
        sort();//调用字典排序函数
    }
    //删除单词信息函数
    void del()
    {
        int i=0,j=0;
        char en[MAX_CHAR];   //英文形式
        printf("\n请输入你要删除的单词英文形式:");    
        scanf("%s",en);//输入英文单词
        for(i=0;i<num;i++)//循环遍历找到相等单词
            if(strcmp(s[i].en,en)==0)
            {
                for(j=i;j<num-1;j++)
                s[j]=s[j+1];
                num--; //数量减少 1
                return;
            }
      printf("\n没有这个单词!");
    }
    //删除错题库中的单词信息函数
    void delwrong()
    {
        int i=0,j=0;
        char  en[MAX_CHAR];   //英文形式
        printf("\n请输入你要删除的错题库中单词的英文形式:");   
        scanf("%s",en);//输入英文单词
        for(i=0;i<sum;i++)//循环遍历找到相等单词
            if(strcmp(w[i].en,en)==0)
            {
                for(j=i;j<sum-1;j++)
        w[j]=w[j+1];
                sum--; //数量减少 1
                return;
            }
      printf("\n您还没有背错这个单词!");
      
    }
    //修改单词库信息
    void modify()
    {
        int i=0,choose=0,flag=1;//choose代表选项标识,flag代表是否找到单词
        char  en[MAX_CHAR];   //英文形式
        while(flag||choose)
        {
            printf("\n请输入你要修改的单词英文形式:");    
            scanf("%s",en);    //输入英文单词
            for(i=0;i<num;i++)//找到该英文形式对应的序号
                if(strcmp(s[i].en,en)==0)//假如与用户输入的单词相等
                {
                    printf("\n请输入单词正确的英文形式:");
                    scanf("%s",s[i].en);//输入英文单词
           printf("\n请输入此单词正确的的中文形式:");
                    scanf("%s",s[i].ch);//接收中文含义
        printf("\n继续修改请选1,返回上一级请选0:");
                    scanf("%d",&choose);
                    if(choose==0) return;   
                }
       flag=0;//关键字标识
     }
     if(!flag)  printf("\n没有这个单词!");
    }
    //单词预览
    void show()
    {
        int i=0;//定义变量
        printf("\n单词\n");
     printf("英文        中文\n");
        for(i=0;i<num;i++)        
            printf("\n%-12s%-12s",s[i].en,s[i].ch);
     printf("\n");
     printf("\n");
    }
    //遍历错题库中单词并打印出来
    void  showwrong()
    {
        int  i=0;//定义变量
        int flag=0;//定义关键字,判断用户是否要删除错题库中的单词
        printf("\n英文        中文         ");
        for(i=0;i<sum;i++)             //循环遍历错误词库中的所有单词并写出所有的单词和中文
            printf("\n%-12s%-12s",w[i].en,w[i].ch);//将错误单词打印出来
        printf("\n");
        printf("\n");
        printf("输入1,进行选择删除错题库中的单词,输入其他其他回到主菜单");
        scanf("%s",&flag);//接收用户选择的关键字
        if(flag==1){ //判断用户是否需要删除
      void delwrong();//调用删除错题库函数
        }
    }
    //查询单词
    void search()
    {
     int i=0,choose=0,flag=1;
     char  ch[MAX_CHAR];   //中文形式
     char en[MAX_CHAR];
     int tag;
     printf("请输入你想查询的形式\n");
     printf("0****中文形式\n");
     printf("1****英文形式\n");
     scanf("%d",&tag);
     if(tag==0){
     while(choose||flag)
     {
         printf("\n请输入你要查询的单词中文形式:"); 
         scanf("%s",ch);
         for(i=0;i<num;i++)//先找到该中文形式对应的序号
         if(strcmp(s[i].ch,ch)==0)
      {  
          printf("\n英文形式       中文形式        ");
             printf("\n   %-12s%12s",s[i].en,s[i].ch);
      }
      printf("\n继续查询请选1,返回上一级请选0:");
       scanf("%d",&choose);
       if(choose==0) return; 
         flag=0;
     }
       if(!flag)  printf("\n没有这个单词!");
     }
     else
     {
      while(choose||flag)
      {
       printf("\n请输入你要查询的单词英文形式:"); 
             scanf("%s",en);
             for(i=0;i<num;i++)//先找到该中文形式对应的序号
        if(strcmp(s[i].en,en)==0)
        {  
         printf("\n英文形式       中文形式        ");
                     printf("\n   %-12s%12s",s[i].en,s[i].ch);
        }
        printf("\n继续查询请选1,返回上一级请选0:");
           scanf("%d",&choose);
           if(choose==0) return; 
        flag=0;
      }
       if(!flag)  printf("\n没有这个单词!");
     }
    }
    //中译英测试
    void zytest()
    {   
        char b1[20];
        int z;
        int choose=1;//关键字
        int i;
        struct word wrongword;//声明结构体变量,用来存错误单词信息
        FILE *fp;//声明文件
        while(choose)
        { 
            i = rand()%num;//生成介于词库数目之间的随机数,抽取词库中随机的汉字
            printf("\n【%s】请输入英文单词:",s[i].ch);
            scanf("%s",b1);//接受用户输入的单词
            for(z=0;strcmp(b1,s[i].en)!=0;z=z)//遍历数组,判断输入的单词是否正确
            {
                printf("\n输入错误,正确为:%s ,请记忆后重新输入",s[i].en);
                strcpy(wrongword.ch,s[i].ch);//拷贝记错单词的中文含义
                strcpy(wrongword.en,s[i].en);//拷贝记错的英文单词
                scanf("%s",b1);
                c=c+1;//记下错误的数量
            }
      printf("\n恭喜你,回答正确,加10分!\n\n");
      d=d+1;   //回答正确的单词数+1,分数增加
      fp=fopen("wrongword.txt","a");//打开记录错误单词的文件夹
      if(!fp)//如果文件不存在则打开失败
      {
       printf("\n打开文件wrongword.txt失败!");
      }
      else{  //如果文件存在,执行下面操作
       fprintf(fp,"%s %s\n ",wrongword.en,wrongword.ch);//将上面记录的错误单词的中文,英文记录到文件中
       printf("\n");//换行
       fclose(fp);//关闭文件
      }
      printf("\n继续测试请选1,返回上一级请选0:");
      scanf("%d",&choose);//从键盘接受用户接下来选择的操作
      if(choose==0) return;   
        }
    }
    //英译中测试
    void yztest()
    {
        char b1[20];
        int z;
        int choose=1;//关键字
        int i; //声明一个变量,记录数组下标
        struct word wrongword;//声明结构体变量,记录错误单词信息
        FILE *fp;//声明文件
        i = rand()%num;//生成介于词库数目之间的随机数,抽取词库中随机的单词
        while(choose)
        { 
            printf("【%s】请输入中文意思:",s[i].en);
            scanf("%s",b1);//接受单词的中文意思
            for(z=0;strcmp(b1,s[i].ch)!=0;z=z)//遍历数组,判断输入的中文意思是否正确
            {
                printf("\n输入错误,正确为:%s ,请记忆后重新输入",s[i].ch);
                strcpy(wrongword.ch,s[i].ch);//拷贝机错单词的中文含义
                strcpy(wrongword.en,s[i].en);//拷贝记错的英文单词
                scanf("%s",b1);
                c=c+1;//记下错误的次数
            }
            printf("\n恭喜你,回答正确,加10分!\n\n");
      d=d+1;//回答正确的单词数+1,分数增加
      fp=fopen("wrongword.txt","a");//打开记录错误单词的文件夹
      if(!fp)//如果文件不存在
      {
       printf("\n打开文件wrongword.txt失败!");  
      }
      else{
       fprintf(fp,"%s %s\n ",wrongword.en,wrongword.ch);//将错误单词的中文含义以及英文,输入到文件中
       printf("\n");
       fclose(fp);//关闭文件
      } 
      printf("\n继续测试请选1,返回上一级请选0:");
      scanf("%d",&choose);//接收用户的选择
      if(choose==0) return;   
        }
    }
    //查看您的成绩
    void list()
    {   
        printf("\n  共计输入错误:%d次  **每次扣10分**\n",c);
        printf("    共计输入正确:%d次  **每次加10分**\n",d);
        int score=10*d-10*c;//获得成绩
        printf("    你的总得分为:%d分\n\n",score);//计算用户的分数,
        //将成绩写入文件
     int i=total,j;//定义变量total记录用户人数,flag为标识浮
            for(j=0;j<i;j++)//循环遍历
                if(strcmp(user[total].id,user[j].id)==0)//判断是否相等
                {
                    user[total].sc=score;
                    writeuserfile();
                }
                else{
                    user[total].sc=score;
                    writeuserfile();//调用写入用户信息的函数 
    				total++;//用户人数增加
     }
    }
    //词典维护,主要包括单词的增加,修改,删除以及查询
    void maintain()
    {
        int choose;//维护功能选择
        printf("   ------------------\n");
        printf("   1.增加单词\n");
        printf("   2.修改单词\n");
        printf("   3.删除单词\n");
        printf("   4.查询单词\n");
        printf("   5.退出本菜单\n");
        printf("   ------------------\n"); 
        while(1)
        {    
            printf(" \n请输入维护功能编号:");
            scanf("%d",&choose);      //接受用户需要的功能
            switch(choose)//switch选择语句
            {
      case 1:
       add();writefile();break;
      case 2:
       modify();writefile();break;
      case 3:
       del();writefile();break;
      case 4:
       search();break;
            case 5:  return;
            default: printf("\n请在1-5之间选择");
            }
        }
    }
    //用户界面,主要界面菜单
    void menu()
    {  
        int t;
        printf("\n");   
        printf("               ********************************************************\n");
        printf("              ★                                                      ★\n");
        printf("              ★                 英语单词小助手                       ★\n");
        printf("              ★                                                      ★\n");
        printf("              *********************************************************\n");
        printf("              #                                                       #\n");
        printf("              #       0.词库维护          1.单词预览                  #\n");
        printf("              #                                                       #\n");
        printf("              #       2.单词背诵(中英)    3.单词背诵(英中)            #\n");
        printf("              #                                                       #\n");
        printf("              #       4.查询成绩          5.帮助                      #\n");
        printf("              #                                                       #\n");
        printf("              #       6.错词表            7.退出系统                  #\n");
        printf("              #                                                       #\n");
        printf("              #                                                       #\n");
        printf("             **********************************************************\n");  
        printf("\n");
        printf("                    请选择您需要的操作序号(0-7)按回车确认:\n");
        readfile();//初始化
        readwrongfile();//初始化
        scanf("%d",&t);//接收用户选择的功能
        printf("\n");
        switch(t)//选择语句
        {
     case 0:
      maintain();break;//调用词库维护的函数
     case 1:
      show();break; //调用读取文件单词库的函数,并打印出来
     case 2:
      zytest();break;//调用中英背诵单词的函数
     case 3:
      yztest(); break;//调用英中背诵单词的函数
     case 4:
      list();break;//调用显示成绩列表的函数
     case 5:
      help();break;//调用帮助函数
     case 6:
      showwrong();break;//打印错词表
     case 7:
      select=0;break;//退出
     default:
            printf("请在0-6之间选择\n");
     }
    }
    int main()  
    {  
     printf("请输入用户ID\n");
     scanf("%s",user[total].id);//从键盘接收用户输入id
        while(select)//程序循环,select为关键字
        {
            menu();//调用主菜单函数
        }
        system("pause");
     system("CLS");
        return 0;
        }
    

    五.调试及测试
    ①主界面如图所示:
    在这里插入图片描述
    ②词库维护功能中增加单词操作:
    在这里插入图片描述
    ③修改单词:
    在这里插入图片描述
    ④删除单词:
    在这里插入图片描述
    ⑤单词预览:

    ⑥单词背诵:(英中测试和中英测试)
    在这里插入图片描述
    在这里插入图片描述⑦查询成绩:
    在这里插入图片描述
    ⑧帮助:
    在这里插入图片描述

    ⑨错词表:
    在这里插入图片描述
    打开wrongword.txt如图所示:(将用户测试错误单词保存在文件中)
    在这里插入图片描述六.个人总结
    在本次上机实验中,需要对文件流进行操作,通过此次的实验,让我对文件流的操作有了更加深入的认识。在打开文件时要注意打开方式,打开方式的不同可能会对文件数据造成损害以“w”写入数据是指针出现的位置是文件开始,可能造成覆盖,这时候可以利用“a”打开,指针出现在文件末尾。
    此次上机实验我只完成了基本要求的有关内容,只增加了错词表的功能,关于对多个单词相同汉语的背诵还没有实现,对我来说有一点难度,在后续的学习中,我将不断完善我的单词小助手程序,争取实现更多功能,给用户带来更好地体验。
    通过此次上机实验我也收获了很多,让我对结构化的程序设计思想有了更加深入的理解,提高了自己的动手能力,锻炼了思维。

    展开全文
  • 单词

    2019-04-06 17:26:43
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求:可将程序中的不足(如数据验证,排名功能)等...

    一、题目分析
    (1)题目描述:
    单词小助手,要求完成以下任务:
    1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。
    3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词)
    提高要求:可将程序中的不足(如数据验证,排名功能)等根据自己的能力与理解完成。

    (2)分析:
    单词小助手:首先题目已经给出了基本的代码,也实现了基本的功能,比如说添加单词,修改,删除,查询,以及单词小测试等功能,还需要做的就是改善其中的功能,更进一步添加新的功能,比如说改善其中的数据验证,添加排行功能,错词重复记忆功能。

    数据验证:
    数据验证就是进行输入检查,包括进行输入菜单选择时的验证和输入单词的正确性检查。输入菜单选择时,用户选错的提示,因为scanf指定输入格式后,只能输入固定的格式,否则就会出现报错现象。当输入英文的时候,我们需要判断用户输入的是否为英文字母,如果是数字或者其他的什么字符就应该提醒,在此处我们需要加入一个判断函数--------if(a[i]>='a'&&a[i]<='z'||a[i]=='\0||a[i]==' '),专门判断英文输入正确性。

    排行功能:
    这里,可以添加一个专门存放排行榜用户信息的文件,建立一个用户的结构体,在单词小测试后输入用户名,将用户的错词,答对的词数以及成绩存入一个文件,并进行排序和显示出来。

    错词记忆:
    用户答错词时,用户需根据提示,重新输入词,直到输入正确为止。

    二、算法构造
    添加单词算法的流程图:
    在这里插入图片描述
    N–S盒图
    在这里插入图片描述
    排行榜的流程图:
    在这里插入图片描述
    排行榜的盒图:
    在这里插入图片描述

    三、算法实现

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define MAX_CHAR  20  // 最大字符
    #define MAX_NUM  200  // 单词的最大个数
    #define MAX_U 20       //用户人数 
     struct word
    //单词的结构体
    {
       char  en[MAX_CHAR]; // 英文形式
       char  ch[MAX_CHAR];   //中文形式
    }  s[MAX_NUM]; //单词数组
     struct rankinglist
    //用户名单结构体 
    {
    	char user[20];
    	int c,d;       //c为单词错误数,d为单词正确数 
    	int core;     //成绩 
    }r[MAX_U];         
    int   num;           //单词个数
    int   num1=0;          //用户数 
    int select=1;//select 为是否退出系统的标记
    int d=0,c=0;
    int core;    //成绩 
    //帮助
    void help()
    {
        printf("\n本系统主要实现英语单词学习的功能。用户可对词典文件中的单词进行预览,增删改查。");
    	printf("\n同时还可进行中译英、英译中测试。本系统还提供了测试成绩的显示功能。");
    	printf("\n经过改善本系统添加了新的排行榜功能期待你来挑战第一名!另:还有错词循环记忆让你记忆不愁。"); 
    }
    //检查数据选项
    int panduan()
    {
    	char c[50];
    	scanf("%s",c); 
        if(c[1]=='\0'){
        	if(c[0]>='0'&&c[0]<='9')
        	return c[0]-'0';
    	}
    	else return 0;
    } 
    //数据验证(英文)
    int panduan1(char a[]){     //返回0不是英文单词,返回1是 
    	int i;  
    	for(i=0;i<20;i++){      //判断条件是i不是a[i]啊啊啊 
    		if(a[i]>='a'&&a[i]<='z'||a[i]=='\0') continue;
    		else{
    			printf("亲,这边建议您输入英文呢!");
    			return 0;
    		}      
    	}
    	return 1;
    }
    //从文件中读取单词的信息
    void  readfile()
    {
       FILE *fp;
       int i=0;
       fp=fopen("data.txt","r");   //“r”方式打开不允许改写文件 
       if(!fp)                     //说明没有文件 
       {
    	   printf("\n打开文件data.txt失败!");
    
       }
       while(fscanf(fp,"%s %s ",s[i].en,s[i].ch)==2)  //以空格符,换行符等为结束标志,返回值为实际读取的字符串个数 
       {              
    	   i++;                                       //读取下一个单词 
       }
       num=i;
       if(0==i)            
    	   printf("\n文件为空,请选择词典维护增加词条!");
       else
    	   printf("\n");
       fclose(fp);                                    //读取完毕,关闭文件 
     
    }
    //从文件中写入单词的信息
    void  writefile()
    {
       FILE *fp;
       int i=0;
       fp=fopen("data.txt","w");                     //初次写入的函数,所以用 “w"方式写入 
       if(!fp)
       {
    	   printf("\n打开文件data.txt失败!");
    
       }
       for(i=0;i<num;i++)
       {
    	   fprintf(fp,"\n%s %s ",s[i].en,s[i].ch);  //写入字符串(单词) 
       }
       printf("\n");
       fclose(fp);
    }
     //实现排序对成绩
     void sort0()
     {
     	int i,j;
    	char temp[20];
    	int t; 
    	for(i=0;i<num1-1;i++)
    	{
    		for(j=num1-1;j>i;j--)
    			if(r[j-1].core<r[j].core)        //一个内循环实现将最高的成绩放在第一个位置 
    			{
    				strcpy(temp,r[j-1].user);            //用户名交换 
    				strcpy(r[j-1].user,r[j].user);
    				strcpy(r[j].user,temp);
    				t=r[j-1].c;           //错误单词交换 
    				r[j-1].c=r[j].c;
    				r[j].c=t;
    				t=r[j-1].d;           //正确单词交换 
    				r[j-1].d=r[j].d;
    				r[j].d=t;	
    				t=r[j-1].core;           //成绩交换 
    				r[j-1].core=r[j].core;
    				r[j].core=t;		
    			}
    	}
     	
      } 
    //读取用户的成绩 
    void  readuser()
    {
       FILE *fp;
       int i=0;
       fp=fopen("ranklist.txt","r");   //“r”方式打开不允许改写文件 
       if(!fp)                     //说明没有文件 
       {
    	   printf("\n打开文件ranklist.txt失败!");
       }
       while(fscanf(fp,"%s %d %d %d ",r[i].user,&r[i].d,&r[i].c,&r[i].core)==4)  //以空格符,换行符等为结束标志,返回值为实际读取的字符串个数 
       {              
    	   i++;                                       //读取下一个单词 
       }
       num1=i;
       if(0==i)            
    	   printf("\n文件为空,请先创建用户名并参加测试单词!");
       else
    	   printf("\n");
       fclose(fp);                                    //读取完毕,关闭文件 
    }
    //文件写入用户信息 
    void writeuser()
    {
        printf("留下你的名字:"); 
    	scanf("%s",r[num1].user);
    	FILE *fp;
    	int i=num1;
        fp=fopen("ranklist.txt","a");                     //
    	r[i].c=c;
    	r[i].d=d;
    	r[i].core=10*d-10*c;
        fprintf(fp,"\n%s %d %d %d ",r[i].user,r[i].d,r[i].c,r[i].core);   
        printf("\n");
        d=0;
        c=0;               //初始化为0,为下个用户所用 
        num1++;            //用户加一 
        sort0();
        fclose(fp);
     }
    void sort()/*按字典排序*/
    {
    	int i,j;
    	char temp[MAX_CHAR];
    	for(i=0;i<num-1;i++)
    	{
    		for(j=num-1;j>i;j--)
    			if(strcmp(s[j-1].en,s[j].en)>0)        //一个内循环实现将最短的单词放在第一个位置 
    			{
    				strcpy(temp,s[j-1].en);            //英文交换 
    				strcpy(s[j-1].en,s[j].en);
    				strcpy(s[j].en,temp);
    				strcpy(temp,s[j-1].ch);            //中文交换 
    				strcpy(s[j-1].ch,s[j].ch);
    				strcpy(s[j].ch,temp);			
    			}
    	}
    } 
    //添加单词信息
    void add()
    {
       int i=num,j,flag=1;
       while(flag)
    	{
    		flag=0;
    		printf("\n请输入单词的英文形式:");
    		scanf("%s",s[i].en);               //  
    		if(panduan1(s[i].en)==0) {
    			flag=1;          //continue之后不会结束 
    			continue; 
    		}
    		for(j=0;j<i;j++)                           //遍历一遍文件里的单词,检查有没有重复的单词 
    			if(strcmp(s[i].en,s[j].en)==0)
    			{
    				printf("已有该单词,请检查后重新录入!\n");
    				flag=1;
    				break; /*如有重复立即退出该层循环,提高判断速度,break只跳出了for循环,让用户再次输入*/
    			}
        
       }
       printf("\n请输入单词的中文形式:");
       scanf("%s",s[i].ch);
       num++;                                  //单词数加1 
       printf("\n您输入的信息为: 英文: %s 中文: %s  ",s[i].en,s[i].ch);
       sort();
    }
    //删除单词信息
    void del()
    {
    	int i=0,j=0;
    	char  en[MAX_CHAR];   //英文形式
      	printf("\n请输入你要删除的单词英文形式:");	
    	scanf("%s",en);
    	for(i=0;i<num;i++)//先找到该英文形式对应的序号
    	    if(strcmp(s[i].en,en)==0)
    		{
    			for(j=i;j<num-1;j++) //单词前移 
    				 s[j]=s[j+1];       
    			num--; //数量减少 1
    			return;
    		}
         printf("\n没有这个单词!");
     
    }
    //修改单词信息
    void modify()
    {
    	int i=0,choose=0,flag=1;//chooses代表菜单选项标识,flag代表是否找到单词
    	char  en[MAX_CHAR];   //英文形式
    	while(flag||choose)
    	{
    		printf("\n请输入你要修改的单词英文形式:");	
    		scanf("%s",en);
    		for(i=0;i<num;i++)//先找到该英文形式对应的序号
    			if(strcmp(s[i].en,en)==0)
    			{
    				printf("\n请输入单词正确的英文形式:");
    				scanf("%s",en);
    				
    				printf("\n请输入此单词正确的的中文形式:");
    				scanf("%s",s[i].ch);
    				
    				printf("\n继续修改请按任意键,返回上一级请选0:");
    				choose=panduan();                     
    				if(choose==0) return;	
    			}
    		   flag=0;
    		      
    	}
      if(!flag)	 printf("\n没有这个单词!");                //设计的真巧妙! 
    }
    //单词预览
    void show()
    {
    	int  i=0;
    	printf("\n单词:     英文:      中文:         ");
    	for(i=0;i<num;i++)
    		printf("\n          %-12s%-12s",s[i].en,s[i].ch);
    
    }
    //排行榜预览 
    void showrank()
    {
    	FILE *fp;
    	int i;
    	fp=fopen("ranklist.txt","r");
    	sort0();                     //输出前排序 
    	if(!fp)                     //说明没有文件 
        {
    	   printf("\n文件ranklist.txt不存在!请参加测试!");
    	   return; 
        }
    	else
    	{
    	printf("\n用户名:   答对单词数:    答错单词数:    成绩:");
    	for(i=0;i<20;i++)
    	printf("\n      %-12s%-12d%-12d%-12d",r[i].user,r[i].d,r[i].c,r[i].core); 
    	}
    	fclose(fp);
    }
    //查询单词(中文查询) 
    void search0()
    {
    	int i=0,choose=0,flag=1;
    	char  ch[MAX_CHAR];   //中文形式
    	while(choose||flag)
    	{
        	printf("\n请输入你要查询的单词中文形式:");	
    	    scanf("%s",ch);
        	for(i=0;i<num;i++)//先找到该中文形式对应的序号
    	    if(strcmp(s[i].ch,ch)==0)
    		{		
    		    printf("\n英文形式:       中文形式:        ");
    	        printf("\n   %-12s%12s",s[i].en,s[i].ch);
    			
    			printf("\n继续查询按任意键,返回上一级请选0:");
    			choose=panduan();
    			if(choose==0) return;	
    		}
    	    flag=0;
    	}
       if(!flag)	 printf("\n没有这个单词!");
    }
    //查询单词(英文查询) 
    void search1()
    {
    	int i=0,choose=0,flag=1;
    	char  en[MAX_CHAR];   //中文形式
    	while(choose||flag)
    	{
        	printf("\n请输入你要查询的单词英文形式:");	
    	    scanf("%s",en);
        	for(i=0;i<num;i++)//先找到该中文形式对应的序号
    	    if(strcmp(s[i].en,en)==0)
    		{		
    		    printf("\n英文形式:       中文形式:        ");
    	        printf("\n   %-12s%12s",s[i].en,s[i].ch);
    			
    			printf("\n继续查询请按任意键,返回上一级请选0:");
    			choose=panduan();
    			if(choose==0) return;	
    		}
    	    flag=0;
    	}
       if(!flag)	 printf("\n没有这个单词!");
    }
    //查询单词的选项
    void selectword()
    {
    	int x;     //查询选项
    	int t=1;
    	while(t){
    		printf("请选择查询类型:\n(1)英文查询      (2)中文查询\n");
    	    x=panduan();
    	    if(x==1){
    	    	search1();
    	    	t=0;
    		}
    	    if(x==2){
    	    	search0();
    	    	t=0;
    		}
    	    if(x!=1&&x!=2){
    	    	printf("没有这个选项,请重新输入!");
    	    	t=1;
    		}
    	}
    } 
    //中译英测试
    void zytest()
    {	
    	char b1[20];
    	int z;
        int choose=1;
    	int   i;
    	srand(time(NULL));
    	while(choose)
    	{ 
    	    i = rand()%num;
    		printf("\n【%s】的英文单词:",s[i].ch);
    		scanf("%s",b1);
    		for(z=0;strcmp(b1,s[i].en)!=0;z=z)
    		{   if(c!=0) 
    		    {
    		     printf("\n");
    			 printf("少年请重新来过吧!请记住它!错了2遍以上的单词:");  //对错误的单词进行重复记忆 (完善功能)
    		     printf("\n英文形式:       中文形式:        ");
    	         printf("\n   %-12s%12s",s[i].en,s[i].ch);
    	         printf("\n");
    			 } 
    			printf("\n输入错误!!请重新输入:");scanf("%s",b1);c=c+1; 
    		}    //错误加一 
    		printf("\n恭喜你,回答正确,加10分!\n\n");d=d+1;              //正确加一 
    		printf("\n继续测试请按任意键,返回上一级请选0:");
    		choose=panduan();
    		if(choose==0) return;	
    	}
    }
    //英译中测试
    void yztest()
    {
    	char b1[20];
    	int z;
    	int choose=1;
    	int  i;
    	srand(time(NULL));
    	while(choose)
    	{ 
    	    i = rand()%num;
        	printf("【%s】的中文意思:",s[i].en);
        	scanf("%s",b1);
        	for(z=0;strcmp(b1,s[i].ch)!=0;z=z)
    		{   if(c!=0) 
    		    {
    		     printf("\n");
    			 printf("少年请重新来过吧!请记住它!错了2遍以上的单词:");  //对错误的单词进行重复记忆 (完善功能)
    		     printf("\n英文形式:       中文形式:        ");
    	         printf("\n   %-12s%12s",s[i].en,s[i].ch);
    	         printf("\n");
    			 } 
    			printf("\n输入错误!!请重新输入:");scanf("%s",b1);c=c+1;
    		}    //错误加一 
    	    printf("\n恭喜你,回答正确,加10分!\n\n");d=d+1;
    	    printf("\n继续测试请按任意键,返回上一级请选0:");
    	    choose=panduan();  
    	    if(choose==0) return;	
    	}
    }
    //成绩列表
    void list()
    {
    	printf("\n	共计输入错误:%d次	**每次扣10分**\n",c);
    	printf("	共计输入正确:%d次	**每次加10分**\n",d);
    	printf("	你的总得分为:%d分\n\n",10*d-10*c);
    } 
    
    //词典维护
    void maintain()
    {
        int choose;//维护功能选择 
    	printf("   ------------------\n");
    	printf("   1.增加单词\n");
    	printf("   2.修改单词\n");
    	printf("   3.删除单词\n");
    	printf("   4.查询单词\n");
    	printf("   5.退出本菜单\n");
    	printf("   ------------------\n"); 
       	while(1)
    	{  
    		printf(" \n请输入维护功能编号(按5退出):");
    		choose=panduan();
    		switch(choose)
    		{
    		 case 1:
    			    system("cls");add();writefile();break;
    		 case 2:
    			    system("cls");modify();writefile();break;
    		 case 3:
    			    system("cls");del();writefile();break;
    		 case 4:
    		 	    system("cls");selectword();break;
    	 	 case 5:  return;
    		 default: printf("\n请在1-5之间选择");
    		}
    	}
    }
    //用户界面
    void menu()
    {  
    	int item;
    	printf("\n");	
    	printf(" *********************************************************\n");
    	printf("#                                                       #\n");
    	printf("#                     英语单词小助手                    #\n");
    	printf("#                                                       #\n");
    	printf("#                  版本 : v1.0(改善版)               #\n");
    	printf("#                                                       #\n");
    	printf(" *********************************************************\n");
    	printf("#                                                       #\n");
    	printf("#                     (1)词库维护                     #\n");
    	printf("#        (2)单词预览            (3)单词背诵(中译英) #\n");
    	printf("#                                                       #\n");
    	printf("#        (4)单词背诵(英译中)    (5)查询成绩         #\n");
    	printf("#                                                       #\n");
    	printf("#        (6)帮助                (7)排行榜           #\n");
    	printf("#                     (8)退出系统                     #\n");
    	printf("#                                                       #\n");
    	printf("#                      单词旅行开始                     #\n");
    	printf("#                                                       #\n");
    	printf(" **********************************************************\n");  
    	printf("\n");
    	printf("           请选择您需要的操作序号(1-8)按回车确认:");
    	
    	item=panduan(); 
    	printf("\n");
        readfile();     //打开文件好进行下一步操作 
    	switch(item)
    	{
    	 case 1:
    		    system("cls");maintain();break;    //单词维护 
    	 case 2: 
    		    system("cls");show();break;        //单词预览 
    	 case 3:
    		    system("cls");zytest();writeuser();break;      //中译英 
    	 case 4:
    		    system("cls");yztest();writeuser();break;     //英译中 
         case 5:
    		    system("cls");list();break;        //查成绩 
    	 case 6:
    		    system("cls");help();break;        //帮助 
    	 case 7:
    	        system("cls");readuser();showrank();break;
      	 case 8:
    		    select =0;break;
    	 default:
    		printf("请在1-8之间选择\n");
    	 }
    }
    int main()
    { 
        system("color FA");
      	while(select)
    	{
    		menu();
    	}
    	system("pause");
    	return 0;
    } 
    
    

    四、调试,测试及运行结果

    (1)调试:
    在这里插入图片描述
    (2)运行结果:
    在这里插入图片描述

    五、经验总结
    由于很久没写过C语言了,对于这个C语言程序改进不是特别好,有些功能也只写了一个大概,并没有做得很好。在写的过程中,我遇到了很多问题,也从中得到了很多经验。
    使用scanf函数的时候,如果用错的话会导致不可预料的后果,格式是%d的时候,如果输入的是其他类型的会出错。而且在输入用多个scanf()的时候,如果输入缓冲区还有数据的话,那么scanf()就不会询问用户输入,而是直接就将输入缓冲区的内容拿出来用了,这就导致了前面的错误影响到后面的内容,为了隔离这种问题,需要通过各种方法将输入缓冲区的内容读出来(清除)。
    使用switch选择的时候,switch(表达式) 表达式的值的类型应该是整型或是可以转换为整型的数值类型,例如:int,char,枚举。但是,long和string不能作用于switch语句。如果输入的时候输的是字符,它也不会跳入default,只会陷入死循环,所以需另加一个判断选项函数。
    使用gets函数:轻易用他会出逻辑错误,难找,尤其是多次用它或者与getchar()函数结合用。按下空格符的时候,会存入缓冲区,然后下一个gets()或getchar()就会接受空格,然后程序就会以为结束,相当于跳过了这行输入函数!
    文件流操作:
    打开文件时要注意打开方式,打开方式的不同可能会对文件数据造成损害以“w”写入数据是指针出现的位置是文件开始,可能造成覆盖,这时候可以利用“a”打开,指针出现在文件末尾。
    此次任务写的东西并不多,但是要比较难写一点,因为需要根据需求来写,而且各个部分都要考虑周全。通过这次较为复杂一定的小任务,我得到了一个写这个任务的经验,一定要先进行总体考虑,然后对细节进行逐个击破。

    展开全文
  • 单词小助手C语言版

    2020-12-31 12:53:48
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求:可将程序中的不足(如数据验证,排名功能)等...
  • 单词翻转

    2016-03-28 20:55:00
    问题描述:输入一个英文句子,翻转句子中单词的顺序...参考思路:首先整个字符串进行翻转,然后根据空格来实现每个单词的翻转,关键在于判断结束为止以及下一个单词的开始位置。 参考代码: #include <bits...
  • 单词小助手完善

    2019-04-04 22:04:55
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能)...
  • 英语单词小助手

    2019-06-25 00:49:15
    将单词测试中的功能完善,可针对做错的单词重复记忆。 查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能)等...
  • 编译原理实验一:单词的词法分析程序设计 (注:这是我第一次尝试写博客,也是为了对自己的学习生活的一种记录,写的如果有...根据教学要求和学生具体情况,从PL/0语言中选取它的一个适当大小的子集,可以选取一类典型
  • C语言单词小助手

    2018-09-08 22:04:10
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能)...
  • 并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并...
  • C语言实现单词小帮手

    2020-12-25 17:56:19
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能)...
  • 查找兄弟单词

    千次阅读 2012-09-16 19:46:29
    问题: 给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词,例如单词army和mary互为兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这...例如,将单词按字母
  • 模拟猜单词游戏

    2021-04-04 19:39:37
    最近自学了C语言,完成了模拟猜单词程序,下面我能够运行出的程序展现出来供和我一样的初学者参考。 一.内容和要求 模拟猜单词游戏包括:单词管理、玩家记录、猜词过程、系统设置等必须完成的基本功能以及成绩计算...
  • 单词 程序

    2014-04-28 22:37:06
    3.根据单词长度设置不同级别的游戏。 4.游戏过程中,猜错的字母被记录下来,每次猜测后,游戏应显示出当前猜出的残缺单词,以及当前猜错的所有字母,和剩下的机会。 5.提供相应安全机制,保证程序的健壮性,如选择...
  • 2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能...
  • 2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能...
  • 单词小助手(C语言)

    2019-04-05 22:54:12
    2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求:可将程序中的不足(如数据验证,排名功能)...
  • 2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能)...
  • 2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 提高要求: 可将程序中的不足(如数据验证,排名功能)...
  • 单词查找--洛谷AC

    2020-08-12 11:47:03
    题目背景 查找的方法有顺序查找、折半查找、索引查找、哈希查找等。...查找前,先所有字典中单词读入至一个单词表(数组)中,然后按要求进行查找。字典中单词总数不超过3500,单词中的字符都是英文
  • Trie树兄弟单词实例

    2015-08-03 16:29:42
    现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有哪些兄弟单词要求时间和空间效率尽可能的高。解决思路:利用Trie树就可以妥善解决。 只需上面的树节点增加一个vector,构建
  • C++单词转换程序

    2019-05-01 23:58:29
    给定一个string,它转换成另一个string。程序的输入是两个txt文件,第一个文件保存转换规则(如下WordMap.txt),用来转换...要求根据WordMap.txt中的转换规则,转换InFile.txt的内容,并转换内容保存到outpu...
  • 一、 根据给定的文本文件...要求:1) 读入该文件,统计并输出单词的个数2) 返回单词列表(注意:指返回单词列表即可,不要在屏幕上显示)import re #统计单词个数: def count_words(file_path): with ope...
  • 2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词) 二、提高要求: 可将程序中的不足(如数据验证,排名...
  • 例题6-16 单词 UVa10129

    2015-03-31 16:20:34
    由于本题还要求了两个单词拼在一起的条件是前一个单词的右端点和本单词的左端点一样。所以这是一个有向图。根据结论:有向图的底图(忽略边的方向后的图)必须连通;有向图中最多只能有两个端点的入度不等于出度,且...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 305
精华内容 122
关键字:

根据要求将单词的