您的位置:

单词本管理系统c语言,个人通讯录管理系统c语言

本文目录一览:

用c语言编写背单词系统要求背单词和测验,浏览单词

#include stdio.h

#include stdlib.h

#include string.h

#include time.h

struct word

{

    char english[30];

    char chinese[100];

    int  count;         /* 记录背单词的正确次数 */

}dic[4000];

char getChoice()

{

    char str[10];

    gets(str);

    while (strlen(str)==0)

    {

        printf("输入为空,请重新输入:");

        gets(str);

    }

    return str[0];

}

int main()

{

    FILE *fp;

    char ch,line[100];

    int kong,i,count=0,j=0,end=0,k=0;

    int last_process = 0;

    if((fp=fopen("cet4.txt","r"))==NULL)

    {

        printf("cannot open the txt!!!\n");

        exit(0);

    }

    /* 读取所有单词 */

    while(fgets(line,sizeof(line),fp)!=0)

    {

        /* 每一行记录的格式【单词 中文 正确数】*/

        /* 读取单词 */

        j=0;

        for(i=0;iline[i]!=' ';i++)

        {

            dic[count].english[j]=line[i];

            j++;

        }

        dic[count].english[i]='\0';

        /* 特殊处理,如果这个字段是自定义的上次进度标记,则记下进度,假如进度标记是#last_process# */

        if(strcmp(dic[count].english,"#last_process#") == 0)

        {

            last_process = atoi(line+i+1);

            continue;

        }

        /* 读取中文 */

        j=0;

        for(i=kong+1;iline[i]!=' ';i++)

        {

            dic[count].chinese[j]=line[i];

            j++;

        }

        dic[count].chinese[j]='\0';

        /* 正确数 */

        dic[count].count = atoi(line+i+1);

        count++;

    }

    fclose(fp);

    /* 打印下读取的信息 */

    printf("单词数:%d\n上次背到第%d个单词\n", count, last_process);

    /*while*/ 

    /* 这里背单词策略,可以根据count来判断单词熟悉度,该值越大表示越熟悉 */

    /* 负数表示记错了的次数,错的越多,负的越大 */

    i = last_process;

    while(ch!=0)

    {

        // 可根据需要排序单词,排序依据是count字段大小

        puts("\n1.随机20个单词测试\n");

        puts("\n2.强化记忆\n");

        puts("\n前一个(P)后一个(N)收藏(C)结束浏览(M)");

        while(ch!=0)

        {

            ch=getChoice();

            if(ch=='P'||ch=='p')

            {

                i = (last_process+count-1)%count;

                printf("%s\n\n",dic[i].english);

                printf("%s\n\n",dic[i].chinese);

            }

            if(ch=='N'||ch=='n')

            {

                i = (last_process+1)%count;

                printf("%s\n\n",dic[i].english);

                printf("%s\n\n",dic[i].chinese);

            }

            else if(ch=='C'||ch=='c')

            {

                printf("已经加入单词本");

            }

            if(ch=='M'||'m')

            {

                break;

            }

        }

    }

    /* 程序退出 */

    last_process = i;

    if((fp=fopen("cet4.txt","w"))==NULL)

    {

        printf("cannot open the txt!!!\n");

        exit(0);

    }

    /* 把单词进入重新写入单词文件 */

    for (i=0; icount; i++)

    {

        fprintf(fp, "%s %s %d\n", dic[i].english, dic[i].chinese, dic[i].count);

    }

    fprintf(fp,"#last_process# %d", last_process);

    fclose(fp);

    

    return 0;

}

大致这样子,懒得写了~~~有需要可讨论

用C语言编写“背单词 程序”

#includestdio.h

#includestdlib.h

#includestring.h

struct word //定义一个word的结构体,里面的两个成员分别放英语单词和相应的汉语翻译

{

char chinese[20];

char english[20];

};

int point=0; //统计分数的

int count1=0; //测试的次数

void tianjia(struct word str[100],int count); //函数声明,往词库中添加词组

void shuchu(struct word str[100],int count); //函数声明,输出词库中所有的词组

void fanyi1(struct word str[100],int count); //函数声明,输入汉语,对英语翻译的考察

void fanyi2(struct word str[100],int count);

void chaxun(int point,int count1); //函数声明,输出成绩!

void main()

{

int count=0;

struct word str[100]; //定义一个结构体数组str

int n;

char ch,chioch;

while(1)

{

printf("*************背单词系统*********************\n");

printf("*************1,添加词库*********************\n");

printf("*************2,汉译英***********************\n");

printf("*************3,英译汉***********************\n");

printf("*************4,输出所有词库*****************\n");

printf("*************5,成绩查询*********************\n");

printf("*************0,退出*************************\n");

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

printf("请输入你要经行的操作:\n");

scanf("%d",n);

switch(n)

{

case 1:tianjia(str,count);break; //函数调用

case 2:fanyi1(str,count);break; //函数调用

case 3:fanyi2(str,count);break; //函数调用

case 4:shuchu(str,count);break;

case 5:chaxun(point,count1);break; //函数调用

case 0:{printf("你确认要退出吗?y/n!!\n");

scanf("%c%c",ch,chioch);

if(ch=='y'||ch=='Y') exit(0);

}

default :printf("你输入了错误的操作,无法执行!!!");

exit(0);

}

}

}

void tianjia(struct word str[100],int count) //往词库中添加词组

{

char ch;

do{

printf("录入词库!!!\n");

printf("请输入词库中的英语单词:\n");

scanf("%s",str[count].english);

printf("\n请输入相应的中文意思:\n");

scanf("%s",str[count].chinese);

count++;

printf("是否继续录入?y/n!!!\n");

scanf("%s",ch);

}while(ch=='y');

printf("%d\n\n",count);

}

void shuchu(struct word str[100],int count) // 输出词库中所有的词组

{

int i=0;

printf("输出词库中所有的单词!!!\n");

if(count=0) {printf("没有任何单词,无法输出!!!\n");return;}

else {

for(i=0;icount;i++){

printf("英文单词是:%s",str[i].english);

printf("\n相应的中文意思是:%s",str[i].chinese);

printf("\n\n");

}

printf("词库所有单词输入完毕!!!!\n");

}

}

void fanyi1(struct word str[100],int count) //输入汉语,对英语翻译的考察

{

int i;

char ch[20];

char bh[20];

printf("请输入英语单词:\n");

scanf("%s",ch);

printf("请输入翻译后的中文:\n");

scanf("%s",bh);

for(i=0;icount;i++)

{

if(strcmp(ch,str[i].english)==0)

{

if(strcmp(bh,str[i].chinese)==0)

{

point++;

count1++;

printf("恭喜你!!答对了!!!\n");

}

else

{

count1++;

printf("很遗憾,答错了!!!正确的翻译是:%s\n",str[i].chinese);

}

}

}

}

void fanyi2(struct word str[100],int count) //输入英语,对汉语翻译的考察

{

int i;

char ch[20];

char bh[20];

printf("请输入中文:\n");

scanf("%s",ch);

printf("请输入翻译后的英文:\n");

scanf("%s",bh);

for(i=0;icount;i++)

{

if(strcmp(ch,str[i].chinese)==0)

{

if(strcmp(bh,str[i].english)==0){

point++;

count1++;

printf("恭喜你!!答对了!!!\n");

}

else

{

count1++;

printf("很遗憾,答错了!!!正确的翻译是:%s\n",str[i].english);

}

}

}

}

void chaxun(int point,int count1)

{

printf("本次测试的成绩是:\n");

printf("总共:%d个\n",count1);

printf("正确:%d个\n",point);

// printf("正确率为:%d\%\n",point*100/count1);

}

C语言 单词检索程序

=====================================

问题补充:二楼的是死循环运行不了啊

=====================================

实在抱歉,之前疏忽了,现在已经改好了,再试一下吧:)

=====================================

问题补充:二楼的幸苦了,仔细看了一下你的,好像有点出入,不是自己输入文章,是打开已有文章。还得麻烦你稍稍修改下。谢谢哈

=====================================

根据你的要求,又改了一版,现在已经改好了,再试一下吧:)

给:

#includestdio.h

#includestring.h

#define MAX_size 1000

int flag=1,degree=0;

void Index(char str[],char word[],int position[])

{

int i,len_str,len_word,pos_str,pos_word,k=0,word_number=0;//word_number代表短文中单词的个数

len_word=strlen(word);

len_str=strlen(str);

for(i=0;ilen_str;i++)

{

while(str[i]==' '||str[i]==','||str[i]=='.')

i++;

word_number++; //单词个数加一

for(pos_str=i,pos_word=0;pos_strlen_str pos_wordlen_word;pos_str++,pos_word++)

{

if(str[pos_str]!=word[pos_word])

break;

}

if(pos_word==len_word (str[pos_str]=='\0'|| str[pos_str]==' '||str[pos_str]==','||str[pos_str]=='.')) //表明找到相等的单词

{

position[k++]=word_number;

degree++; //相等的次数加1

flag=0;

}

else

{

while(str[pos_str]!=' 'str[pos_str]==','str[pos_str]=='.' pos_strlen_str)

pos_str++;

}

i=pos_str;

}

}

void main()

{

char str[MAX_size],word[20],ch;

int position[100],i;

int k=0;

FILE *fp;

if((fp=fopen("a.txt","r"))!=NULL)

{

while(1)

{

ch=fgetc(fp);

if(ch==EOF) break;

str[k]=ch;

k++;

}

}

printf("请输入要检索的单词: \n");

gets(word);

Index(str,word,position);

if(flag)

printf("您输入的单词不在短文中。\n");

else

{

printf("您输入的单词在短文中,它共出现 %-d 次\n",degree);

printf("出现的位置为: \n");

for(i=0;idegree;i++)

printf("第%-2d个单词\n",position[i]);

}

fclose(fp);

}