C语言课程设计--背单词系统的程序代码

合集下载

(完整版)c语言初学必背代码

(完整版)c语言初学必背代码

//1.成绩判断#include <stdio.h>int main(){//成绩int score;printf("请输入你的成绩:\n");scanf("%d", &score);//判断if(score >=0 && score < 60){printf("不及格\n");}else if(60 <= score && score < 80){printf("中等\n");}else if(80 <= score && score < 100){printf("优秀\n");}else{printf("输入错误!\n");}}//2.计算1到100的和#include <stdio.h>int main(){int sum = 0;//存结果变量int i;for(i=1;i <= 100;i++){sum = sum + i;}printf("sum=%d\n", sum);}//3.最大公约数#include <stdio.h>//求m,n的最大公约数int main(){int m, n;int i, k;printf("请输入两个数:");scanf("%d %d", &m, &n);//三元运算符找较小的那个k = m < n ? m : n;//从较小的那个数倒着往前找for(i=k; i>=1; i--){//这是公约数if((m % i == 0) && (n % i ==0)){printf("最大公约数是%d\n", i);break;//跳出for循环}}}//4.最小公倍数#include <stdio.h>//求m,n的最小公倍数int main(){int m, n;int max, min;//m,n中较大,较小的那个int k;//max, 2*max, 3*max, .....printf("请输入两个数:");scanf("%d %d", &m, &n);//也可以交换m,n,保证m小n大max = m > n ? m : n;min = m < n ? m : n;k = max;//从max开始while(k % min != 0){k += max;//每次倍增}printf("最小公倍数是%d\n", k); }//5.金字塔#include <stdio.h>//金字塔int main(){int i;//外层int j;//内层for(i=1;i<=10;i++){//当前是在第i行//先补空格10-i个for(j=1;j<=10-i;j++){printf(" ");}//再打2i-1个*for(j=1;j<=2*i-1;j++){printf("*");}printf("\n");}}//6.九九乘法表#include <stdio.h>//打印九九乘法表int main(){int i,j;for(i=1;i<=9;i++)//外层一定是9行{for(j=1; j<=i; j++)//内层第几行走几遍{printf("%d*%d=%d ", i, j, i*j);}printf("\n");}}//7.百钱买百鸡#include <stdio.h>/**百钱买百鸡,类似1,2,5凑100银币问题*/int main2(){int i,j;//公鸡,母鸡个数for(i=0; i<=20; i++)//公鸡{for(j=0; j<=33; j++)//母鸡{if( (15*i + 9*j + (100-i-j)) == 300){printf("公鸡%d,母鸡%d,小鸡%d\n", i, j, 100-i-j);}}}}//1,2,5凑100银币问题int main3(){int count = 0;//情况数int i,j;//5分个数,2分个数for(i=0; i<=20; i++)//5分个数{for(j=0; j<=50; j++)//2分个数{if( ( 5*i + 2*j ) <= 100 ){count++;printf("%d: 5分%d个,2分%d 个,1分%d个\n", count, i, j, 100-5*i-2*j);}}}}//8.一维数组的最大值、最小值、平均值#include <stdio.h>#define N 10//宏定义常量int main(){int i;//下标索引int max, min;double sum = 0;//累加和int a[N] = {58, 58, 96, 100, 25, 55, 66, 88, 99, 77};max = a[0];//假设第一个最大min = a[0];//假设第一个最小for(i=1; i<N; i++){if(a[i] > max)//比最大值还大max = a[i];//你才是最大if(a[i] < min)//比最小值还小min = a[i];//你才是最小sum += a[i];}printf("max=%d, min=%d\n", max, min);printf("average = %.2lf\n", sum/N);}//9.二维数组的最大值、最小值、平均值#include <stdio.h>int main(){int i; //第几行int j; //第几列int a[3][4] = { {1,2,3,4}, {5,-6,7,8}, {9,19,39,0}};int max = a[0][0];//假设你最大int min = a[0][0];//假设你最小double average;//平均值double sum = 0; //总和for(i=0; i<3; i++)//必定3行{for(j=0; j<4; j++)//必定4列{printf("%5d ", a[i][j]);sum += a[i][j];if(a[i][j] > max)max = a[i][j];if(a[i][j] < min)min = a[i][j];}printf("\n");}average = sum / (3*4);printf("max=%d, min=%d, avg=%.2lf\n", max, min, average);}//10.二维数组转置#include <stdio.h>//二维数组转置:行变列,列变行int main(){int i; //第几行int j; //第几列int a[3][4] = { {1,2,3,4}, {5,-6,7,8}, {9,19,39,0}};int b[4][3];for(i=0; i<3; i++){for(j=0; j<4; j++){printf("%5d", a[i][j]);}printf("\n");}//矩阵转置for(i=0; i<3; i++){for(j=0; j<4; j++){b[j][i] = a[i][j];}}for(i=0; i<4; i++){for(j=0; j<3; j++){printf("%5d", b[i][j]);}printf("\n");}}//11.冒泡排序#include <stdio.h>#define N 10//宏定义常量int main(){int i;//下标索引int j;int tmp;//临时交换用int a[N] = {58, 58, 96, 100, 25, 55, 66, 88, 99, 77};//外层循环一定是N-1for(i=0; i<N-1; i++){//两两交换,大的往后走for(j=0; j<N-i-1; j++){//交换if(a[j] > a[j+1]){tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;}}}for(i=0; i<N; i++){printf("%d ", a[i]);;}printf("\n");}//12.结构冒泡排序#include <stdio.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};int main(){int i;int j;double sum = 0;struct student tmp;//两两交换临时用;//结构数组struct student team[5];for(i=0; i<5; i++){printf("请输入第%d个队员的信息:\n", i+1);scanf("%s %s %d %c %s", team[i].sno, team[i].name, &team[i].age, &team[i].gender, team[i].tel);}//按年龄冒泡排序for(i=0; i<5; i++){for(j=0; j<5-i-1; j++){//两两交换if(team[j].age > team[j+1].age){tmp = team[j];team[j] = team[j+1];team[j+1] = tmp;}}}//取值printf("%-12s %-10s %-5s %-5s %-15s\n", "学号", "姓名", "年龄", "性别", "电话");for(i=0; i<5; i++){printf("%-12s %-10s %-5d %-5c %-15s\n", team[i].sno, team[i].name, team[i].age, team[i].gender, team[i].tel);}}//13.结构数组找年龄最大值#include <stdio.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};int main(){int i;struct student tmp;//找最大临时用//结构数组struct student team[5];for(i=0; i<5; i++){printf("请输入第%d个队员的信息:\n", i+1);scanf("%s %s %d %c %s", team[i].sno, team[i].name, &team[i].age, &team[i].gender, team[i].tel);}//取值printf("%-12s %-10s %-5s %-5s %-15s\n ", "学号", "姓名", "年龄", "性别", "电话");for(i=0; i<5; i++){printf("%-12s %-10s %-5d %-5c %-15s\ n", team[i].sno, team[i].name, team[i].age, team[i].gender, team[i].tel);}//找学号最大的那一个tmp = team[0];for(i=1; i<5; i++){if(strcmp(team[i].sno,tmp.sno) >0 ){tmp = team[i];}}printf("学号最大的队员如下:\n");printf("%-12s %-10s %-5d %-5c %-15s\ n", tmp.sno, , tmp.age, tmp.gender, tmp.tel);}//14.文件读写#include <stdio.h>#include <stdlib.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};//文件读写int main(){struct student * s, * p1;//个数未知FILE * fp;int i, n = 0;char buf[1024];//fgets缓冲区//打开文件fp = fopen("e:\\test.txt", "r");while(fgets(buf, 1024, fp) != NULL)n++;fclose(fp);//指向一个可以存储n个student结构的内存空间s = (struct student *)malloc(sizeof(struct student) * n);p1 = s;//不要动头位置s的值//打开文件fp = fopen("e:\\test.txt", "r");for(i=0; i<n; i++){//从文件中读入一行fscanf(fp, "%s %s %d %c %s", p1->sno, p1->name, &p1->age, &p1->gender, p1->tel);p1++;}fclose(fp);p1 = s;for(i=0; i<3; i++){printf("%s %s %d %c %s\n", p1->sno, p1->name, p1->age, p1->gender, p1->tel);}free(s);}//15.输入三角形三边长计算周长和面积#include<stdio.h>#include<math.h>int main(){double area,perimeter,s,a,b,c;printf("请输入三边长a b c:");scanf("%lf%lf%lf",&a,&b,&c);if((a+b>c) && (a+c>b) && (b+c>a)){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));perimeter=a+b+c;printf("area=%.2f,perimeter=%.2f\ n",area,perimeter);}else{printf("三边长无法构成三角形。

C语言课程设计--背单词系统的程序代码

C语言课程设计--背单词系统的程序代码

目录1 题目描述 (3)2 变量、函数和结构体说明 (4)3 树形结构图 (5)4 用户操作说明 (6)5 代码 (8)6设计体会 (12)1 题目描述该系统是帮助学生背诵单词的软件,有词语预览功能;用户可以编辑自己的词库,即可增加或删除单词;系统可以进行测试,即给出中文,让学生输入其英文,每十个单词一组,测试结束能够显示成绩,即单词的正确个数;能够输入中文或英文进行单词的查询。

基本功能:词库的增加或删除;单词预览;显示中文用户输入英文进行测试;用户输入中文或英文进行单词的查询。

2变量、函数和结构体说明(1)关键变量说明int x 结构体数组中元素的数目 int n 测试时单词的正确个数int a 进行菜单选择int m 进行菜单选择(2)函数定义说明void foresee(); 单词预览及进行测试int intest(); 产生随机单词以进行测试void test2(int n); 测试单词的成绩void testchinese(); 测试单词void translation(); 单词查询void EtoC(); 输入单词,查询意思void CtoE(); 输入中文,查询单词void word_add(); 单词添加void word_delete(); 单词删除(3)结构体说明struct words 单词结构体定义{char eword[20]; 单词char cixing[10]; 词性char chinese[50]; 意思}struct words bank[SIZE] 定义数组结构体,存储单词3 树形结构图4 用户操作说明运行程序后进行选择选择1.单词预览是否要运行测试功能?Y\N输入Y:进行单词测试输入N:返回主菜单选择2.英汉互译1.英译汉2.汉译英3.返回上级菜单选择3.单词添加选择4.单词删除选择5.退出系统5 代码程序如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<time.h>#define SIZE 50 //定义词库单词数量void foresee(); //单词预览及进行测试int intest(); //产生随机单词以进行测试void test2(int n); //测试单词的成绩void testchinese(); //测试单词void translation(); //单词查询void EtoC(); //输入单词,查询意思void CtoE(); //输入中文,查询单词void word_add(); //单词添加void word_delete(); //单词删除struct words{char eword[20];char cixing[10];char chinese[50];}; //单词结构体定义int x;struct words bank[SIZE]={{"aspect","n.","方面,朝向,样子"},{"according","ad.","依照"},{"accustomde","a.","惯常的,习惯的"},{"basis","n.","基础,根据,原则"},{"confidence","n.","信心,信任"},{"dismiss","vt.","不再考虑,解散"},{"economy","n.","经济,节约,节省"},{"fatal","a.","致命的,命运的"},{"global","a.","全球的,总的"},{"helpful","a.","给予帮助的,有用的"},{"impose","vt.","把……加强,征"},{"largely","ad.","大部分,大量的"},{"mystery","n.","神秘,神秘的人或事"},{"nuclear","a.","核子的,核能的"},{"obtain","v.","获得,通用"},{"occasion","n.","场合,时刻"},{"particularly","ad.","尤其,特别"},{"patient","a.","忍耐的,有耐心的"},{"railway","n.","铁路"},{"reaction","n.","反应,反作用"},{"remote","a.","遥远的,偏僻的"},{"selection","n.","选择,挑选"},{"setting","n.","环境,背景"},{"shrink","v.","起皱,收缩"},{"translation","n.","翻译,译文"},{"troublesome","a.","令人烦恼的,麻烦的"},{"undergo","vt.","经历,经受"},{"unlike","prep.","不像"},{"volunteer","n.","志愿者"},{"virtue","n.","善,美德"},{"wideapread","a.","分布广泛的,普通的"},{"withdraw","v.","收回,撤回"},{"absence","n.","缺席,不在"},{"abstract","a.","抽象的,抽象派的"},{"bacteria","n.","细菌"},{"biology","n.","生物学,生态学"},{"characterize","vt.","成为…的特征"},{"debate","n.,vi.","争论,辩论"},{"display","vt.","陈列,展览"}};//词库void test2(int n) //测试单词的成绩{switch(n){case 0:case 1:case 2:case 3:printf("正确个数:%d \n还需努力!",n);getch();break;case 4:case 5:case 6:printf("正确个数:%d \n还不错哈!",n);getch();break;case 7:case 8:case 9:case 10:printf("正确个数:%d \nGreat!好样的!",n);getch();break;default:printf("系统故障!");getch();}}int intest() //产生随机单词以进行测试{srand( (unsigned)time( NULL ) );return (rand() %39+1);}void testchinese() //测试单词{int i,j=0,a;char word[30];for(i=0;i<10;i++){ a=intest();printf("%s\n请输入对应的单词:",bank[a].chinese);scanf("%s",word);if(strcmp(bank[a].eword,word)==0)j++;}test2(j);}void foresee() //单词预览及进行测试{int a;char ch;puts("单词词性意思");for(a=0;a<SIZE;a++)printf("%-16s %-8s %-20s\n",bank[a].eword,bank[a].cixing,bank[a].chinese);printf("是否要运行测试功能?N/Y\n");fflush(stdin);ch=getchar();if(ch=='y'||ch=='Y'){system("cls");testchinese();}}void EtoC() //输入单词,查询意思{char word[20];int i=0;puts("请输入您要查询的单词:");scanf("%s",word);while(strcmp(bank[i].eword,word)!=0&&i<SIZE)i++;if(i<SIZE)printf("\n该单词的中文意思为:%s",bank[i].chinese);else puts("抱歉,没有查到您要找的单词。

词法分析程序的实现代码以及分析

词法分析程序的实现代码以及分析

实验一词法分析程序的实现一、实验目的掌握程序设计语言的词法分析程序的手工实现方法。

二、实验内容构造miniC语言的词法分析程序,程序要求能对输入的字符串流进行词法分析,并输出相应的单词。

miniC语言的单词包括整数、标识符、分隔符、运算符和关键字,编制相应的词法分析程序。

三、实验参考1.根据以下的正规式,画出状态转换图;标识符ID = letter (letter|digit)*letter = a | .. | z | A | .. | Zdigit = 0 | .. | 9十进制整数 0 | (1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*运算符+ - * / < <= == = != > >=分隔符( ) { } [ ];,关键字 if else return int void while main2. 单词的分类可将所有标识符归为一类;将整数归为一类(或者每种进制的整数各为一类);运算符、关键字和分隔符则可采取一词一类。

3. 建立符号表可事先建立一关键字表,以备在识别关键字时进行查询。

变量名表及常数表则在词法分析过程中建立。

4. 程序的输出形式所输出的每一单词,均按形如(TOKEN,VALUE)的二元式编码。

对于变量标识符和常数,TOKEN字段为相应的类别码,VALUE字段则是该标识符、常数在其对应符号表中登记项的序号。

或者采用三元式(TYPE, TOKEN,VALUE),如下表:5.根据状态图,设计词法分析函数int scan( ),完成以下功能:1)从键盘或文件读入源程序数据,逐个分析出单词并输出其二/三元式。

2)建立符号表,打印符号表中的值以供查看分析是否正确。

在编程之前需要从简到复杂,考虑好用到的数据结构:A:先写出各类单词的识别功能,即能对给定的单词识别出是不是标识符,关键字等。

B:之后把所有识别功能连接起来,能识别给出的字符串是哪个,打印提示(按二元式或三元式)C:从文件里读取字符串功能。

初学者必会的c语言必背代码

初学者必会的c语言必背代码

初学者必会的c语言必背代码1、c语言必背100代码,C语言代码大全第一个------乘法表。

用C语言输出9*9成法口诀。

共9行9列,i控制行,j控制列。

2、c语言必背100代码之4×4数组下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序。

3、c语言必背100代码,C语言必背100代码。

古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21…4、c语言必背100代码素数判断101-200之间有多少个素数,并输出所有素数及素数的个数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

5、c语言必背100代码完数相关代码一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3.编程找出1000以内的所有完数。

6、c语言必背100代码三角形打印编程打印直角杨辉三角形7、c语言必背100代码平均分问题通过键盘输入3名学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。

要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。

#include <stdio.h>#include <stdlib.h>main(){ float a[4][5],sum1,sum2;int i,j;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%f",&a[i][j]);for(i=0;i<3;i++){ sum1=0;for(j=0;j<4;j++)sum1+=a[i][j];a[i][4]=sum1/4;}for(j=0;j<5;j++){ sum2=0;for(i=0;i<3;i++)sum2+=a[i][j];a[3][j]=sum2/3;}for(i=0;i<4;i++){ for(j=0;j<5;j++)printf("%6.2f",a[i][j]);printf("\n");}}8、c语言必背100代码反向输出完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。

C语言入门训练代码(10条)

C语言入门训练代码(10条)

C语言入门训练代码(10条)1. 输入n,计算出n的阶乘。

#include <stdio.h>int main(){int n, i;long long ret = 1;printf("请输入一个正整数:");scanf("%d", &n);for (i=1; i<=n; ++i){ret *= i;}printf("%d的阶乘是%lld\n", n, ret);return 0;}2. 编写一个程序,将一个字符串中的字母全部转换为大写字母。

#include <stdio.h>#include <ctype.h>#define MAX_LEN 100int main(){char str[MAX_LEN + 1];int i;printf("请输入一个字符串:");fgets(str, MAX_LEN, stdin);for (i=0; str[i]!='\0'; ++i){str[i] = toupper(str[i]);}printf("转换后的字符串是:%s", str);return 0;}3. 输入两个正整数m和n,求它们的最大公约数和最小公倍数。

#include <stdio.h>int main(){int m, n, i, gcd, lcm;printf("请输入两个正整数m和n:");scanf("%d %d", &m, &n);for (i=1; i<=m && i<=n; ++i){if (m%i==0 && n%i==0){gcd = i;}}lcm = m*n / gcd;printf("%d和%d的最大公约数是%d,最小公倍数是%d\n", m, n, gcd, lcm);return 0;}4. 输入一组数据,计算它们的平均值以及大于平均值的个数。

单词记忆测试器C程序源代码(单片机)

单词记忆测试器C程序源代码(单片机)

单片机单词记忆测试器C程序源代码/************************************************************************ /**单片机单词测试程序/**设计一个以单片机为核心的单词记忆测试器;/** 实现单词的录入(为使程序具有可演示性,单词不少于10个);/**单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,/**也可以直接进入下一个或者上一个;/**单词背完后给出正确率。

/*************************************************************************/ #define uchar unsigned char#define uint unsigned int#include <reg52.h>#include "asc.h" //ASCII字模表#include "12864.h" //12864液晶屏底层驱动程序bit ERROR=1; //输入字符错误标志位bit result=0; //输入结果对错的标志位,为0是正确bit verify=1; //已按了确认键后清零sbit ERR=P2^7;uchar correctNUM; //统计测试正确的单词数,即得分/*****************************************/** 存储要测试的单词,放在ROM中/****************************************/uchar code S[10][5]={ "left ", //左"bird ", //鸟"book ", //书"tree ", //树"water ", //水"go ", //去"come ", //来"rain ", //雨"fly ", //飞"eat ", //吃} ;uchar code SL[10]={4,4,5,3,2,4,4,3,4,3};//存储各测试单词的长度uchar KeyNum[8]; //储存输入的单词/*****************************************/** 存储键盘的字母值,放在ROM中/****************************************/uchar code tab1[6][5]={{'a','b','c','d','e'},{'f','g','h','i','j'},{'k','l','m','n','o'},{'p','q','r','s','t'},{'u','v','w','x','y'},{'z',1,2,3,4}};//最后的1234 键盘值为功能键,1表示确定键,2表示不认识,3表示上一个,4表示下一个/*************************************************** 键盘扫描程序*************************************************/unsigned char kbscan() //键盘扫描{uchar hang,lie,key; //P1连行,P3连列if(P1!=0xFF||P3!=0){switch(P1&0xFF) //P1 扫行{case 0xFE:hang=5;break;//P1.0为第6行case 0xFD:hang=4;break;//P1.1为第5行case 0xFB:hang=3;break;//P1.2为第4行case 0xF7:hang=2;break;//P1.3为第3行case 0xEF:hang=1;break;//P1.4为第2行case 0xDF:hang=0;break;//P1.5为第1行}P1=0; //P1全低电平P3=0xFF;//P3全高电平switch(P3&0xFF){case 0xFE:lie=4;break; //P1.0为第5列case 0xFD:lie=3;break; //P0.5为第4列case 0xFB:lie=2;break; //P0.6为第3列case 0xF7:lie=1;break; //P0.7为第2列case 0xEF:lie=0;break; //P0.7为第1列}P1=0xFF; //P1全高电平P3=0; //P3全低电平while(P1!=0xFF||P3!=0); //按键松开后才返回值key=tab1[hang][lie];}elsekey='_';return (key);}/************************************************************************/** 主函数/**/**/*************************************************************************/void main(void){uchar hz_Num; //用于计当前测试的是第几个词,第一个为0 uchar temp[8]; //用于送液晶屏显示的临时变量uchar iword=0,Nword=0; //输入单词字母下一个计数LCD12864_init(); //LCD12864初始化ClearLCD(); //清屏en_disp(2,1,11,Asc,"INPUT WORD:",1); //在第2行第1列en_disp(4,1,1,Asc,">",1); //在第5行,第2列开始显示en_disp(6,0,8,Asc,"correct:",1); //在第7行,第1列开始显示en_disp(6,80,5,Asc,"00/10",1); //在第7行第81列P1=0xFF; //P1全高电平P3=0; //P3全低电平while(1){KeyNum[iword]=kbscan(); //扫描键盘的输入值,没按下时返回下横线hz_disp(0,48,1,hz1+hz_Num*32,1); //在第1行,第49列开始显示测试的汉字temp[0]=(hz_Num+1)/10+0x30; //将十进制数转换为ASCII字符temp[1]=(hz_Num+1)%10+0x30; //算出测试汉字的序号的第一位和第二位en_disp(0,20,1,Asc,":",1); //在第1行第21列en_disp(0,4,2,Asc,temp,1); //在第1行第5列显示测试序号if(KeyNum[iword]!='_') //键盘有按键按下{if(KeyNum[iword]==1) //如果按下了确定键{if(SL[hz_Num]==iword&&verify) //输入长度等于测试单词的长度,则正确,verify 表示按下了确认后有效一次{correctNUM+=1;if(correctNUM>10){correctNUM=10; //最多10个正确的}verify=0; //标志位清零hz_Num++; //测试下一个单词if(hz_Num==10) hz_Num=0; //最多设10个单词temp[0]=(correctNUM)/10+0x30; //将十进制数转换为ASCII字符temp[1]=(correctNUM)%10+0x30; //算出测试汉字的序号的第一位和第二位en_disp(6,80,2,Asc,temp,1); //在第7行第81列iword=0;Nword=0;en_disp(4,16,8,Asc," ",1); //在第5行,第17列开始显示}}else if(KeyNum[iword]==2||KeyNum[iword]==4)//如果按下了“不认识”或“下一个”键,直接跳到下一个单词{result=0; //跳下一个时错误灯灭ERROR=0;hz_Num++; //测试下一个单词if(hz_Num==10) hz_Num=0; //最多设10个单词iword=0;Nword=0;en_disp(4,16,8,Asc," ",1); //在第5行,第17列开始显示}else if(KeyNum[iword]==3) //如果按下了“上一个”键,直接跳到上一个单词{result=0; //跳下一个时错误灯灭ERROR=0;//测试下一个单词if(hz_Num==0) hz_Num=10; //最多设10个单词hz_Num--;iword=0;Nword=0;en_disp(4,16,8,Asc," ",1); //在第4行,第16列开始显示}else if(S[hz_Num][iword]==KeyNum[iword]) //输入的字符与测试的标准字符比较{ temp[0]=KeyNum[iword];ERROR=0; //正确就标志位置0en_disp(4,Nword+16,1,Asc,temp,1); //在第5行,第17列开始显示iword++;if(iword==8) iword=0;Nword=iword*8;verify=1;}else{ temp[0]=KeyNum[iword];ERROR=1; //错误就置1en_disp(4,Nword+16,1,Asc,temp,1); //在第5行,第17列开始显示iword++;if(iword==8) iword=0;Nword=iword*8;}result=ERROR|result; //0表示结果正确}ERR=!result; //错误指示灯}}/***********************************************************/* ASCII字模的数据表/* 码表从0x20~0x7e 即ASCII的32-127/* 纵向取模下高位8x16/*********************************************************/ unsigned char code Asc[] = // ASCII 表{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xFC,0xFC,0x38,0x00,0x00, // -!-0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00,0x00,0x0E,0x1E,0x00,0x00,0x1E,0x0E,0x00, // -"-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xF8,0xF8,0x20,0xF8,0xF8,0x20,0x00, // -#-0x02,0x0F,0x0F,0x02,0x0F,0x0F,0x02,0x00,0x38,0x7C,0x44,0x47,0x47,0xCC,0x98,0x00, // -$-0x03,0x06,0x04,0x1C,0x1C,0x07,0x03,0x00,0x30,0x30,0x00,0x80,0xC0,0x60,0x30,0x00, // -%-0x0C,0x06,0x03,0x01,0x00,0x0C,0x0C,0x00,0x80,0xD8,0x7C,0xE4,0xBC,0xD8,0x40,0x00, // -&-0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,0x00, // -'-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF8,0x0C,0x04,0x00,0x00, // -(-0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00,0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00, // -)-0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00,0x80,0xA0,0xE0,0xC0,0xC0,0xE0,0xA0,0x80, // -*-0x00,0x02,0x03,0x01,0x01,0x03,0x02,0x00,0x00,0x80,0x80,0xE0,0xE0,0x80,0x80,0x00, // -+-0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -,-0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, // ---0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -.-0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x00, // -/-0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00, // -0- 0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00,0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00, // -1- 0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00, // -2- 0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00, // -3- 0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00, // -4- 0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x7C,0x7C,0x44,0x44,0xC4,0xC4,0x84,0x00, // -5- 0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,0xF0,0xF8,0x4C,0x44,0x44,0xC0,0x80,0x00, // -6- 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,0x0C,0x0C,0x04,0x84,0xC4,0x7C,0x3C,0x00, // -7- 0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0xB8,0xFC,0x44,0x44,0x44,0xFC,0xB8,0x00, // -8- 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,0x38,0x7C,0x44,0x44,0x44,0xFC,0xF8,0x00, // -9- 0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, // -:-0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, // -;-0x00,0x00,0x08,0x0E,0x06,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x18,0x08,0x00, // -<- 0x00,0x00,0x01,0x03,0x06,0x0C,0x08,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, // -=- 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x08,0x18,0x30,0x60,0xC0,0x80,0x00, // ->- 0x00,0x08,0x0C,0x06,0x03,0x01,0x00,0x00,0x18,0x1C,0x04,0xC4,0xE4,0x3C,0x18,0x00, // -?- 0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00,0xF0,0xF8,0x08,0xC8,0xC8,0xF8,0xF0,0x00, // -@- 0x07,0x0F,0x08,0x0B,0x0B,0x0B,0x01,0x00,0xE0,0xF0,0x98,0x8C,0x98,0xF0,0xE0,0x00, // -A- 0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00, // -B- 0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00,0xF0,0xF8,0x0C,0x04,0x04,0x0C,0x18,0x00, // -C- 0x03,0x07,0x0C,0x08,0x08,0x0C,0x06,0x00,0x04,0xFC,0xFC,0x04,0x0C,0xF8,0xF0,0x00, // -D- 0x08,0x0F,0x0F,0x08,0x0C,0x07,0x03,0x00,0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00, // -E- 0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00,0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00, // -F- 0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0xF0,0xF8,0x0C,0x84,0x84,0x8C,0x98,0x00, // -G- 0x03,0x07,0x0C,0x08,0x08,0x07,0x0F,0x00,0xFC,0xFC,0x40,0x40,0x40,0xFC,0xFC,0x00, // -H- 0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00, // -I- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x00, // -J- 0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,0x00,0x04,0xFC,0xFC,0xC0,0xF0,0x3C,0x0C,0x00, // -K- 0x08,0x0F,0x0F,0x00,0x01,0x0F,0x0E,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00, // -L- 0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00,0xFC,0xFC,0x38,0x70,0x38,0xFC,0xFC,0x00, // -M- 0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0xFC,0xFC,0x38,0x70,0xE0,0xFC,0xFC,0x00, // -N- 0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0xF0,0xF8,0x0C,0x04,0x0C,0xF8,0xF0,0x00, // -O- 0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00,0x04,0xFC,0xFC,0x44,0x44,0x7C,0x38,0x00, // -P- 0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0xF8,0xFC,0x04,0x04,0x04,0xFC,0xF8,0x00, // -Q- 0x07,0x0F,0x08,0x0E,0x3C,0x3F,0x27,0x00,0x04,0xFC,0xFC,0x44,0xC4,0xFC,0x38,0x00, // -R- 0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,0x18,0x3C,0x64,0x44,0xC4,0x9C,0x18,0x00, // -S-0x06,0x0E,0x08,0x08,0x08,0x0F,0x07,0x00,0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00, // -T- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00, // -U- 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00, // -V- 0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00,0xFC,0xFC,0x00,0x80,0x00,0xFC,0xFC,0x00, // -W- 0x03,0x0F,0x0E,0x03,0x0E,0x0F,0x03,0x00,0x0C,0x3C,0xF0,0xC0,0xF0,0x3C,0x0C,0x00, // -X- 0x0C,0x0F,0x03,0x00,0x03,0x0F,0x0C,0x00,0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00, // -Y- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x1C,0x0C,0x84,0xC4,0x64,0x3C,0x1C,0x00, // -Z- 0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0E,0x00,0x00,0x00,0xFC,0xFC,0x04,0x04,0x00,0x00, // -[- 0x00,0x00,0x0F,0x0F,0x08,0x08,0x00,0x00,0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00, // -\-0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x00,0x00,0x00,0x04,0x04,0xFC,0xFC,0x00,0x00, // -]- 0x00,0x00,0x08,0x08,0x0F,0x0F,0x00,0x00,0x08,0x0C,0x06,0x03,0x06,0x0C,0x08,0x00, // -^- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -_-0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x03,0x07,0x04,0x00,0x00,0x00, // -`-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x00, // -a- 0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0x04,0xFC,0xFC,0x20,0x60,0xC0,0x80,0x00, // -b- 0x08,0x0F,0x07,0x08,0x08,0x0F,0x07,0x00,0xC0,0xE0,0x20,0x20,0x20,0x60,0x40,0x00, // -c- 0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00,0x80,0xC0,0x60,0x24,0xFC,0xFC,0x00,0x00, // -d- 0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0xC0,0xE0,0xA0,0xA0,0xA0,0xE0,0xC0,0x00, // -e- 0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00,0x40,0xF8,0xFC,0x44,0x0C,0x18,0x00,0x00, // -f- 0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00, // -g- 0x27,0x6F,0x48,0x48,0x7F,0x3F,0x00,0x00,0x04,0xFC,0xFC,0x40,0x20,0xE0,0xC0,0x00, // -h- 0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x20,0xEC,0xEC,0x00,0x00,0x00, // -i- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xEC,0xEC,0x00, // -j- 0x00,0x30,0x70,0x40,0x40,0x7F,0x3F,0x00,0x04,0xFC,0xFC,0x80,0xC0,0x60,0x20,0x00, // -k- 0x08,0x0F,0x0F,0x01,0x03,0x0E,0x0C,0x00,0x00,0x00,0x04,0xFC,0xFC,0x00,0x00,0x00, // -l- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0xE0,0xE0,0x60,0xC0,0x60,0xE0,0xC0,0x00, // -m- 0x0F,0x0F,0x00,0x0F,0x00,0x0F,0x0F,0x00,0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00, // -n- 0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,0xC0,0xE0,0x20,0x20,0x20,0xE0,0xC0,0x00, // -o- 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00, // -p- 0x40,0x7F,0x7F,0x48,0x08,0x0F,0x07,0x00,0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00, // -q- 0x07,0x0F,0x08,0x48,0x7F,0x7F,0x40,0x00,0x20,0xE0,0xC0,0x60,0x20,0x60,0xC0,0x00, // -r- 0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x40,0xE0,0xA0,0x20,0x20,0x60,0x40,0x00, // -s- 0x04,0x0C,0x09,0x09,0x0B,0x0E,0x04,0x00,0x20,0x20,0xF8,0xFC,0x20,0x20,0x00,0x00, // -t-0x00,0x00,0x07,0x0F,0x08,0x0C,0x04,0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00, // -u- 0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00, // -v- 0x00,0x03,0x07,0x0C,0x0C,0x07,0x03,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00, // -w-0x07,0x0F,0x0C,0x07,0x0C,0x0F,0x07,0x00,0x20,0x60,0xC0,0x80,0xC0,0x60,0x20,0x00, // -x-0x08,0x0C,0x07,0x03,0x07,0x0C,0x08,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00, // -y-0x47,0x4F,0x48,0x48,0x68,0x3F,0x1F,0x00,0x60,0x60,0x20,0xA0,0xE0,0x60,0x20,0x00, // -z-0x0C,0x0E,0x0B,0x09,0x08,0x0C,0x0C,0x00,0x00,0x40,0x40,0xF8,0xBC,0x04,0x04,0x00, // -{-0x00,0x00,0x00,0x07,0x0F,0x08,0x08,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x00,0x00, // -|-0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x04,0x04,0xBC,0xF8,0x40,0x40,0x00, // -}-0x00,0x08,0x08,0x0F,0x07,0x00,0x00,0x00,0x08,0x0C,0x04,0x0C,0x08,0x0C,0x04,0x00, // -~-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x60,0xC0,0x80,0x00, // -•-0x07,0x07,0x04,0x04,0x04,0x07,0x07,0x00,};/***********************************************************/* 显示汉字的字模数组存储要测试的单词中文/* 纵向取模下高位16x16/* 下一个汉字为上一个汉字在数组中位置的hz1+32/*********************************************************/unsigned char code hz1[] ={/*-- 文字: 左--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x10,0x10,0x10,0x11,0x1E,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00, 0x04,0x08,0x12,0x62,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x02,0x02,0x00, /*-- 文字: 鸟--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x3F,0x20,0x20,0x68,0xA6,0x20,0x22,0x21,0x3E,0x00,0x00,0x00,0x00, 0x00,0x08,0x08,0xC8,0x48,0x48,0x48,0x48,0x48,0x48,0x4A,0x41,0x42,0x7C,0x00,0x00, /*-- 文字: 书--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x9F,0x40,0x20,0x00,0x00,0x00, 0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x84,0x82,0x84,0xF8,0x00,0x00,/*-- 文字: 树--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x09,0xFF,0x09,0x08,0x24,0x23,0x20,0x3F,0x00,0x09,0x08,0x08,0xFF,0x08,0x00, 0x60,0x80,0xFF,0x00,0x84,0x08,0x30,0xC0,0x38,0x00,0x00,0xC2,0x01,0xFE,0x00,0x00, /*-- 文字: 水--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x04,0x04,0x04,0x05,0x06,0x00,0xFF,0x06,0x01,0x02,0x04,0x18,0x00,0x00,0x00, 0x04,0x08,0x10,0x60,0x80,0x02,0x01,0xFE,0x00,0x80,0x40,0x20,0x10,0x08,0x08,0x00, /*-- 文字: 去--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00, 0x80,0x80,0x82,0x86,0x8A,0x92,0xE2,0x82,0x82,0x82,0x8A,0x86,0x83,0x80,0x80,0x00, /*-- 文字: 来--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x10,0x10,0x14,0x13,0x10,0x10,0xFF,0x10,0x10,0x11,0x16,0x10,0x10,0x00,0x00, 0x84,0x84,0x88,0x88,0x90,0xA0,0xC0,0xFF,0xC0,0xA0,0x90,0x88,0x88,0x84,0x84,0x00, /*-- 文字: 雨--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x47,0x44,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x44,0x47,0x40,0x00, 0x00,0xFF,0x00,0x00,0x90,0x48,0x00,0xFE,0x00,0x90,0x48,0x02,0x01,0xFE,0x00,0x00, /*-- 文字: 飞--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x02,0x05,0x08,0x10,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x08,0x84,0x42,0x0F,0x00, /*-- 文字: 吃--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x3F,0x20,0x20,0x3F,0x04,0x08,0x32,0xD2,0x12,0x12,0x12,0x13,0x10,0x10,0x00, 0x00,0xF0,0x20,0x20,0xF0,0x00,0x0C,0x12,0x22,0x42,0x42,0x82,0x02,0x02,0x0E,0x00, };/*-----------------------------------------------------------*/#define LCD_OFF 0x3E#define LCD_ON 0x3F#define Add_X 0xB8 //the start address of the page 0 ;(0~7)#define Add_Y 0x40 //the start address of the Y counter ; (0~64)#define Add_Z 0xC0 //the start address of the DDRAM ; (0~64)/*-----------------------------------------------------------*/#define LCD12864_DATA_PORT P0sbit LCD12864_EN =P2^4;sbit LCD12864_RW =P2^3; //0:write ; 1:readsbit LCD12864_RS =P2^2; //0:the command .1:the datasbit LCD12864_CS_L =P2^1; //select the left of the lcd when 1sbit LCD12864_CS_R =P2^0;sbit LCD12864_RST =P2^5;/*------------------------------------------------------------*/void delayus(unsigned int us){while(us--);}void delayms(unsigned ms){unsigned int i,j;for (i=0;i<ms;i++){for (j=0;j<1000;j++);}}/*--------------------------select the LCD--------------------*/void LCDSel(unsigned char sel){switch(sel){case 0: LCD12864_CS_L=0;LCD12864_CS_R=0;break;case 1: LCD12864_CS_L=1;LCD12864_CS_R=0;break; //leftcase 2: LCD12864_CS_L=0;LCD12864_CS_R=1;break; //rightdefault:;};}/*------------------------------------------------------------*/void WaitLCD(){unsigned char flag;LCD12864_DATA_PORT=0xFF;LCD12864_RW=1;LCD12864_RS=0;LCD12864_EN=1;LCD12864_EN=1;LCD12864_EN=0;LCD12864_DATA_PORT=0xFF; //读有效数据LCD12864_RW=1;LCD12864_RS=0;;LCD12864_EN=1;do{flag=LCD12864_DA TA_PORT;LCD12864_DATA_PORT=0xFF;} while((flag&0x80)==1); //读BUSY信号//仅当第7位为0时才可操作LCD12864_EN=0;} //*//*-------------------------------------------------------------*/void WriteDatToLCD12864(unsigned char dat){WaitLCD();LCD12864_RS=1; //the dataLCD12864_RW=0; //writeLCD12864_DATA_PORT=dat;LCD12864_EN=1;;LCD12864_EN=0;}/*-------------------------------------------------------------*/void WriteCmdToLCD12864(unsigned char cmd){WaitLCD();LCD12864_RS=0; //the commandLCD12864_RW=0; //writeLCD12864_DATA_PORT=cmd;LCD12864_EN=1;;LCD12864_EN=0;}/*-------------------------------------------------------------*/unsigned char ReadDatFromLCD12864(void){unsigned char dat;WaitLCD();LCD12864_DATA_PORT=0xFF; //读空操作LCD12864_RS=1; //the dataLCD12864_RW=1; //readLCD12864_EN=1;LCD12864_EN=1;LCD12864_EN=0;LCD12864_DATA_PORT=0xFF; //来读有效数据LCD12864_RS=1; //the dataLCD12864_RW=1; //readLCD12864_EN=1;dat=LCD12864_DATA_PORT;LCD12864_EN=0;return dat;}/*--------------------------------------------------------------*///from the chip manualvoid LCD12864_init(void){LCD12864_RST=0;delayus(50);LCD12864_RST=1;LCDSel(0); //left and rightWriteCmdToLCD12864(LCD_OFF);WriteCmdToLCD12864(LCD_ON);}//x:0~7void SetX(unsigned char x) //写入X的地址{WriteCmdToLCD12864(Add_X+x);}//y:0~127void SetY(unsigned char y){WriteCmdToLCD12864(Add_Y+y);}//z:0~63void SetZ(unsigned char z){WriteCmdToLCD12864(Add_Z+z);}void ClearLCD(){int i,j;LCDSel(0);for(j=0;j<8;j++){WriteCmdToLCD12864(LCD_ON);SetX(j);WriteCmdToLCD12864(Add_Y); //diffrent from SetY(0),SetY(64);SetZ(0);for (i=0;i<64;i++){WriteDatToLCD12864(0x00);}}}/*-------------------------显示某点------------------*///左上角第一个点为原点,向下Y为轴,向右为X轴//x:0~63~127 y:0~63//flag : 0:擦除某个点// 1:显示某个点unsigned char code Tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void Dot(char x,char y,bit flag){unsigned char dat;// y=63-y; //坐标轴的移动和反转if(x<64) //如果小于64则是在左半屏,CS1片选{LCDSel(1);SetX(y/8); //set the page addressSetY(x); //set the Y adressdat=ReadDatFromLCD12864();if(flag)dat=dat|(Tab[y%8]);elsedat=dat&(~(Tab[y%8])); //擦除某个点就是在原来的数据基础上与上(要擦的位置的取反)SetY(x); //set the Y adressWriteDatToLCD12864(dat);}else if(x<128){LCDSel(2);SetX(y/8);SetY(x-64);dat=ReadDatFromLCD12864();if(flag)dat=dat|(Tab[y%8]);elsedat=dat&(~(Tab[y%8]));SetY(x-64);WriteDatToLCD12864(dat);}}//draw a line between point(x1,y1) and point(x2,y2)//flag 0:erase the line 1:draw a linevoid Line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit flag){unsigned char i;unsigned char temp;float k;if(x1==x2){if(y1>y2){ temp=x1;x1=x2;x2=temp;temp=y1;y1=y2;y2=temp;}for(i=y1;i<=y2;i++){Dot(x1,i,flag);}}else{if(x1>x2){temp=x1;x1=x2;x2=temp;temp=y1;y1=y2;y2=temp;}k=(float)(y2-y1)/(float)(x2-x1);for(i=0;i<x2-x1;i++){Dot(x1+i,(unsigned char)(y1+k*i),flag);}}}/*-------------------------------------------------------------*/void Rect(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit flag){Line(x1,y1,x2,y1,flag);Line(x2,y1,x2,y2,flag);Line(x2,y2,x1,y2,flag);Line(x1,y2,x1,y1,flag);}/*-------------------------------------------------------------*//*void RectArea(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit flag) {unsigned char temp;unsigned char i;if(x1>x2){temp=x1;x1=x2;x2=temp;temp=y1;y1=y2;y2=temp;}for(i=0;i<=x2-x1;i++){Line(x1+i,y1,x1+i,y2,flag);}}//16*16//x行0~7 y列0~127//flag 0:汉字反白显示void hz_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code * hz,bit flag) {unsigned char i,j;for (j=0;j<n;j++){//显示上半个汉字for(i=0;i<16;i++){//点的位置是在左还是右if(y+16*j+i<64){LCDSel(1);WriteCmdToLCD12864(LCD_ON);SetX(x);SetZ(0);SetY(y+16*j+i);if(flag)WriteDatToLCD12864(hz[32*j+i]);elseWriteDatToLCD12864(~hz[32*j+i]);}else if(y+16*j+i<128){LCDSel(2);WriteCmdToLCD12864(LCD_ON);SetX(x);SetZ(0);SetY(y+16*j+i-64);if(flag)WriteDatToLCD12864(hz[32*j+i]);elseWriteDatToLCD12864(~hz[32*j+i]);}}//显示下半个汉字for(i=16;i<32;i++){//先判断点是在左还是在右if(y+16*j+i-16<64){ if(x+1<8) //最后一行显示上半个字{LCDSel(1);WriteCmdToLCD12864(LCD_ON);SetX(x+1);SetZ(0);SetY(y+16*j+i-16);if(flag)WriteDatToLCD12864(hz[32*j+i]);elseWriteDatToLCD12864(~hz[32*j+i]);}}else if(y+16*j+i-16<127){if(x+1<8) //最后一行{LCDSel(2);WriteCmdToLCD12864(LCD_ON);SetX(x+1);SetZ(0);SetY(y+16*j+i-16-64);if(flag)WriteDatToLCD12864(hz[32*j+i]);elseWriteDatToLCD12864(~hz[32*j+i]);}}}}}//x:行0~7//y:列0~127//asc: 指向标准交换码//string: 指向要显示的字符串//flag: 0 反白显示void en_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code *asc,unsigned char *string,bit flag){unsigned char i,j,loc;for (j=0;j<n;j++){loc=string[j]-0x20; //确定要显示的字符在asc表中的位置(乘上16),见字模ASC表,H头文件//显示上半个字母for(i=0;i<8;i++){//点的位置是在左还是右if(y+8*j+i<64){LCDSel(1);WriteCmdToLCD12864(LCD_ON);SetX(x);SetZ(0);SetY(y+8*j+i);if(flag)WriteDatToLCD12864(asc[16*loc+i]);elseWriteDatToLCD12864(~asc[16*loc+i]);}else if(y+8*j+i<128){LCDSel(2);WriteCmdToLCD12864(LCD_ON);SetX(x);SetZ(0);SetY(y+8*j+i-64);if(flag)WriteDatToLCD12864(asc[16*loc+i]);elseWriteDatToLCD12864(~asc[16*loc+i]);}}//显示下半个字母for(i=8;i<16;i++){//先判断点是在左还是在右if(y+8*j+i-8<64){if(x+1<8) //最后一行{LCDSel(1);WriteCmdToLCD12864(LCD_ON);SetX(x+1);SetZ(0);SetY(y+8*j+i-8);if(flag)WriteDatToLCD12864(asc[16*loc+i]);elseWriteDatToLCD12864(~asc[16*loc+i]);}}else if(y+8*j+i-8<128){if(x+1<8) //最后一行{LCDSel(2);WriteCmdToLCD12864(LCD_ON);SetX(x+1);SetZ(0);SetY(y+8*j+i-8-64);if(flag)WriteDatToLCD12864(asc[16*loc+i]);elseWriteDatToLCD12864(~asc[16*loc+i]);}}}}}/******************************** END ************************************/。

C语言电子词典程序设计

C语言电子词典程序设计

沈阳工程学院课程设计设计题目:电子词典系别信息工程系班级计本083 学生姓名学号 22指导教师姜柳、吕海华职称讲师、讲师起止日期:2009年6月15日起——2009年6月26日止沈阳工程学院课程设计任务书课程设计题目:电子词典(第 1 组)系别信息工程系班级计本075学生姓名于满盛学号 2008412322指导教师姜柳、吕海华职称讲师、讲师课程设计进行地点:实训F任务下达时间: 2009年 6月 15日起止日期:2009年6月15日起——2009年6月26日止教研室主任姜柳 2009年6月15日批准一、课程设计的原始资料及依据在计算机中建立有限规模的电子英汉词典,利用程序实现电子英汉词典的查找、增加、删除、修改等功能。

查阅有关资料,进一步理解程序设计模块化的思想,并利用此思想编写一个简单的电子词典。

通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。

二、课程设计主要内容及要求1.认真阅读资料,掌握程序设计模块化的思想。

2.要求在设计的过程中,建立清晰的层次结构。

3.画出主要的功能结构图和主要模块的流程图。

4.实现功能:⑴查找单词。

⑵增加单词。

⑶万年历⑷修改单词。

⑸显示单词。

⑹保存单词。

⑺返回⑻帮助⑼退出5. 要求操作简单,用户界面友好。

6. 运行程序,检查结果是否和理论值一致。

7. 环境使用Windows,Turbo C环境。

三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。

一般不应少于3000字。

2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。

应做到文理通顺,内容正确完整,书写工整,装订整齐。

3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。

C语言程序设计实验指导(源代码)

C语言程序设计实验指导(源代码)

《C语言程序设计》实验源程序代码目录实验二顺序结构程序设计(上) (2)实验三顺序结构程序设计(下) (2)实验四选择结构程序设计(上) (4)实验五选择结构程序设计(下) (4)实验六循环结构程序设计(上) (5)实验七循环结构程序设计(下) (6)实验八函数 (8)实验九数组(上) (9)实验十数组(下) (11)实验十一指针的应用 (12)实验十二结构体 (14)实验十三文件操作 (17)实验二顺序结构程序设计(上)//1-1void main(){ int a=1;printf("1:%d\n", sizeof(a));printf("2:%d\n", sizeof(float));printf("3:%d\n", sizeof(2.0*10));printf("4: %d\n", sizeof("Liu Dehua"));}//1-2-------------------------------------------------------- #include <stdio.h>void main(){ int a1=65,a2,a3;char ch='A'+1;printf("1:\101 \x42 C\n");printf("2:I say:\"How are you?\"\n");printf("3:\t\\\\Display Hello! I am Tom\b!\n");printf("4:65/10=%d,65%%10=%d\n",65/10, 65%10);printf("5:a1=%d,a1=\'%c\'\n",a1,a1);printf("6:ch=%c,ch=%d\n",ch,ch);a2=2,a3=(a1=3,a2+=a1,a1*a2);printf("7:a1=%d,a2=%d,a3=%d\n",a1,a2,a3);a3=a2=a1=2;printf("8:%d,%d,%d\n",(a1,a2+1),a3+2,a1+a2+a3);}//2------------------------------------------------------------#include <stdio.h>void main(){ float c,f;printf("请输入一个华氏温度:\n");scanf("%f",f);c==(5/9)*(f-32);printf("摄氏温度为:%5.2f\n"c);}实验三顺序结构程序设计(下)//1-1#include "stdio.h"void main(){ char ch=65;int a=1234;long g=12345678;float f=123.456789f;double d=9.876543E2;printf("1:%d,%c,%5d,%3c\n",ch,ch,ch,ch);printf("2:%8d,%-8d,%o,%x\n",a,a,a,a);printf("3:%10.3f,%f,%e\n",f,f,f);printf("4:%-10.2lf,%lf,%le\n",d,d,d);printf("5:%10s,%10.3s\n","Hello,world!","Hello,world!");}//1-2#include <stdio.h>main(){ int a,b,c;a=getchar();b=getchar();c=getchar();printf("a=%d b=%d c=%d\n",a,b,c);printf("a=%c b=%c c=%c\n",a,b,c);}//1-3---------------------------------------------------------------------------------------#include "stdio.h"void main(){int a=10,b;int *p; // p为指向整型变量的指针变量 printf("1:a的值=%d, a的内存地址值=%d\n",a, &a); //&a:获取变量a的内存地址值p=&a; //将变量a的内存地址值赋给指针变量p printf("2:p的值=%d, p的内存地址值=%d,p所指向的内存单元的值=%d\n",p,&p,*p);scanf("%d,%d" ,p,&b); //运行时输入100,200【enter】printf("3:a的值=%d,b的值=%d,p所指向的内存单元的值=%d\n",a,b,*p);}//3-3-----------------------------------------------------------#include <stdio.h>#include <math.h> //包含数学函数库void main(){ double a,b,c,p,s;printf("输入三角形三边a,b,c: ");scanf("%lf,%lf,%lf",&a,&b,&c);if(a+b>c && b+c>a && a+c>b) //判断该三边的值是否能构成一个三角形{ p= ;s=sqrt( ); //sqrt():求平方根函数printf("三角形面积=%lf\n",s);}elseprintf("三边(a=%lf,b=%lf,c=%lf)不能构成三角形! ",a,b,c);}实验四选择结构程序设计(上)//2#include <stdio.h>void main(){ char ch,c1,c2;printf("Enter a character:");ch=getchar();if((ch>='A')||(ch<='Z')&& (ch>='a')||(ch<='z'))c1=ch-1;c2=ch+1;if(ch='A'&&ch=’a’) c1=ch+25;else if(ch='Z'&&ch=’z’) c2=ch-25;putchar(c1);putchar(ch);putchar(c2);putchar('\n');}实验五选择结构程序设计(下)//1#include "stdio.h"void main(){ char m;printf(“input the month number:\n”);scanf (“%c”,&m);switch (m){case 1 : printf ("Jan");case 2 : printf ("Feb");case 3 : printf ("Mar");case 4 : printf ("Apr");else : printf ("error");}}//2----------------------------------------------------------------------- #include <stdio.h>void main(){ int a,b,d;char ch;printf("Please input a expression:");scanf("%d%c%d", );switch(ch){ case '+': printf("%d+%d=%d\n",a,b,a+b);break;case '-': printf("%d-%d=%d\n",a,b,a-b);break;case '*': printf("%d*%d=%d\n",a,b,a*b);break;case '/': if( )printf("Divisor is zero\n");elseprintf("%d/%d=%lf\n",a,b, a/b); /*强制类型转换*/;default: printf("Input Operator error!\n");}}实验六循环结构程序设计(上)//1-1#include <stdio.h>void main(){ int i=1,sum=0;while(i<100)sum=sum+i;i++;printf("Sum = %d\n",sum);}//1-2--------------------------------------------------------------------------------#include <stdio.h>void main(){ char x;x='Z';while(x!='A'){ printf("%3d",x);if(('Z'-x)%5= =0) printf("\n");x++;}}//2-1-----------------------------------------------------------------#include<stdio.h>void main(){ int n = 21,i;while ( ){ printf( "You take ... ");scanf("%d",&i);if ( )printf( "Don't try to cheat me, take 1, 2, 3, or 4, please! \n");else{ printf( "I take %d\n", 5-i);n = ; //剩下的火柴棍根数}}printf( " Now take the last one, please! \n Haha^-^, you loss!) \n "); }//2-2-------------------------------------------------------------------- #include <stdio.h>void main(){ int day,x1,x2;day=0;x1=1020;while( ){ x2= ;x1=x2;day++;}printf("day=%d\n",day);}//2-3---------------------------------------------------------------------- #include<stdio.h>void main(){ long x,m,y=0;int gw,count=0;printf("input x=");scanf("%ld",&x);;do{ gw=m%10;y= ;;count++;}while( );printf("x=%ld, count=%d, recycle=%ld\n",x,count,y);}}实验七循环结构程序设计(下)//1-1#include<stdio.h>void main(){ long sum(int);long s=0;int k;for(k=1;k<20;k+=2)s=s+sum(k);printf("s=%ld\n",s);}long sum(int x) //求1+2+...+x{ long result=0;int i;for(i=1;i<=x;i++)result+=i;return result;}//1-2------------------------------------------------------------------------#include<stdio.h>void main(){long s=0,result=0;int k,i;for(k=1;k<20;k+=2){for(i=1;i<=k;i++)result+=i;s=s+result;}printf("s=%ld\n",s);}//2-1--------------------------------------------------------------------------#include<stdio.h>void main(){ float score,sum=0,average;int persons=0;while(1){ scanf("%f",&score);if(score<0)continue;else if(score>100)break;else{ sum+=score;persons++;}}average=(float)(sum/persons);printf("人数=%d,平均分=%f\n",persons,average);}//2-2------------------------------------------------------#include <stdio.h>void main(){ int i,j;for (i=0;i<4;i++){ for (j=0;j<=20;j++)printf("\n");for (j=0;j<2*i+1;j++)printf("*");}}//2-3-----------------------------------------------------------#include "stdio.h"void main(){ int a,k,s=0;for (k=2; k<1000; k++){for (a=1; a<=k/2; a++)if(k%a==0) s+=a;if (s==k) //k是完数printf("%d is OK!\n",k);}}实验八函数//1-1#include "math.h"#include "stdio.h"void main(){ float a,b,c;printf("请输入三角形的边长值:\n");scanf("%f%f%f",a,b,c);if(a+b>c&&a+c>b&&b+c>a)printf("Area=%f\n",area(a,b,c));}area(float a,float b,float c){ float s,area_s;s=(a+b+c)/2.0;area_s=sqrt(s*(s-a)*(s-b)*(s-c));return(area_s);}//1-2--------------------------------------------------------------------------#include<stdio.h>int fun(int n){ int jc=1,i;for(i=2;i<=n;i++) jc*=n;return jc;}void main(){ int n;long sum=0;for(n=1;n<11;n++);if(n%3==0||n%5==0)sum+=fun(int n);printf("sum=%ld\n",sum);}//1-3---------------------------------------------------#include<stdio.h>swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p;}void main(){ int a,b;scanf("%d%d",&a,&b);printf("a=%d\tb=%d\n",a,b);swap(&a,&b);printf("a=%d\tb=%d\n",a,b);}//2-1-----------------------------------------------------------------#include<stdio.h>void printline(int n) //{ int i,k;for(i=1;i<=30-n;i++) printf("%c",' ');for(i=1;i<= ;i++) printf( );printf("\n");}void main(){ int i;for(i=1;i<=5;i++) ;for(i=4;i>=1;i--) ;}//2-2-------------------------------------------------------------------------------------------------------#include " stdio.h "int isprime(int m) //判别m是否为质数{ int i ;for(i=2;m%i!=0;i++); //注意:循环体是空语句return ( );}void main(){ int n,x,a,b;scanf("%d",&x);for(n=6;n<=x ;n+=2)for(a=3;a<=n/2;a+=2)if( ) //若a是素数{ b=n-a;if( ) //若b是素数{ printf(“%d=%d+%d”,n,a,b);; //退出a循环,判别下一个n的组合}}}实验九数组(上)//1-1#include<stdio.h>#define N 9;void main(){ int i,sum=0,a[N],max,min;for(i=0;i<N;i++)scanf("%d",a[i]);sum=max=min=a[0];for(i=0;i<N;i++){ sum+=a[i];if(a[i]>max)max=a[i];else if(a[i]<min)min=a[i];}for(i=0;i<N;i++){ printf("%8d",a[i]);if(i%3==2) printf("\n");}printf("max=%d min=%d average=%lf\n",max,min,sum*1.0/N);}//1-2--------------------------------------------------------------------------------------#include <stdio.h>void main(void){ const int n=3;int i,j,sum;int a[][n]={1,2,3,4,5,6,7,8,9};for(i=0;i<=n;i++)for(j=0;j<=n;j++)if(i==j||i+j==n)sum+=a[i][j];printf("sum=%d\n",sum);}//2-1--------------------------------------------------------------#include <stdio.h>#include <math.h>int Is_sushu(int x){ int i,re;re=x>1?1:0;for(i=2;i<=sqrt(x);i++)if( ){ re=0; break;}return(re);}void main(void){ const int n=10;int ss[n],hs[n],k,m,p1,p2;p1=p2=-1;for(k=1;k<=n;k++){ printf("NO %d:",k);scanf("%d",&m);if( ) //若m为素数{ p1++;ss[p1]=m;}else{ ;hs[p2]=m;}}for(k=0;k<=p1;k++) //输出素数数列printf("%4d ",ss[k]);printf(" count=%d\n",p1);for(k=0;k<=p2;k++) //输出合数数列printf("%4d ",hs[k]);printf("count=%d\n", );}//2-2-------------------------------------------------------#include<stdio.h>#include<stdlib.h>void main( ){ int a[10],i,j,t;for(i=0;i<10;i++){ a[i]= ; //生成随机整数printf("%d ",a[i]);}for(i=0;i<9;i++)for(j=0;j< ; j++)if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1]; ;}printf("\nthe sorted numbers: \n");for(i=0;i<10;i++)printf("%5d ",a[i]);}实验十数组(下)//1-1#include<stdio.h>void main( ){char a[]="wel",b[]="come";int i,n=0;while(!a[n]) n++;for(i=0;b[i]!='\0';i++)a[n+i]=b[i];printf("%s\n",a);}//1-2---------------------------------------------------------------#include<stdio.h>#define N 6int sum(int x,int n){ int i=0,s=0;while(i<=n)if(x[i]>0){s=s+x[i]; i++;}return s;}void main(){ int i=0,s,a[N];do{ printf("NO%d: ",i+1);scanf("%d",&a[i]);if((-100<=a[i])&&(a[i]<=100))i++;elseprintf("wrong! input again...\n");}while(i<N);s=sum(a[N],N);printf(" sum=%d\n",s);}//2-1------------------------------------------------------------#include "stdio.h"main(){ c har str[40];int alphabet=0,digit=0,space=0,other=0,i=0;printf("请输入一串字符:\n");gets(str);while( ){ if(('A'<=str[i])&&(str[i]<='Z')||('a'<=str[i])&&(str[i]<='z')) ++alphabet;else if(str[i]==' ') ++space;else if((str[i]<='9')&&(str[i]>='0')) ++digit;else ++other;i++;}printf("其中有%d个字母,%d个空格,%d个数字,%d个其他字符!\n",alphabet,space, digit,other);}//2-2-------------------------------------------------------------------------------------------------------#define N 50#define M 20#include <stdio.h>void main(){ char a[N][10]; //学号float score[N][M],max_score; //成绩int n,m,i,j,studid;/*输入学生的学号和各门课程的成绩*/printf("学生数n,课程数m:");scanf("%d,%d",&n,&m);for(i=1;i<=n;i++){ printf("输入第%d位学生的学号:",i);scanf("%s", );printf("按课程顺序输入成绩:");for(j=1;j<=m;j++)scanf("%f", );}/*找出每门课程最高的学生学号、课程代号和成绩并输出*/for(j=1;j<=m;j++){ studid=1;max_score=score[1][j];for(i=1;i<=n;i++)if(score[i][j]> max_score){ max_score=score[i][j];studid=i;}printf("第%d门课程最高分的学生学号是:%s,成绩为:%6.2f\n",j,a[studid],max_score);}}实验十一指针的应用//1-1#include <stdio.h>void main(){ int *p,i,a[5];p=a[1];printf("please enter 5 numbers:");for(i=0;i<5;i++)scanf("%d",p++);for(i=0;i<5;i++,p++)printf("%d ",*p);printf("\n");}//1-2-----------------------------------------------------------------------------------------#include<stdio.h>int digits(char *s){ int c=0;while(s){ if(*s >=0&&*s <=9)c++;s++;}return c;}void main(){ char s[80];printf("请输入一行字符\n");gets(s);printf("个数=%d\n",digits(s));}//2-1-------------------------------------------------------------#include<stdio.h>int findmax(int *s,int t ){ int i,k=0;for(i=0; ;i++)if( ) k=i;return ;}void main(){ int j,a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add;for(j=0;j<10;j++)printf("%4d%10xh\n",a[j],&a[j]);k=findmax(a,10);add=&a[k];printf("\n数组下标=%d,数组元素值=%d,元素地址=%xh\n",k,a[k], add);}//2-2------------------------------------------------------------------ #include <string.h>#include <stdio.h>#define N 81void fun(char *s){ int i=0,t,n= ;for(;s+i<s+n-1-i;i++){ t=*(s+i);*(s+i)= ;*(s+n-1-i)=t; }}void main(){ char a[N];gets(a);printf("The original string is:");puts(a);fun(a);printf("\nThe string after modified:"); puts(a);}//2-3-----------------------------------------------------------#include<stdio.h>#include "string.h"#define N 5void sort(char (*p)[20]) //利用行指针对N个字符串进行排序{ int i,j; char k[20];for (i=0; i<N-1; i++)for (j=i+1; j<N; j++)if (strcmp( ,*(p+j))>0) //*(p+i)表示第i个串{ strcpy(k,*(p+i));strcpy(*(p+i), );strcpy(*(p+j),k);}}void main(){ char ch[N][20]; int i,j;for (i=0; i<N; i++) gets(ch[i]); //输入N个串sort(ch); //利用行指针排序for(i=0; i<N; i++) puts(ch[i]); //输出}实验十二结构体//1-1#include<stdio.h>struct stud{ char name[20];int age;} ;fun(struct stud person[],int n){ int min,i;min=0;for(i=0;i<n;i++)if(person[i] <person[min] ) min=i;return (person );}void main(){ struct stud a[]={{"Zhao",21},{"Qian",20},{"Sun",19},{"LI",22}};int n=4;struct stud minpers;minpers=fun(a,n);printf("%s 是年龄小者,年龄是:%d\n",,minpers.age);}//2-1-----------------------------------------------------------#include<stdio.h>#include<string.h>struct bdata{ int id;char bname[20];float price;} ;int findbook(struct bdata st[],int n,char s[]){ int i;for(i=0;i<n;i++)if(________) return i;__________________;}void main(){ struct bdata book[100];char st[20];int index;printf("请输入要查找书名:";gets(st);index=findbook(_______________);if (index = = -1) printf("%s的书未找到\n",st);else printf("%s的书在%d位置\n",st,index);}//2-2------------------------------------------------------------------------------------------#include<stdio.h>#define M 3#define N 4struct stud{ int no;char name[16];float mark[M];float aver;};void input(struct stud st[]) //输入学生记录{ int i,j;float sum;for(i=0;i<N;i++){ printf("\n输入第%d个学生的学号,姓名:");scanf("%d,%s", );printf("\n输入第%d个学生的3门课程成绩:");for(j=0;j<M;j++)scanf("%f", );}}void output(struct stud st[]) //输出学生记录{ int i,j;printf("\n学号姓名课程1 课程2 课程3 平均分\n");for(i=0;i<N;i++){ printf("%5d %8s",st[i].no,st[i].name);for(j=0;j<M;j++)printf("%5.1f",st[i].mark[j]);printf("%5.2f",st[i].aver);}}void average(struct stud st[]) //求每个学生的平均成绩{ int i,j;float sum;for(i=0;i<N;i++){ sum= ;for(j=0;j<M;j++)sum= ;=sum/M;}}void main(){ struct stud preson[N];input( );average(preson);output(person);}//2-3---------------------------------------------------------------------------------------------------struct oneday{ int day,month,year; };void main(){ struct oneday day1;int alldays(struct oneday);printf("Enter year,month,day:");scanf("%d-%d-%d", );printf("%d\n",alldays(day1));}int runnian(int year){ if (year%400==0) return(1);if (year%4==0 && year%100!=0) return(1);return(0);}int alldays(struct oneday one){ int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int i,t=0;if (runnian(one.year)) day[2]=29;for (i=1; i< ;i++)t+=day[i];t=t+one.day;return(t);}实验十三文件操作//1-1#include <stdio.h>#include<string.h>void main(){ FILE *fp1;char ch[80];int i,j;fp1=fopen("C:\\data1.dat","b");for(i=1;i<=4;i++){ gets(ch);j=0;while(ch[j]!='\0'){ fputc(fp1, ch[j]); j++; }fputc(fp1,'\n');}fclose(fp1);}//1-2----------------------------------------------------------------------------------------#include <stdlib.h>#include <stdio.h>#include <time.h>void main ( ){ int x[10],i,k;FILE *fp2;srand( (unsigned)time( NULL ) );for (i=0;i<10;i++)x[i]=rand();fp2=fopen ("C:\\data2.dat","wb");if(fp2==NULL){ printf("Open error \n");exit(0);}for (int k=0 ; k<10 ; k++ )fwrite(x[k],sizeof(int), fp2);fclose (fp2) ;}//2-1----------------------------------------------------------------#include<stdio.h>#include<stdlib.h>void main(){ FILE *fp;int i=0;char *str[]={"visual C++","visual Basic","visual java","visual foxpro"};if((fp=fopen("C:\\data3.txt", ))==NULL){ printf("%s不能打开!\n","data3.txt");exit(1);}while(i<4){fprintf( );;}fclose(fp);//2-2-------------------------------------------------------------------------------------------------------------------#include<stdio.h>#include<stdlib.h>void main(){ char c;FILE *fp3; long num=0;if((fp3=fopen("c:\\ data3.txt", ))==NULL){ printf("Open error \n");exit(0); }c=fgetc(fp3);while ( ){;c=fgetc(fp3);}printf("\nnum=%ld\n", num);;}(注:可编辑下载,若有不当之处,请指正,谢谢!)。

C语言课程设计——学生管理系统源代码

C语言课程设计——学生管理系统源代码

C语言课程设计——学生管理系统源代码#include〈stdio。

h>#include〈stdlib。

h〉#include<string。

h〉#include〈conio.h>#define MY1 printf(”学号\t姓名\t性别\t年龄\t生日”)#define MY2 printf(”\n%d %6s %4s\t%2d %8d%2d%2d \n",s[i].num,s[i].name,s[i]。

sex,s[i]。

age,s[i]。

a。

year,s[i].a。

month,s[i].a.day)#define MY3 printf(”家庭住址联系方式高数英语大物总成绩")#define MY4 printf(”\n%4s %4s %2d %2d %2d %2d\n”,s[i]。

address,s[i]。

tel,s[i].c。

gao,s[i]。

c.ying,s[i].c.wu,s[i].c.total)#define MAX 30int i;int sum;/*时间结构体类型*/struct date{int year;int month;int day;}a;/*学生成绩结构体类型*/struct score{int gao;int ying;int wu;int total;}c;/*学生信息结构体类型*/struct s_message{int num;char name[20];char sex[5];int age;struct date a;char address[50];char tel [11];struct score c;}s[MAX];/*保存学生信息模块*/int i;FILE*fp;if((fp=fopen(”D:\\s。

txt",”wb”))==NULL){printf(”reading file is wrong!\n”);return;}for (i=0;i<sum;i++){if(fwrite(&s[i],sizeof(struct s_message),1,fp)!=1)printf(”writing file is wrong!\n”);}fclose(fp);}/*读取学生信息模块*/int read_message(){FILE *fp;int i=0;if((fp=fopen("D:\\s。

背单词程序设计代码c语言

背单词程序设计代码c语言

背单词程序设计代码c语言1.引言1.1 概述概述部分:背单词程序设计在如今的学习环境中变得越来越重要。

随着全球化的推动和不断发展的信息技术,掌握一门外语已经成为许多人成功的关键因素之一。

而背单词是学习外语的基本功,但却常常被学习者忽视或无计划地进行。

为了提高背单词的效率和效果,设计一款背单词程序已经成为了一个切实可行的解决方案。

本文将重点介绍使用C语言编写背单词程序的优势。

C语言是一种通用的高级编程语言,具有广泛的用途和应用领域。

它的学习曲线相对较低,同时可以灵活地实现各种功能。

因此,使用C语言来开发背单词程序不仅可以实现基本的背单词功能,还可以通过扩展和改进满足个性化的学习需求。

通过本文的阐述,读者将了解背单词程序设计在提高学习效率和效果方面的重要性,以及为什么选择C语言进行编写背单词程序会得到更多的优势。

进一步地,本文还将总结已有的研究成果,并展望未来背单词程序设计的发展方向。

希望读者通过本文的阅读,能够增加对背单词程序设计及其在学习中的应用的了解,并在学习外语的过程中能够更加高效地掌握词汇。

1.2 文章结构文章结构部分的内容可以按照以下方式编写:文章结构部分旨在介绍本文的组织框架,以便读者能够清晰地了解文章的内容和顺序。

本文主要包含引言、正文和结论三个部分。

引言部分将提供关于背单词程序设计的背景和重要性的概述,以及本文的目的。

这将帮助读者理解为什么背单词程序设计是一个重要的话题,并明确本文的研究目标。

正文部分将详细探讨背单词程序设计的重要性以及使用C语言编写背单词程序的优势。

其中,我们将讨论背单词程序设计对语言学习的帮助,以及C语言作为编写背单词程序的优势,如灵活性、效率和跨平台性等。

结论部分将对整篇文章进行总结,并展望未来背单词程序设计的发展方向。

这部分将强调背单词程序设计的重要性,并探讨如何进一步优化和发展这一领域,以满足不断变化的语言学习需求。

通过这样的文章结构,读者可以系统地了解背单词程序设计的重要性以及使用C语言编写背单词程序的优势,从而进一步深入研究和应用相关领域。

(完整版)C语言编程必背单词

(完整版)C语言编程必背单词

(完整版)C语言编程必背单词C语言必背单词运算符与表达式: 1.constant 常量 2. variable 变量 3. identify 标识符4. keywords 关键字5. sign 符号6. operator 运算符7. statement语句 8. syntax 语法 9. expression 表达式 10. initialition 初始化 11. number format 数据格式12 declaration 说明 13. type conversion 类型转换14.define 、definition 定义条件语句: 1.select 选择 2. expression 表达式 3. logical expression 逻辑表达式4. Relational expression 关系表达式5.priority优先6. operation运算 7.structure 结构循环语句: 1.circle 循环2. condition 条件3. variant 变量4. process过程5.priority优先6. operation运算数组:1. array 数组2. reference 引用3. element 元素 4. address 地址 5. sort 排序 6. character 字符 7. string 字符串 8. application 应用函数:1.call 调用2.return value 返回值3.function 函数4. declare 声明5. `parameter 参数 6.static 静态的 7.extern 外部的指针:1. pointer 指针2. argument 参数3. array 数组4. declaration 声明5. represent 表示6. manipulate 处理结构体、共用体、链表: 1 structure 结构 2 member成员 3 tag 标记 4 function 函数 5 enumerate 枚举 6 union 联合(共用体)7 create 创建 8 insert 插入 9 delete 删除 10 modify 修改文件: 1、file 文件 2、open 打开 3、close 关闭 4、read 读 5、write 写 6、error 错误序号主要章节常用英汉对照词汇备注 1 运算符与表达式(operatorandexpression )汉语英语常量 constant 变量 variable 标识符 identify 关键字 keywords 符号 sign运算符 operator语句 statement 语法 syntax表达式Expression 初始化Initialization 数据格式number format说明 Declaration 类型转换 type conversion定义 Define 、 definition 2 条件语句( conditionstatement) 选择select 表达式expression 逻辑表达式logical expression关系表达式 Relational expression 优先 priority 运算 operation 结构 structure 3 循环语句(circle statement) 循环 circle条件 condition 变量 variant 过程 process 优先 priority 运算 operation 4 函数(function) 调用call 返回值return value 函数function 声明declare 参数 parameter 静态的 static外部的 extern 5 数组和指针 (array andpointer) 数组 array 引用 reference 元素 element 地址 address 2排序 sort 字符 character 字符串 string 应用 application 指针 pointer 参数 argument 数组 array 声明 declaration 表示 represent 处理 manipulate 6 结构体、共用体(structures 、 union )结构 structure 成员 member 标记 tag函数 function 枚举 enumerate联合 ( 共用体 ) union 创建 create 插入 insert 删除 delete 修改 modify 7 文件( file) 文件 file 打开 open 关闭 close 读 read 写 write 错误 errorProgram Design 程序设计writing program 编写程序standardize vt.使标准化coding the program 编程simplify vt.单一化,简单化programming 程序 revision n.校订,修正 programmer n.程序员 occupy vt.占领,住进 logic n.逻辑,逻辑学 BASIC 初学者通用符号指令代码machine code 机器代码teaching language 教学语言debug n.DOS命令,调试 simplicity n.单纯,简朴 compactness a.紧凑的,紧密的timesharing system 分时系统description n.描述,说明interactive language 交互式语言break n.中断 manufacturer n.制造业者structure chart 结构图 dialect n.方言,语调the program flow 程序流expense n.费用,代价 manager module 管理模块 uniformity n.同样,划一worder module 工作模块archaic a.己废的,古老的mainmodule 主模块sufficient a.充分的,足够的submodule 子模块data processing 数据处理 modify v.修正,修改 business application 商业应用outline n.轮廓,概要 scientific application 科学应用compose分解lexical a.字典的,词汇的 code 代码 non-programmer n.非编程人员node vt改为密码 notation n.记号法,表示法,注释pseudocode n.伪代码 verbosity n.唠叨,冗长 commas n.逗点逗号 record n.记录documentation 文档subrecord n.子记录flowchart/flow 程表/流程 data division 数据部 visual a.视觉的 procedure division 过程部 represent vt.表现,表示,代表comprise vt.包含构成 structured techniques结构化技术 operator n.运算符,算子 straightforward a.笔直的,率直的commercial package 商业软件包subroutine n.子程序generator n.产生器,生产者driver module 驱动模块mathematician n.专家 line by line 逐行 operator n.作符translate vt.翻译,解释forerunner n.先驱modular 摸块化ancestor n.祖宗cumbersome a.讨厌的,麻烦的teaching programming 编程教学lengthy a.冗长的,漫长的 alter vi./vt.改变flaw n.缺点裂纹 devclop vt.发达separate a.各别的 recompile v.编译 assist n.帮助 cycle n.循环technician n.技师remove vt.移动,除去straight line 直线category n.种类,类项rectangle n.长方形,矩形 P-code p代码virtrally ad.事实上3symology n.象征学象征的使用register n.寄存器 to summaries 总之,总而言之by convention 按照惯例 cyptic n.含义模糊的,隐藏的diamond-shaped a,菱形的 bracket n.括号decision n判断obviate 除去,排除 terminal n. a终端机,终端的keyword n.关键字card reader 阅读器 underline vt.下划线translator program 译程序 monadic a. monad(单位)的Programming 程序设计 dec/binary n.二进制 source language 源语shift 变化,转移,移位 machine language 机器 overflow n.溢出machine instruction 机器指令arithmetic n.算术,算法 computer language 计算机语composite symbol 复合型符号.assembly language 汇编语assignment n.赋值floating point number浮点数proliferation n.增服 high-level language高级语 pointer n.指针natural language 自然语言 array n.数组矩阵,source text 源文本 subscript n.下标intermediate language 中间语言type conversion 类型转换 software development 软件开发address arithmetic 地址运算 map vt.映射,计划denote vt.指示,表示 maintenance cost 维护费用subprogram n.子程序legibility n.易读性,易识别separate compilation 分离式编泽amend vt.修正,改善 alphabetic a.照字母次序的 consumer n.消费者 digit n.数字位数enormous a.巨大的,庞大的numeric expression 数值表达式 reliability n.可信赖性,可信度tap n.轻打,轻敲,选择 safety n.安全,安全设备 print zone 打印区property n.财产,所有权 column n.列correctness n.正确, functionality n.机能 semicolon n.分号portable a.叮携带的,可搬运的survey n.概观. altoggle n.肘节开关 task n.作,任务declaration n.宣告说明source program 源程序mufti-dimension array 多维数组 object program 目标程序。

c语言 统计单词

c语言 统计单词

c语言统计单词在C语言中,统计单词的数量可以通过以下步骤完成:初始化计数器变量为0读取文本文件的每一行对于每一行,将每个单词拆分并检查是否为新单词(即之前未出现过的单词)如果是新单词,增加计数器变量返回计数器的值以下是一个简单的C语言程序,用于统计文本文件中的单词数量:c#include <stdio.h>#include <string.h>#include <ctype.h>#define MAX_WORDS 1000000 // 定义最大单词数#define MAX_WORD_LEN 100 // 定义最大单词长度int main() {FILE *file;char line[1000];char *word = malloc(MAX_WORD_LEN * sizeof(char));int count = 0;int i;int is_new_word = 1;char *words[MAX_WORDS];int num_words = 0;file = fopen("text.txt", "r"); // 打开文件if (file == NULL) {printf("无法打开文件\n");return -1;}while (fgets(line, sizeof(line), file)) { // 读取每一行for (i = 0; i < strlen(line); i++) { // 遍历每一行的每个字符if (isspace(line[i])) { // 如果遇到空格,表示一个单词结束is_new_word = 1; // 重置is_new_word标志为1,表示是新单词} else if (isalpha(line[i])) { // 如果遇到字母,检查是否为新单词if (is_new_word) { // 如果is_new_word为1,表示是新单词words[num_words] = malloc(MAX_WORD_LEN * sizeof(char)); // 为新单词分配内存空间strcpy(words[num_words], word); // 将当前单词复制到新分配的内存空间中num_words++; // 增加单词数量is_new_word = 0; // 重置is_new_word标志为0,表示不是新单词了} else { // 如果is_new_word为0,表示不是新单词,继续读取下一个字符到当前单词中word[strlen(word)] = line[i]; // 将当前字符添加到当前单词的末尾}} else { // 如果遇到其他字符,重置当前单词并继续读取下一个字符到当前单词中word[0] = '\0'; // 重置当前单词为空字符串word[strlen(word)] = line[i]; // 将当前字符添加到当前单词的末尾}}}fclose(file); // 关闭文件printf("总共的单词数量: %d\n", num_words); // 输出总单词数量for (i = 0; i < num_words; i++) { // 输出每个单词及其出现次数(这里只输出一次)printf("%s\n", words[i]);free(words[i]); // 释放内存空间}free(word); // 释放内存空间return 0;}。

C++记忆训练小游戏程序源代码

C++记忆训练小游戏程序源代码

#include <iostream>#include <stdio.h>#include <windows.h> //包涵暂停函数的头文件#include <time.h>using namespace std;int s3,s4;char selec;int time1,time2;class YouXi{public:void score(int score1,int right); //声明战况子函数void welcome(); //声明主菜单界面void number(); //声明数字练习函数void time(); //声明倒计时函数void sellet(); //声明字母选择菜单界面函数void letter(int x); //声明随机生成字母函数void all();void end();private:};int main(){time1=::time(NULL); //记录用户开始时的时间system("cls");YouXi Game;Game.welcome(); //调用主菜单return 0;}void YouXi::welcome() //定义主菜单函数{for(int i=0;i<3;i++){system("cls"); //执行DOS下的清屏命令cout<<"\n\n\n\n\n\n\n\n\n\n\t\t\tloading";for(int j=0;j<10;j++){Sleep(80);cout<<".";}}do{system("cls");cout<<"\n\n\n\n"<<endl;cout<<"\n\t\t\t********************************"<<endl;cout<<"\n\t\t\t* 欢迎挑战*"<<endl;cout<<"\n\t\t\t********************************"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t* 1.数字记忆*"<<endl; // \n换行,\t水平制表(跳到下一个Tab位置)cout<<"\n\t\t\t* 2.字母记忆*"<<endl;cout<<"\n\t\t\t* 3.键盘记忆*"<<endl;cout<<"\n\t\t\t* 4.退出*"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t********************************"<<endl;cout<<"\n\t\t\t请选择:";int i;cin>>i;switch(i){case 1:time();number();break;case 2:sellet(); //调用字母选择大小写菜单break;case 3:time();all(); //全键盘练习break;case 4:end();break;default:cout<<"您的输入有误!按任意键继续......";getchar();getchar();}}while(1);}void YouXi::time() //定义倒计时子函数{system("cls");cout<<"\n\n\n\n\n\t\t\t\tloading...\n\n\n\n\n"<<endl;for(int i=0;i<80;i++){cout<<">";Sleep(20);}}void YouXi::number(){int s1=0,s2=1,input,eng; //定义局部变量s1,s2用于随机函数的个数,eng,input随时产生数字与用户入.do{system("cls");srand((unsigned)::time(NULL)); //以当前时间作为随机种子eng=((s1=s1*10+1)+rand()%((s2=s2*10)-s1)); //随机产生一个数s4++; //统计总个数cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请记住此数字:"<<eng<<endl; //显示此数字Sleep(500);system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请输入刚才的数字:";cin>>input;if(input==eng) //判断数字是否相等{s3++; //统计总正确数system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n"<<endl;cout<<"\t\t\t恭喜您!进入下一关!"<<endl;Sleep(600);system("cls");continue;}else{do{system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\t\t\t输错了,是否继续?(y/n):";cin>>selec;if(selec=='y'||selec=='Y'){s1=s1/10; //恢复错误时的数字个数(例如:随机产生一个五位数,我们输入的与计算机产生的数值不匹配,所以要重新输入5位数与计算机随机产生的数值匹配的关卡,至到输入正确为止)s2=s2/10; //恢复错误时的数字个数(例如:随机产生一个五位数,我们输入的与计算机产生的数值不匹配,所以要重新输入5位数与计算机随机产生的数值匹配的关卡,至到输入正确为止)break;}else if(selec=='n'||selec=='N')score(s4,s3); //调用战况子函数}while(1);}}while(1);}void YouXi::sellet(){do{system("cls");cout<<"\n\n\n\n\t\t\t********************"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t* 1.大写字母*"<<endl;cout<<"\n\t\t\t* 2.小写字母*"<<endl;cout<<"\n\t\t\t* 3.返回*"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t********************"<<endl;cout<<"\n\t\t\t请选择:";int i;cin>>i;switch(i){case 1:time(); //调用倒计时子函数letter(1); //调用字母练习子函数(并告诉函数是大写字母)break;case 2:time(); //调用倒计时子函数letter(2); //调用字母练习子函数(并告诉函数是小写字母)break;case 3:welcome(); //调用欢迎界面default:cout<<"您的输入有误!按任意键继续...";getchar();getchar();}}while(1);}void YouXi::letter(int x){int n=1; //初始化循环变量值//int c;char eng[100],input[100]; //用于存放产生的字符串与用户输入的字符串srand((unsigned)::time(NULL)); //以当前时间为种子do{system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请记住这个字母:";if(x==1)for(int i=0;i<n;i++){eng[i]=65+rand()%(90-65); //随机产生一个大写字母cout<<eng[i]; //输出一个大写字母}elsefor(int i=0;i<n;i++){eng[i]=97+rand()%(122-97); //随机产生一个小写字母cout<<eng[i]; //输出一个小写字母}eng[n]='\0'; //给数组加一个结束标志s4++; //统计字母总个数Sleep(1000);system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请输入刚才的字母:";cin>>input;if(strcmp(eng,input)==0) //比较两个字符串是否相同{s3++; //记录正确个数n++;system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t恭喜您!进入下一关!"<<endl;Sleep(600);system("cls");continue;}else{do{system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t输错了!是否继续?(y/n):";cin>>selec;if(selec=='y'||selec=='Y')break;else if(selec=='N'||selec=='n')score(s4,s3); //调用战况子函数}while(1);}}while(1);}void YouXi::all(){int n=1;do{char input[100],eng[100]; //存放全键盘随时产生字符串与用户输入字符串system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请记住这个字符串:";for(int i=0;i<n;i++){eng[i]=33+rand()%(125-33); //随机产生全键盘字符cout<<eng[i];}eng[n]='\0';s4++; //记录总个数Sleep(1000);system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请输入刚才的字符串:";cin>>input;Sleep(1000);if(strcmp(eng,input)==0) //判断字符串是否相同{s3++;n++;system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t恭喜您!进入下一关!"<<endl;Sleep(600);system("cls");continue;}else{do{system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t输错了!是否继续?(y/n)";cin>>selec;if(selec=='Y'||selec=='y')break;else if(selec=='N'||selec=='n')score(s4,s3); //调用战况子函数}while(1);}}while(1);}void YouXi::score(int score1,int right){time2=::time(NULL); //记录用户结束时时间do{system("cls");cout<<"\n\n\n\n"<<endl;cout<<"\n\t\t\t***************************"<<endl;cout<<"\n\t\t\t* ******战况****** *"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t* 总数:"<<score1<<" *"<<endl;cout<<"\n\t\t\t* 正确:"<<right<<" *"<<endl;cout<<"\n\t\t\t* 错误:"<<score1-right<<" *"<<endl;printf("\n\t\t\t* 正确率:%3.0f *",(double)right/score1*100);// cout<<"\n\t\t\t* 正确率:"<<(double)right/score1*100<<" *"<<endl;cout<<"\n\n\t\t\t* 运行时间:"<<time2-time1<<" *"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t***************************"<<endl;cout<<"\n\t\t\t确定退出游戏?(y/n):";cin>>selec;if(selec=='y'||selec=='Y')end();else if(selec=='n'||selec=='N')main();}while(1);}void YouXi::end(){system("cls");cout<<"\n\n\n\n"<<endl;cout<<"\n\t\t\t********************"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t* 感谢您的使用! *"<<endl;cout<<"\n\t\t\t* Goodbye! *"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t********************\n\n\n\n\n\n\n\t\t\t"<<endl;exit(0);}。

C语言实现词法分析程序设计参考

C语言实现词法分析程序设计参考
ID = letter (letter | digit)*
NUM = digit digit*
(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。
2.2各种单词符号对应的种别码:
表2.1各种单词符号对应的种别码
单词符号
种别码
单词符号
种别码
token[m++]=ch;
break;
case '}': syn=6;
token[m++]=ch;
break;
case ';': syn=26;
token[m++]=ch;
break;
case '\"': syn=30;
token[m++]=ch;
break;
case '#': syn=0;
token[m++]=ch;
{ sum=0;
for(m=0;m<8;m++)token[m++]=NULL;
ch=prog[p++];
m=0;
while((ch==' ')||(ch=='\n'))ch=prog[p++];
if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A')))
{ while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9')))

C语言程序设计复习代码

C语言程序设计复习代码

C语言程序设计复习代码1.变量的定义,赋值,运算等; 已知一个圆的半径为2(CM),求圆的面积,要求圆周率用符号常量进行定义#include#define PI 3.14int main (){int r;float s;r=2;s=PI*r*r;printf("s=%.2f\n",s);return 0;}2.标准输入输出函数的应用,数据类型的转换;随机输入3个同学的成绩,求他们的平均成绩并输出(注意数据类型的转换)#includeint main(){int a,b,c,s;printf("Input a,b,c:");scanf("%d%d%d",&a,&b,&c);s=(a+b+c)/3;printf("平均值:%d\n",s);return 0;}3.条件运算符的使用;编程求3个数中的最大数#includeint main(){int a,b,c,max;printf("输入三个数: ");scanf("%d%d%d",&a,&b,&c);if(a>b)max=a;elsemax=b;if(c>max)max=c;printf("最大的数是:%d\n",max);return 0;}4. if语句双分支;从键盘输入一个年份,判断其是否为闰年,最后输出该年份及判断结果.(如果年份能被4整除并且不能被100整除,或该年份能被400整除则为闰年)#includevoid main(){int y,leap;printf("请输入一个年份: ");scanf("%d",&y);if((y%4==0)&&(y%100!=0)||(y%400==0) )leap=1;elseleap=0;if(leap==1)printf("%d年是一个闰年\n",y);elseprintf("%d年不是一个闰年\n",y);}5.if语句多分支;输入一百分制成绩,要求输出成绩等级。

C语言实现单词小助手功能完善版

C语言实现单词小助手功能完善版

C语⾔实现单词⼩助⼿功能完善版本⽂为⼤家分享了完善版的C语⾔单词⼩助⼿的具体实现代码,供⼤家参考,具体内容如下⼀.题⽬分析1、在原有代码基础上添加⽂档注释,函数注释及语句注释,使代码风格良好,易于阅读和修改。

2、完善功能,实现背单词时出错词的重复记忆。

3、在词库维护选项中添加中英⽂分别查询的功能4、完成输如数据的正确性验证,如:在菜单选择时输⼊不规范的错误提⽰、在添加单词时英⽂输⼊时输⼊汉语的异常排除等⼆.关键算法构造1.总菜单项⽬选择及maintain函数⼦选项的输⼊异常检查及提⽰。

2.添加单词三.程序实现#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],r[MAX_NUM]; //单词数组int num; //词典单词个数int rnum = 0; //增强记忆单词个数int select=1;//select 为是否退出系统的标记int d=0,c=0;//c为答错的次数,d为答对的次数//帮助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++;}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 readRemeberfile(){FILE *fp;int i=0;fp=fopen("Remeberdata.txt","r");if(!fp){printf("\n打开⽂件Remeberdata.txt失败!");}while(fscanf(fp,"%s %s ",r[i].en,r[i].ch)==2){i++;}rnum=i;if(0==i)printf("\n你还没有错题哦!");elseprintf("\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)//string类strcmp函数通过Ascll 码逐字符⽐较{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,a;f: while(flag){flag=0;printf("\n请输⼊单词的英⽂形式:");scanf("%s",s[i].en);//strncpy(c,s[i].en.c_str(),s[i].en.length());for(a=0;a<20;a++){if(s[i].en[a]>>8==0){{printf("输⼊不是纯英⽂,请重新输⼊");flag=1;goto f;//当不是纯英⽂输⼊时跳转}}//if(a!=19) continue;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--; //数量减少 1return;}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",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单词:英⽂中⽂ ");//格式对齐for(i=0;i<num;i++)//查询单词void search(){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继续查询请选1,返回上⼀级请选0:");scanf("%d",&choose);if(choose==0) return;}flag=0;}if(!flag) printf("\n没有这个单词!");}//查询单词(英)void ysearch(){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继续查询请选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;FILE *fp;while(choose){fp=fopen("Remeberdata.txt","a+");//打开增强记忆⽂件if(!fp){printf("\n打开⽂件Remeberdata.txt失败!");}i = rand()%num;//在已有词汇中随机选取printf("\n【%s】请输⼊英⽂单词:",s[i].ch);scanf("%s",b1);int flag = 0;for(z=0;strcmp(b1,s[i].en)!=0;z++){if(z<=3){fprintf(fp,"\n%s %s ",s[i].en,s[i].ch);//回答错误时写⼊增强记忆⽂件printf("\n");printf("\n输⼊错误!!请重新输⼊:");scanf("%s",b1);c=c+1;else{printf("⼩伙⼦,挣扎有⽤吗,快滚去看字典");flag=1;break;}}if(flag){return;}fclose(fp);printf("\n恭喜你,回答正确,加10分!\n\n");d=d+1;printf("\n继续测试请选1,返回上⼀级请选0:");scanf("%d",&choose);if(choose==0) return;}}//英译中测试void yztest(){char b1[20];int z,x=41;int choose=1;int i;//i = rand()%num;写⼊循环中FILE *fp;while(choose){i = rand()%num;fp=fopen("Remeberdata.txt","a+");if(!fp){printf("\n打开⽂件Remeberdata.txt失败!");//打开增强记忆⽂件}printf("【%s】请输⼊中⽂意思:",s[i].en);scanf("%s",b1);int flag = 0;for(z=0;strcmp(b1,s[i].ch)!=0;z++){if(z<=3){fp=fopen("Remeberdata.txt","a+");if(!fp){printf("\n打开⽂件Remeberdata.txt失败!");}fprintf(fp,"\n%s %s ",s[i].en,s[i].ch);//回答错误时写⼊增强记忆⽂件printf("\n");printf("输⼊错误!!请重新输⼊:");}else{printf("⼩伙⼦,别挣扎了,看词典吧 ");flag = 1;break;}scanf("%s",b1);c=c+1;rnum++;}if(flag){return ;}fclose(fp);printf("\n恭喜你,回答正确,加10分!\n\n");d=d+1;printf("\n继续测试请选1,返回上⼀级请选0:");scanf("%d",&choose);if(choose==0) return;}}//中英增强记忆void zyRetest(){char b1[20];int z;int m = 0;while(choose){i = rand()%rnum;printf("\n【%s】请输⼊英⽂单词:",r[i].ch);scanf("%s",b1);for(z=0;strcmp(b1,r[i].en)!=0;z=z){printf("\n输⼊错误!!请重新输⼊:");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;}}//英中增强记忆void yzRetest(){char b1[20];int z,x=41;int choose=1;int i;while(choose){i = rand()%num;printf("【%s】请输⼊中⽂意思:",r[i].en);scanf("%s",b1);for(z=0;strcmp(b1,r[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;}}//成绩列表void list(){printf("\n共计输⼊错误:%d次**每次扣10分**\n",c);printf("共计输⼊正确:%d次**每次加10分**\n",d);printf("你的总得分为:%d分\n\n",10*d-10*c);//计算最后得分}//词典维护int maintain(){int choose;//维护功能选择printf(" ------------------\n");printf(" 1.增加单词\n");printf(" 2.修改单词\n");printf(" 3.删除单词\n");printf(" 4.查询单词(中)\n");printf(" 5.查询单词(英)\n");printf(" 6.退出本菜单\n");printf(" ------------------\n");while(1){printf(" \n请输⼊维护功能编号:");//输⼊⾮法排错scanf("%d",&choose);int ret;ret=choose;while (ret != 1||ret !=2||ret!=3||ret!=4||ret!=5||ret!=6)//将输⼊限定在0-6的整数 { if(ret>6||ret<=0){while (getchar() != '\n');printf("error input,please again.\n");scanf("%d",&choose);elsebreak;}//直到输⼊的值为整数*/ret=choose;switch(ret){case 1:add();writefile();break;case 2:modify();writefile();break;case 3:del();writefile();break;case 4:search();break;case 5:ysearch();break;case 6: return 0;default: printf("\n请在1-6之间选择");}}}//⽤户界⾯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.增强记忆(中英) 7.增强记忆(英中) ||\n");printf(" || ||\n");printf(" || 8.退出 ||\n");printf(" || ||\n");printf(" __________________________________________________________\n"); printf("\n");printf(" 请选择您需要的操作序号(0-8)按回车确认:");scanf("%d",&item);printf("\n");int ret;ret=item;while (ret != 1||ret !=2||ret!=3||ret!=4||ret!=5||ret!=6||ret!=7||ret!=8)//将输⼊限定在0-6的整数 { if(ret>8||ret<0){while (getchar() != '\n');printf("error input,please again.\n");scanf("%d",&item);ret =item;}elsebreak;}//直到输⼊的值为整数*/ret=item;readfile();switch(ret){case 0:show();maintain();break;//词库维护case 1:show();break; //单词预览case 2:yztest(); break;//英中背刺测试case 4:list();break;//成绩查询case 5:help();break;//使⽤帮助case 6:readRemeberfile();zyRetest();break;//调⽤⽂件读⼊已插⼊词汇,进⾏重复中英记忆case 7:readRemeberfile();yzRetest();break;// 调⽤⽂件读⼊已插⼊词汇,进⾏重复英中记忆case 8:select =0;break;//退出⼦选项default:printf("请在0-8之间选择\n");}}int main(){while(select){menu();}system("pause");return 0;}四.经验归纳此次程序设计在原有基础程序的基础上,实现功能的完善,侧重于程序的结构化及精细化编写。

词法分析程序设计与实现

词法分析程序设计与实现

实验一词法分析程序设计与实现一、实验目的及内容调试并完成一个词法分析程序,加深对词法分析原理的理解。

二、实验原理(状态转换图)1、C语言子集(1)关键字:begin if then while do end所有关键字都是小写。

(2)运算符和界符::= + – * / < <= <> > >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义:ID=letter(letter| digit)*NUM=digit digit *(4)空格由空白、制表符和换行符组成。

空格一般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。

2、各种单词符号对应的种别码3、词法分析程序的功能输入:所给文法的源程序字符串。

输出:二元组(syn,token或sum)构成的序列。

其中:syn为单词种别码;token为存放的单词自身字符串;sum为整型常数。

二、软件平台及工具PC机以及VISUAL C++6.0软件。

三、实验方法、步骤(或:程序代码或操作过程)(1)程序代码:#include<stdio.h>#include<string.h>#include<iostream.h>char prog[80],token[8];char ch;int syn,p,m=0,n,row,sum=0;char *rwtab[6]={"begin","if","then","while","do","end"};void scaner(){for(n=0;n<8;n++) token[n]=NULL;ch=prog[p++];while(ch==' '){ch=prog[p];p++;}if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))m=0;while((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) {token[m++]=ch;ch=prog[p++];}token[m++]='\0';p--;syn=10;for(n=0;n<6;n++)if(strcmp(token,rwtab[n])==0){syn=n+1;break;}}else if((ch>='0'&&ch<='9')){{sum=0;while((ch>='0'&&ch<='9')){sum=sum*10+ch-'0';ch=prog[p++];}}p--;syn=11;if(sum>32767)syn=-1;}else switch(ch)case'<':m=0;token[m++]=ch;ch=prog[p++];if(ch=='>'){syn=21;token[m++]=ch;}else if(ch=='='){syn=22;token[m++]=ch;}else{syn=23;p--;}break;case'>':m=0;token[m++]=ch;ch=prog[p++];if(ch=='='){syn=24;token[m++]=ch;}else{syn=20;p--;}break;case':':m=0;token[m++]=ch;。

c语言课设实验报告-记事本程序(含源码)

c语言课设实验报告-记事本程序(含源码)

C语言课设实验报告[记事本程序]班级:学号:姓名:指导老师:C语言课设实验报告#define key_down 80#define key_up 72#define key_esc 1#define key_alt_f 33#define key_alt_x 45#define key_enter 28#define key_alt_e 18int get_key();void box(int startx,int stary,int high,int width);{int i,key,x,y,l;char *w=NULL,*d=NULL,*s=NULL;FILE *fp;char *menu[]={ "File ", "Edit ","Format","View","Help"};char *red[]={ "F", "E","F","V","H"};char *f[]={ "New ", "Open" , "Save", "Another","Quit alt_x"};char *e[]={"Search","Search next","Replace","Date"};char buf[16*10*2],buf1[16*2];textbackground(3);clrscr();window(1,1,80,1);textbackground(WHITE);textcolor(BLUE);clrscr();window(1,1,80,2);for(i=0, l=0; i <5;i++){x=wherex();y=wherey();textcolor(BLACK);cprintf( " %s ",menu[i]);l=strlen(menu[i]);gotoxy(x,y); x.y等的头文件*//*功能键的扫描码的定义*//* i为循环次数的序数,key为从键盘输入的功能键,x,y 为光标的坐标,l为菜单栏中菜单的字符长度*//*w是存放输入的内容(记录的事情)的指针,*s是存放输入的文件名的指针,*d是存放输入要定时的文件的文件名的指针*/ /*菜单栏中各个菜单的定义*//*菜单栏中菜单开头要标颜色的字母的定义*//* file 子菜单中项目的定义*//*edit子菜单的定义*/ /*缓冲区的定义*//*整个大窗口的背景颜色设置*//*创建菜单栏窗口*/ /*设置菜单栏窗口背景颜色为白色,字体颜色为蓝色*//*利用循环输出menu菜单栏,有多少个菜单循环多少次。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

综合性程序设计报告设计题目:背单词系统指导教师:班级:学号:设计者:成绩:设计时间:2010年5月27日目录1 题目描述 (3)2 变量、函数和结构体说明 (4)3 树形结构图 (5)4 用户操作说明 (6)5 代码 (8)6设计体会 (12)1 题目描述该系统是帮助学生背诵单词的软件,有词语预览功能;用户可以编辑自己的词库,即可增加或删除单词;系统可以进行测试,即给出中文,让学生输入其英文,每十个单词一组,测试结束能够显示成绩,即单词的正确个数;能够输入中文或英文进行单词的查询。

基本功能:词库的增加或删除;单词预览;显示中文用户输入英文进行测试;用户输入中文或英文进行单词的查询。

2变量、函数和结构体说明(1)关键变量说明int x 结构体数组中元素的数目 int n 测试时单词的正确个数int a 进行菜单选择int m 进行菜单选择(2)函数定义说明void foresee(); 单词预览及进行测试int intest(); 产生随机单词以进行测试void test2(int n); 测试单词的成绩void testchinese(); 测试单词void translation(); 单词查询void EtoC(); 输入单词,查询意思void CtoE(); 输入中文,查询单词void word_add(); 单词添加void word_delete(); 单词删除(3)结构体说明struct words 单词结构体定义{char eword[20]; 单词char cixing[10]; 词性char chinese[50]; 意思}struct words bank[SIZE] 定义数组结构体,存储单词3 树形结构图4 用户操作说明运行程序后进行选择选择1.单词预览是否要运行测试功能?Y\N输入Y:进行单词测试输入N:返回主菜单选择2.英汉互译1.英译汉2.汉译英3.返回上级菜单选择3.单词添加选择4.单词删除选择5.退出系统5 代码程序如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<time.h>#define SIZE 50 //定义词库单词数量void foresee(); //单词预览及进行测试int intest(); //产生随机单词以进行测试void test2(int n); //测试单词的成绩void testchinese(); //测试单词void translation(); //单词查询void EtoC(); //输入单词,查询意思void CtoE(); //输入中文,查询单词void word_add(); //单词添加void word_delete(); //单词删除struct words{char eword[20];char cixing[10];char chinese[50];}; //单词结构体定义int x;struct words bank[SIZE]={{"aspect","n.","方面,朝向,样子"},{"according","ad.","依照"},{"accustomde","a.","惯常的,习惯的"},{"basis","n.","基础,根据,原则"},{"confidence","n.","信心,信任"},{"dismiss","vt.","不再考虑,解散"},{"economy","n.","经济,节约,节省"},{"fatal","a.","致命的,命运的"},{"global","a.","全球的,总的"},{"helpful","a.","给予帮助的,有用的"},{"impose","vt.","把……加强,征"},{"largely","ad.","大部分,大量的"},{"mystery","n.","神秘,神秘的人或事"},{"nuclear","a.","核子的,核能的"},{"obtain","v.","获得,通用"},{"occasion","n.","场合,时刻"},{"particularly","ad.","尤其,特别"},{"patient","a.","忍耐的,有耐心的"},{"railway","n.","铁路"},{"reaction","n.","反应,反作用"},{"remote","a.","遥远的,偏僻的"},{"selection","n.","选择,挑选"},{"setting","n.","环境,背景"},{"shrink","v.","起皱,收缩"},{"translation","n.","翻译,译文"},{"troublesome","a.","令人烦恼的,麻烦的"},{"undergo","vt.","经历,经受"},{"unlike","prep.","不像"},{"volunteer","n.","志愿者"},{"virtue","n.","善,美德"},{"wideapread","a.","分布广泛的,普通的"},{"withdraw","v.","收回,撤回"},{"absence","n.","缺席,不在"},{"abstract","a.","抽象的,抽象派的"},{"bacteria","n.","细菌"},{"biology","n.","生物学,生态学"},{"characterize","vt.","成为…的特征"},{"debate","n.,vi.","争论,辩论"},{"display","vt.","陈列,展览"}};//词库void test2(int n) //测试单词的成绩{switch(n){case 0:case 1:case 2:case 3:printf("正确个数:%d \n还需努力!",n);getch();break;case 4:case 5:case 6:printf("正确个数:%d \n还不错哈!",n);getch();break;case 7:case 8:case 9:case 10:printf("正确个数:%d \nGreat!好样的!",n);getch();break;default:printf("系统故障!");getch();}}int intest() //产生随机单词以进行测试{srand( (unsigned)time( NULL ) );return (rand() %39+1);}void testchinese() //测试单词{int i,j=0,a;char word[30];for(i=0;i<10;i++){ a=intest();printf("%s\n请输入对应的单词:",bank[a].chinese);scanf("%s",word);if(strcmp(bank[a].eword,word)==0)j++;}test2(j);}void foresee() //单词预览及进行测试{int a;char ch;puts("单词词性意思");for(a=0;a<SIZE;a++)printf("%-16s %-8s %-20s\n",bank[a].eword,bank[a].cixing,bank[a].chinese);printf("是否要运行测试功能?N/Y\n");fflush(stdin);ch=getchar();if(ch=='y'||ch=='Y'){system("cls");testchinese();}}void EtoC() //输入单词,查询意思{char word[20];int i=0;puts("请输入您要查询的单词:");scanf("%s",word);while(strcmp(bank[i].eword,word)!=0&&i<SIZE)i++;if(i<SIZE)printf("\n该单词的中文意思为:%s",bank[i].chinese);else puts("抱歉,没有查到您要找的单词。

相关文档
最新文档