写一个简单的背单词c语言程序

简介: 写一个简单的背单词c语言程序

单词库需要手动添加单词,一共有三个txt文档

2c960d9c71a14a4fae6cacfb116d38db.png 文档格式如下

43b8cd55410f40e3a73cc929a7fe2a73.png

备注:必修严格按照格式来,否者则会显示不准确。

实现功能如下

58d31f8d87454cd9961f3e9d07320d91.png

查询单词:汉语查询英语英语查查询汉语

5f72e85e14994e27aec04f362f51abe4.png

背诵模式:出现英语默写汉语,出现汉语默写英语

75584078d2d64ae3b62c632d2bc462fa.png

还有 错词背诵模式    

        查看全部单词  

        查看全部错词  

        移除一个错词

等等

全部代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
void menu();
void beidanci();
void words();
void lookcw(); 
void search();
void movecc(); 
void beidancicw();
int k=1;
int main()
{int w=0;
  while(k!=0)
{ 
  menu();
}
  system("pause");
  return 0; 
}
void words()
{ int i=0;
  typedef struct stu
  { int j;
    char yw[20];
    char zw[20];
  }dcb;
  dcb dcb_[1000]; 
  FILE *fp;
  fp=fopen("D:\\仿真单词本\\dancibenqb.txt","r");
  if(!fp)
  {
    printf("打开失败!");
    exit(1);
  }
  fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
  while(!feof(fp))
  {
    i++;
    fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
  }
  fclose(fp);
  dcb_[i+1].j=0;
  i=0;
  printf("单词本的信息如下\n");
  while((dcb_[i].j)!=0)
  {
    printf("%d %s %s\n",dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
    i++;
  }
  system("pause");  
}
void beidanci()
{
    typedef struct stu
  { int j;
    char yw[20];
    char zw[20];
  }dcb;
  dcb dcb_[1000];
  typedef struct ct
  {
    int c;
    char Cyw[20];
    char Czw[20];
  }ctb;
  ctb ctb_[1000];
    FILE *fp;
    int i=0,count=0,q=0;
    int w=1,count1;
    char zwsr[20];
  fp=fopen("D:\\仿真单词本\\dancibenqb.txt","r");  
  fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
  while(!feof(fp))
  {
    i++;
    fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
  }
  fclose(fp);
  fp=fopen("D:\\仿真单词本\\dancibencw.txt","r");  
  fscanf(fp,"%d%s%s",&ctb_[q].c,ctb_[q].Cyw,ctb_[q].Czw);
  while(!feof(fp))
  {
    q++;
    fscanf(fp,"%d%s%s",&ctb_[q].c,ctb_[q].Cyw,ctb_[q].Czw);
  }
  count1=q;
  fclose(fp);
  dcb_[i+1].j=0;
  int m=0;
  printf("单词本的信息如下\n");
  while((dcb_[m].j)!=0)
  {
    printf("%d %s %s\n",dcb_[m].j,dcb_[m].yw,dcb_[m].zw);
    m++;
  }
  count=m;
  int n;
  int sjs[50]={0};//随机数 
  srand(time(NULL));
  printf("请选择背单词的模式:\n\n1:   出现英语背诵翻译  \n2:   出现汉字默写英语\n");
  int num,p=0;
  scanf("%d",&num);
  if(num==1)
  {
  printf("请输入背单词的数量"); 
  scanf("%d",&n);
  for(int i=0;i<n;i++)
  {
    sjs[i]=rand()%count+1;
  }
  int c=0;
  int zw=0;
  for(int i1=0;i1<n;i1++)
  {
    printf("%s\n",dcb_[sjs[i1]].zw);
    scanf("%s",zwsr);
    if(strcmp(zwsr,dcb_[sjs[i1]].yw)!=0)
    {  
      printf("背诵错误,已计入错题本!\n");   
      fp=fopen("D:\\仿真单词本\\dancibencw.txt","a+");
      if(!fp)
      {
        printf("打开失败");
        exit(1); 
      }
  else 
    {
    fprintf(fp,"%d %s %s\n",count1+1,dcb_[sjs[i1]].yw,dcb_[sjs[i1]].zw);
    count1++;
  }
  fclose(fp);
  }
    else
    {
      printf("回答正确"); 
    }
  }
  }
  if(num==2)
  {
  printf("请输入背单词的数量"); 
  scanf("%d",&n);
  for(int i=0;i<n;i++)
  {
    sjs[i]=rand()%count+1;
  }
  for(int i1=0;i1<n;i1++)
  {
    printf("%s\n",dcb_[sjs[i1]].yw);
    scanf("%s",zwsr);
    if(strcmp(zwsr,dcb_[sjs[i1]].zw)!=0)
    {
      printf("背诵错误,已计入错题本!\n");
      ctb_[w].c=dcb_[sjs[i1]].j;
      fp=fopen("D:\\仿真单词本\\dancibencw.txt","a+");
      if(!fp)
      {
        printf("打开失败");
        exit(1); 
      }
      else 
        {
        fprintf(fp,"%d %s %s\n",count1+1,dcb_[sjs[i1]].yw,dcb_[sjs[i1]].zw);
        count1++; 
       }
    }
    else
    {
      printf("回答正确"); 
    }
  } 
  }
}
void lookcw()
{
    typedef struct ct
  {
    int c;
    char Cyw[20];
    char Czw[20];
  }ctb;
  ctb ctb_[1000];
  int i=0;
  FILE*fp;
  fp=fopen("D:\\仿真单词本\\dancibencw.txt","r");
  if(!fp)
  {
    printf("打开失败!!!"); 
    exit(1); 
  };
  fscanf(fp,"%d%s%s",&ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
  while(!feof(fp))
  {
    i++;
    fscanf(fp,"%d %s %s",&ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
  }
  fclose(fp);
  ctb_[i].c=0;
  i=0;
  printf("错题如下\n");
  while(ctb_[i].c!=0)
  {
    printf("%d %s %s\n",ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
    i++;
  }
}
void search()
{   int i=0;
  typedef struct stu
  { int j;
    char yw[20];
    char zw[20];
  }dcb;
  dcb dcb_[1000];
  FILE *fp;
  fp=fopen("D:\\仿真单词本\\dancibenqb.txt","r");
  if(!fp)
  {
    printf("打开失败!");
    exit(1);
  };
  fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
  while(!feof(fp))
  {
    i++;
    fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
  }
  int count=i;
  int se;
  int m=0; 
  char srdc[20];
  printf("请选择:\n1 查英文\n2 查汉语\n") ;
  scanf("%d",&se);
  if(se==1)
  {
  printf("请输入要查询的中文:"); 
  scanf("%s",srdc);
    while(strcmp(dcb_[m].zw,srdc)!=0&&m<count)
    m++;
    if(m<count)
    printf("\n 该单词中文意思为:%s",dcb_[m].yw);
    else
    printf("抱歉,未找到该单词");
  }
  if(se==2)
  {
  printf("请输入要查询的英文:");
  scanf("%s",srdc);
    while(strcmp(dcb_[m].yw,srdc)!=0&&m<count)
    m++;
    if(m<count)
    printf("\n 该单词意思为:%s",dcb_[m].zw);
    else
    printf("抱歉,未找到该单词");
  }
}
void movecc()
{ 
  char del[100];
  typedef struct ct
  {
    int c;
    char Cyw[20];
    char Czw[20];
  }ctb;
  ctb ctb_[1000];
  int i=0,num;
  int se=0;
  FILE*fp,*fp1;
  fp=fopen("D:\\仿真单词本\\dancibencw.txt","r+");
  fp1=fopen("D:\\仿真单词本\\dancibencw1.txt","w+");
  if(!fp)
  {
    printf("打开失败!!!"); 
    exit(1); 
  };
  if(!fp1)
  {
    printf("打开失败!!!"); 
    exit(1); 
  };
  fscanf(fp,"%d%s%s",&ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
  while(!feof(fp))
  {
    i++;
    fscanf(fp,"%d%s%s",&ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
  }
  fclose(fp);
  int count=i;
  printf("请输入要删除的单词");
  scanf("%s",del);
  for(i=0;i<count+1;i++)
  {
    if(!strcmp(del,ctb_[i].Czw))
    {
      printf("删除成功");
      se=i;
      num=1; 
      break;
    }
    if(!strcmp(del,ctb_[i].Cyw))
    {
    printf("删除成功");
    se=i;
    num=1;
    break;
    } 
    if(num==1)
    { 
    printf("删除失败");
    return ;
    } 
  }
  ctb_[count].c=0 ;
  strcpy(ctb_[count+1].Czw,"###");
  strcpy(ctb_[count+1].Cyw,"###");
  for(i=se;i<count;i++)
  {
    ctb_[i]=ctb_[i+1];
  }
  int m=0; 
  printf("输出当前错词表\n"); 
  while(ctb_[m].c!=0)
  {
    fprintf(fp1,"%d %s %s\n",m+1,ctb_[m].Cyw,ctb_[m].Czw);
    printf("%d %s %s\n",m+1,ctb_[m].Cyw,ctb_[m].Czw);
    m++;
  };
  if(remove("D:\\仿真单词本\\dancibencw.txt")!=0)
  printf("删除失败!!!"); 
  fclose(fp1);
  rename("D:\\仿真单词本\\dancibencw1.txt","D:\\仿真单词本\\dancibencw.txt");
}
void beidancicw()
{
  typedef struct ct
  {
    int c;
    char Cyw[20];
    char Czw[20];
  }ctb;
  ctb ctb_[1000];
  FILE *fp;
  int sjs[50]={0};
  char sr[20];
  int q=0,n; 
  fp=fopen("D:\\仿真单词本\\dancibencw.txt","r");  
  fscanf(fp,"%d%s%s",&ctb_[q].c,ctb_[q].Cyw,ctb_[q].Czw);
  while(!feof(fp))
  {
    q++;
    fscanf(fp,"%d%s%s",&ctb_[q].c,ctb_[q].Cyw,ctb_[q].Czw);
  }
  int count1=q;
  fclose(fp);
  printf("请输入背单词的数量"); 
  scanf("%d",&n);
  srand(time(NULL));
  for(int i=0;i<n;i++)
  {
    sjs[i]=rand()%count1+1;
  }
    for(int i1=0;i1<n;i1++)
  {
    printf("%s\n",ctb_[sjs[i1]].Czw);
    scanf("%s",sr);
    if(strcmp(sr,ctb_[sjs[i1]].Cyw)!=0)
    {  
      printf("背诵错误\n"); 
  }   
    else
    {
      printf("回答正确\n"); 
    }
  }
}
void menu()
{
    printf(" \n\n                    ");
  printf("                         仿真单词本                \n");
  printf("\t*************************************************************************************************\n");
  printf("  请输入您要选择的内容:\n");
  printf("                                       0:退出程序     \n ");
  printf("                                      1:查找模式     \n ");
  printf("                                      2:全文背诵模式     \n ");
  printf("                                      3:错词背诵模式     \n ");
  printf("                                      4:查看全部单词     \n ");
  printf("                                      5:查看全部错词         \n ");
  printf("                                      6: 移除一个错词             \n");
  printf("\n");
  printf("\t**********************************************************************************************\n");
    int num;
  scanf("%d",&num);
  switch(num)
  {
    case 0:k=0;break;
    case 1:search();break;
    case 2:beidanci();break; 
    case 3:beidancicw();break;
    case 4:words();break;
    case 5:lookcw();break;
    case 6:movecc();break;
    default:
    printf("请在0--8之间选择");
  }
}


目录
相关文章
|
1月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
3月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
99 1
|
3月前
|
NoSQL 编译器 程序员
【C语言】揭秘GCC:从平凡到卓越的编译艺术,一场代码与效率的激情碰撞,探索那些不为人知的秘密武器,让你的程序瞬间提速百倍!
【8月更文挑战第20天】GCC,GNU Compiler Collection,是GNU项目中的开源编译器集合,支持C、C++等多种语言。作为C语言程序员的重要工具,GCC具备跨平台性、高度可配置性及丰富的优化选项等特点。通过简单示例,如编译“Hello, GCC!”程序 (`gcc -o hello hello.c`),展示了GCC的基础用法及不同优化级别(`-O0`, `-O1`, `-O3`)对性能的影响。GCC还支持生成调试信息(`-g`),便于使用GDB等工具进行调试。尽管有如Microsoft Visual C++、Clang等竞品,GCC仍因其灵活性和强大的功能被广泛采用。
121 1
|
3月前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
140 0
|
6月前
|
存储 C语言
简单c语言程序举例
简单c语言程序举例
73 1
|
30天前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
2月前
|
存储 编译器 程序员
C语言程序的基本结构
C语言程序的基本结构包括:1)预处理指令,如 `#include` 和 `#define`;2)主函数 `main()`,程序从这里开始执行;3)函数声明与定义,执行特定任务的代码块;4)变量声明与初始化,用于存储数据;5)语句和表达式,构成程序基本执行单位;6)注释,解释代码功能。示例代码展示了这些组成部分的应用。
88 10
|
3月前
|
自然语言处理 编译器 C语言
C语言程序的编译
C语言程序的编译
64 2
|
4月前
|
前端开发 C语言 C++
C语言03----第一个程序HelloWorld(vs版)
C语言03----第一个程序HelloWorld(vs版)
|
5月前
|
C语言 图形学 C++