m0_66051118 2022-01-03 14:34 采纳率: 76.3%
浏览 299
已结题

C语言编写背单词程序

建立一个包含若干个英文单词的词汇表文件。其中每个词条由单词和解释两部分组成
如:apple 苹果
利用该词汇表文件实现背单词的功能。
功能要求:
1.读取已有的词汇表文件。
2.能浏览词汇表的全部词条。
3.背单词功能:由用户指定每次背单词的数目,程序随机分配挑选给定个数的单词(不重复);用户输入相应英语单词,程序给出中文解释;判断输入单词的正误,输入正确得一分;对每个单词统计总得分;总得分最低的单词为生疏单词,让这类
单词多出现。

  • 写回答

1条回答 默认 最新

  • 天空海阔66 2022-01-04 10:54
    关注
    
    /*
    建立一个包含若干个英文单词的词汇表文件。
    其中每个词条由单词和解释两部分组成
    如:apple 苹果
    利用该词汇表文件实现背单词的功能。
    功能要求:
    1.读取已有的词汇表文件。
    2.能浏览词汇表的全部词条。
    3.背单词功能:由用户指定每次背单词的数目,
    程序随机分配挑选给定个数的单词(不重复);
    用户输入相应英语单词,程序给出中文解释;
    判断输入单词的正误,输入正确得一分;
    对每个单词统计总得分;
    总得分最低的单词为生疏单词,让这类单词多出现。
    */ 
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_LINE 1024
    char* substr(char *s,int startPos,int endPos){
     char t[endPos-startPos];
     strncpy(t, s + startPos, endPos);
     t[endPos] = '\0';
     printf("%s\n", t);
     return t;
    }
    int index(char *a,char c)
    {
        //printf("index yunx");
        int i=0;
        while(a[i]!='\0')
        {
            if(a[i]==c)
            break; 
        i++;
        }
        return i;    
    }
    int main()
    {
     char buf[MAX_LINE];  /*缓冲区*/
     FILE *fp;            /*文件指针*/
     int len;             /*行字符个数*/
     if((fp = fopen("word.txt","r")) == NULL)
     {
     perror("fail to read");
     exit (1) ;
     }
     //FILE *fpWrite=fopen("newtest.txt","w");  
     //if(fpWrite==NULL)  
        //{ return 0; }   
        char wordArray[100][MAX_LINE];
        int i=0,j=0;
     while(fgets(buf,MAX_LINE,fp) != NULL)
     {
     len = strlen(buf);
     j=len;
     buf[len-1] ='\0';  /*去掉换行符*/
          printf("%s\n",buf); 
          strcpy(wordArray[i],buf);
          i++;
     }
     printf("in put your want to memory word number:\n");
     int memoryWordNumber;
     scanf("%d",&memoryWordNumber);
     char sutinputword[50];
     int wordLength,intindexO;
     for(int j=0;j<memoryWordNumber;j++) 
     {
     i = rand() % 10; //产生0~9的随机数,注意10会被整除
     char a[50];
     strcpy(a,wordArray[i]);
     intindexO=index(a,' ');//取空格的位置。如apple 苹果 位置为6 
     len=strlen(wordArray[i]);
     printf("in put the word %s\n",substr(wordArray[i],intindexO,len));
     scanf("%s",sutinputword); 
     if(strcmp(sutinputword,substr(wordArray[i],0,intindexO))==0)//比较学生输入的与word里面的是否相等 
         printf("right!");
     else printf("wrong");
     }
     return 0;
    }
    

    词汇文件为word.txt内容如下
    apple 苹果
    hello 你好
    memory 记忆
    desk 桌子
    book 书本
    pen 钢笔
    pencil 铅笔
    glass 水杯
    class 班级

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月13日
  • 已采纳回答 1月5日
  • 创建了问题 1月3日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法