c语言常用英语单词大全下载,C语言实现英文单词助手

英文单词小助手的实现步骤,供大家参考,具体内容如下

题目需求分析:

英文单词小助手是帮助学生背诵单词的软件,用户可以选择背诵的词库,并可以编辑自己的词库,还应有词语预览学习功能。系统可以给出中文,让学生输入其英文词意,也可输入英文让学生输入其中文词意,并判定词意是否正确。如不正确则给出提示并要求用户重新输入,如正确则加分。

根据题目需求,系统的基本功能如下。

(1) 词库维护:基于文件进行管理,可以增加、删除和修改单词的中英文词意。每条记录应包括英文词意、中文词意。

(2) 单词预览:系统随机显示一条记录,在屏幕上显示中英文词义。

(3) 中英单词背诵:随机显示中文词汇,用户需输入正确地英文词意才可得分。如输入错误则会提示用户继续输入,直至输入正确。

(4) 英中单词背诵:随机显示英文词汇,用户需输入正确的中文词意才可得分。如输入错误则会提示用户继续输入,直至输入正确。

(5) 成绩查询:显示中英、英中背诵学习的成绩统计。

(6) 帮助:通过帮助了解系统的功能与使用方式。

(7) 退出:退出系统。

具体实现:

/**

* @file chapter.cpp

* @brief 英语单词小助手

* @version 1.0

* @author Jack

* @date 2018年9月6日

*/

#include

#include

#include

#define MAX_CHAR 20 // 最大字符

#define MAX_NUM 200 // 单词的最大个数

/**

* @Description 单词的结构体

*/

struct word

{

char en[MAX_CHAR]; // 英文形式

char ch[MAX_CHAR]; // 中文形式

} s[MAX_NUM]; // 单词数组

int num; // 单词个数

int select = 1;// select为是否退出系统的标记

int d = 0, c = 0;

/**

* @Description 帮助

*/

void help()

{

printf("\n本系统主要实现英语单词学习的功能。用户可对词典文件中的单词进行预览,增删改查。");

printf("\n同时还可进行中英、英中测试。本系统还提供了测试成绩的显示功能。");

}

/**

* @Description 从文件中读取单词的信息

*/

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++;

}

num = i;

if(0 == i)

printf("\n文件为空,请选择词典维护增加词条!");

else

printf("\n");

fclose(fp);

}

/**

* @Description 向文件中写入单词的信息

*/

void writefile()

{

FILE *fp;

int i = 0;

fp=fopen("data.txt", "w");

if(!fp)

{

printf("\n打开文件data.txt失败!");

}

for(i=0;i

{

fprintf(fp, "\n%s %s ", s[i].en,s[i].ch);

}

printf("\n");

fclose(fp);

}

/**

* @Description 按字典排序

*/

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);

}

}

}

/**

* @Description 添加单词信息

*/

void add()

{

int i=num,j,flag=1;

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();

}

/**

* @Description 删除单词信息

*/

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没有这个单词!");

}

/**

* @Description 修改单词信息

*/

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", 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没有这个单词!");

}

/**

* @Description 单词预览

*/

void show()

{

int i = 0;

printf("\n单词: 英文 中文 ");

for(i = 0;i < num;i++)

printf("\n %-12s%-12s", s[i].en, s[i].ch);

}

/**

* @Description 查询单词

*/

void search()

{

int i = 0, choose = 0, flag = 1,status = 0;

printf("请输入查询方式(1.按中文查询 2.按英文查询):");

scanf("%d", &status);

if(status == 1){

char ch[MAX_CHAR];// 中文形式

while(choose || flag)

{

printf("\n请输入你要查询的单词中文形式:");

scanf("%s", ch);

for(i = 0;i < num;i++)// 先找到该中文形式对应的序号

{

while(strcmp(s[i].ch, ch) == 0)

{

printf("\n英文形式 中文形式 ");

printf("\n %-12s%12s", s[i].en, s[i].ch);

i++;

}

}

printf("\n继续查询请选1,返回上一级请选0:");

scanf("%d", &choose);

if(choose == 0)

return;

flag = 0;

}

if(!flag){

printf("\n没有这个单词!");

}

}else{

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继续查询请选1,返回上一级请选0:");

scanf("%d", &choose);

if(choose == 0)

return;

}

flag = 0;

}

if(!flag){

printf("\n没有这个单词!");

}

}

}

/**

* @Description 中英单词背诵

*/

void zytest()

{

char b1[20];

int z;

int choose = 1;

int i;

int t;

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输入错误!!请重新输入:");

scanf("%s", b1);

c = c + 1;

t = 0;

}

printf("\n恭喜你,回答正确,加10分!\n\n");

d = d + 1;

if(t == 0){

printf("刚刚记错的单词是:%s,请再记一次!", s[i].en);

}

printf("\n继续测试请选1,返回上一级请选0:");

t = 1;

scanf("%d", &choose);

if(choose == 0)

return;

}

}

/**

* @Description 英中单词背诵

*/

void yztest()

{

char b1[20];

int z,x = 41;

int choose = 1;

int i;

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("输入错误!!请重新输入:");

scanf("%s", b1);

c = c + 1;

}

printf("\n恭喜你,回答正确,加10分!\n\n");

d = d + 1;

printf("\n继续测试请选1,返回上一级请选0:");

scanf("%d", &choose);

if(choose == 0)

return;

}

}

/**

* @Description 成绩列表

*/

void list()

{

printf("\n 共计输入错误:%d次 **每次扣10分**\n", c);

printf(" 共计输入正确:%d次 **每次加10分**\n", d);

printf(" 你的总得分为:%d分\n\n", 10 * d - 10 * c);

}

/**

* @Description 词典维护

*/

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)

{

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之间选择");

}

}

}

/**

* @Description 用户界面

*/

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(" # 0.词库维护 1.单词预览 #\n");

printf(" # #\n");

printf(" # 2.单词背诵(中英) 3.单词背诵(英中) #\n");

printf(" # #\n");

printf(" # 4.查询成绩 5.帮助 #\n");

printf(" # #\n");

printf(" # 6.退出系统 #\n");

printf(" # #\n");

printf(" *********************************************************\n");

printf("\n");

printf(" 请选择您需要的操作序号(0-5)按回车确认:");

scanf("%d", &item);

printf("\n");

readfile();

switch(item)

{

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:

select = 0;

break;

default:

printf("请在0-6之间选择\n");

}

}

int main()

{

while(select)

{

menu();

}

system("pause");

return 0;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过Jedis API使用排序集

在上一篇文章中&#xff0c;我们开始研究Jedis API和Java Redis Client。 在本文中&#xff0c;我们将研究Sorted Set&#xff08;zsets&#xff09;。 排序集的工作方式类似于集&#xff0c;因为它不允许重复的值。 最大的区别在于&#xff0c;在“排序集”中&#xff0c;每个…

编程历史

编程历史&#xff1a; 编程语言的历史早于真正意义的计算机的出现。19世纪就有"可编程的"织布机和钢琴弹奏装置出现&#xff0c;它们都是领域特定语言(DSL)的样例。 从1951年2014年&#xff0c;人类一共发明了256种编程语言&#xff0c;每一种语言的出现都带有某些新…

python删除字符串中指定字符

最近开始学机器学习,学习分析垃圾邮件,其中有一部分是要求去除一段字符中的标点符号,查了一下,网上的大多很复杂例如这样 import re temp "想做/ 兼_职/学生_/ 的 、加,我Q&#xff1a; 1 5. 8 0. &#xff01;&#xff01;&#xff1f;&#xff1f; 8 6 。0. 2。 …

vue结合ueditor富文本编辑器(换肤分离)

需求 (PC端)做一个可以使用图片上传、视频上传、文件上传功能的富文本组件&#xff0c;简单的文本编辑发布功能,采用socket方式传输&#xff0c; 做法 当时看到这个需求&#xff0c;我觉得是不难的,就去github上找富文本编辑器&#xff0c;因为项目比较急&#xff0c;当时我…

linux中samba启动不了,Linux_RHEL5中不用关闭SELinux而成功启动Samba,RHEL5中的samba服务器启动后,能 - phpStudy...

RHEL5中不用关闭SELinux而成功启动SambaRHEL5中的samba服务器启动后&#xff0c;能看到共享目录&#xff0c;但是不能访问共享目录&#xff0c;告知权限不够。此时可以通过如下命令&#xff1a;tail /var/log/message看到如此提示&#xff1a;/home/lyy does not exist or perm…

使用MyBatis框架时发现的一些小bug

在大配置MyBatis.xml中&#xff1a; 不能有空节点属性 &#xff0c;否则启动服务器后点击登录没有反应。 异常问题&#xff1a; ause: java.sql.SQLException: Value 0000-00-00 00:00:00 can not be represented as java.sql.Timestamp&#xff1a; 解决办法&#xff1a; HTT…

JSF Tomcat配置示例

JavaServer Faces (JSF)是一个Web应用程序框架&#xff0c;旨在简化基于Web的用户界面的开发集成。 它用于开发和构建服务器端用户界面组件&#xff0c;并在Web应用程序中使用它们。 JSF技术基于Model-View-Controller (MVC)架构&#xff0c;并且通过在页面中使用可重用的UI组件…

野指针与内存泄漏那些事

野指针&#xff1a;不是NULL指针&#xff0c;是指向垃圾内存的指针 野指针成因&#xff1a; 1.指针变量没有被初始化&#xff1a;指针变量在创建时同时应当被初始化&#xff0c;要么将指针设置为NULL&#xff0c;要么让它指向合法的内存。 2.指针p被free或者delete,没有被设置为…

c语言入门经典案例,c语言入门经典案例及飞源代码.doc

c语言入门经典案例及飞源代码循环控制输出图案【程序1】题目&#xff1a;输出9*9口诀。1.程序分析&#xff1a;分行与列考虑&#xff0c;共9行9列&#xff0c;i控制行&#xff0c;j控制列。2.程序源代码&#xff1a;#include "stdio.h"main(){ int i,j,result; pri…

JS加密算法简单分析

这次分析百度音乐的评论请求的加密&#xff0c;首先先看包 看到有两个地方1. param&#xff0c;2. sign&#xff0c;基本可以断定sign是用的MD5加密的 那么我们从html页面分析入手&#xff0c;恰巧看到html代码中有写到这么一段 右键点击open in Source panel 熟悉的配方&…

RF新手常见问题总结--(基础篇)

RF新手常见问题总结--(基础篇) 学RF快一年了&#xff0c;经常碰到一些问题&#xff0c;有些同学也经常问到&#xff0c;这里总结一些&#xff0c;期望有人后续再补充&#xff0c;主要是响应群里--雪霁大神的号召&#xff0c;技术共享。废话少说&#xff0c;直接上干货了。1. 经…

Java自动拆箱陷阱。 谨防!

您认为以下代码段会显示什么&#xff1f; Object o true ? new Integer(1) : new Double(2.0); System.out.println(o);是! 它将打印&#xff1a; 1.0什么&#xff1f; 1.0&#xff1f; 但是我已经为我的o变量分配了一个Integer 。 为什么打印1.0&#xff1f; 事实证明&…

golang学习笔记(6)--面向接口编程

一、 duck typing duck typing意思是鸭子类型&#xff0c;我们把具备鸭子的行为等部分特征的一个东西叫做鸭子&#xff0c;这是鸭子类型的解释。其实&#xff0c;在go语言中是采用鸭子类型这种思想来实现接口这种编程方式的&#xff0c;我们把一个类只要实现了某接口的方法&…

c语言self用法,C/C++知识点之Self Numbers C语言 UVA640

本文主要向大家介绍了C/C知识点之Self Numbers C语言 UVA640&#xff0c;通过具体的内容向大家展示&#xff0c;希望对大家学习C/C知识点有所帮助。In 1949 the Indian mathematician D.R. Kaprekar discovered a class ofnumbers called self-numbers. For any positive integ…

JS 的平凡之路--学习人气眼中的效果(上)

最近看了看人气眼的界面&#xff0c;感觉到学习的地方有很多呀。这里先带大家看看人气值跳动的实现。本篇代码基于Vue2.x.x。 一、概要 首先看一下效果图&#xff1a; 要想实现上面的效果&#xff0c;我们分为这几个部分&#xff1a; 判断元素是否在可视区域内&#xff1b;函数…

[Swift]LeetCode86. 分隔链表 | Partition List

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

XmlNode与XmlElement的区别总结

原文链接&#xff1a;http://www.cnblogs.com/oilsun/archive/2012/07/07/2580427.html 今 天在做ASP.NET操作XML文档的过程中&#xff0c;发现了两个类&#xff1a;XmlNode和XmlElement。这两个类的功能极其类似&#xff08;因为我们一般都是在对 Element节点进行操作&#xf…

HOW TO:构造Java类

在这篇HowTo帖子中&#xff0c;我将展示如何将一个类与另一个类一起定型。 为什么这有用&#xff1f; 当您的项目中发生大量BCI时&#xff0c;让每个开发人员编写BCI代码都是不明智的。 首先&#xff0c;这不会抽象出所使用的BCI库。 鉴于Java不支持多重继承&#xff0c;构造型…

android horizontalscrollview 动画,Android HorizontalScrollView左右滑动效果

本文实例为大家分享了Android HorizontalScrollView左右滑动的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下效果图一.什么是HorizontalScrollViewHorizontalScrollView实际上是一个FrameLayout ,这意味着你只能在它下面放置一个子控件 &#xff0c;这个子控件可以包…

[译] Airbnb 在 React Native 上下的赌注(一):概述

原文地址&#xff1a;React Native at Airbnb原文作者&#xff1a;Gabriel Peal译文出自&#xff1a;掘金翻译计划本文永久链接&#xff1a;https://github.com/xitu/gold-miner/blob/master/TODO1/react-native-at-airbnb.md译者&#xff1a;ALVINYEH校对者&#xff1a;ChenDo…