写一个简单的背单词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之间选择");
        
    }
}


目录
相关文章
|
14小时前
|
存储 自然语言处理 编译器
『C语言进阶』程序环境和预处理
『C语言进阶』程序环境和预处理
|
9天前
|
Unix 编译器 C语言
Hello World!—— 属于我们的第一个C语言程序
C语言最早是由贝尔实验室的Dennis Ritchie为了UNIX的辅助开发而编写的,它是在B语言的基础上开发出来的。尽管C语言不是专门针对UNIX操作系统或机器编写的,但它与UNIX系统的关系十分紧密。由于它的硬件无关性和可移植性,使C语言逐渐成为世界上使用最广泛计算机语言。 为了进一步规范C语言的硬件无关性,1987年,美国国家标准协会(ANSI)根据C语言问世以来各种版本对C语言的发展和扩充,制定了新的标准,称为ANSI C。ANSI C语言比原来的标准C语言有了很大的发展。目前流行的C语言编译系统都是以它为基础的。
24 0
Hello World!—— 属于我们的第一个C语言程序
|
25天前
|
Linux 编译器 C语言
C语言进阶-程序环境和预处理(2)
C语言进阶-程序环境和预处理
34 1
|
25天前
|
存储 自然语言处理 编译器
C语言进阶-程序环境和预处理(1)
C语言进阶-程序环境和预处理
31 0
|
27天前
|
编译器 Linux C语言
【C语言航路】第十五站:程序环境和预处理(下)
【C语言航路】第十五站:程序环境和预处理(上)
28 0
|
27天前
|
存储 自然语言处理 编译器
【C语言航路】第十五站:程序环境和预处理(上)
【C语言航路】第十五站:程序环境和预处理
24 0
|
27天前
|
编译器 测试技术 C语言
【C语言航路外传】隐式转换与优先级的那点事(你程序总是出bug的一个重要原因)
【C语言航路外传】隐式转换与优先级的那点事(你程序总是出bug的一个重要原因)
29 0
|
28天前
|
存储 自然语言处理 程序员
C语言 程序环境 编译和链接
C语言 程序环境 编译和链接
|
1月前
|
存储 程序员 编译器
C语言程序环境和预处理
C语言程序环境和预处理
13 0
|
1月前
|
Java 编译器 Linux
第一个C语言程序(认识C语言的第一步)
第一个C语言程序(认识C语言的第一步)
20 0
相关产品
云迁移中心
推荐文章
更多